def test_new_rest_query_instance(self): r = RESTQuery(host="iceqa.service-now.com") assert r.instance == "iceqa" with pytest.raises(AssertionError) as e: r = RESTQuery(host="") assert "Unable to determine SNOW Instance. Verify that the SNOW_TEST_URL environment variable been set." in str( e)
def test_reset_query(self): r = RESTQuery() r.required_query_parameter_is("active", "EQUALS", "true") r.include_fields_in_response("name", "short_description") r._reset_query() # Called at the end of execute_query in practice assert r._query_is_empty() assert not r.desired_response_fields
def test_get_records_created_in_date_range_requires_query_table(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.get_records_created_in_date_range("1970-01-01 00:01:00", "2012-12-12 10:10:45") assert "Query table must already be specified in this test case, but is not." in str( e)
def test_cannot_add_query_parameter_first(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.add_query_parameter("AND", "sys_id", "EQUALS", "546565465e4f654efewfweefeewz") assert "No query parameters have been specified yet. Use the ``Required Query Parameter Is`` keyword first." in str( e)
def test_add_fields_to_desired_response_fields(self): r = RESTQuery() r.include_fields_in_response("number") r.include_fields_in_response("state", "location.name") assert len(r.desired_response_fields) == 3 assert ("number" in r.desired_response_fields and "state" in r.desired_response_fields and "location.name" in r.desired_response_fields)
def test_execute_query_no_table(self): r = RESTQuery() r.required_query_parameter_is(field="sys_id", condition_type="EQUALS", param_1="ehe876387364nkje") with pytest.raises(AssertionError) as e: r.execute_query() assert "Query table must already be specified in this test case, but is not." in str( e)
def test_two_params_too_many_unless_between(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.required_query_parameter_is("my_field", "CONTAINs", param_1="Lily", param_2="Callie") assert "Unexpected arguments for condition type CONTAINS: expected 0 or 1 argument, but got 2." in str( e)
def test_get_records_created_in_date_range_invalid_format(self): r = RESTQuery() r.query_table_is("ticket") with pytest.raises(AssertionError) as e: r.get_records_created_in_date_range("1970-01-01", "2012-12-12") assert "Input date arguments were not provided in the correct format. Verify that they are in the format YYYY-MM-DD hh:mm:ss." in str( e) with pytest.raises(AssertionError) as e: r.get_records_created_in_date_range("Michael Rules", "2012-12-12") assert "Input date arguments were not provided in the correct format. Verify that they are in the format YYYY-MM-DD hh:mm:ss." in str( e)
def test_default_new_rest_query_object(self): r = RESTQuery() assert r.instance == "iceuat", "SNOW_TEST_URL environment variable has not been set correctly, it should be configured to the iceuat instance." assert r.user is not None and r.user == os.environ.get( "SNOW_REST_USER" ), "SNOW_REST_USER environment variable has not been set." assert r.password is not None and r.password == os.environ.get( "SNOW_REST_PASS" ), "SNOW_REST_PASS environment variable has not been set." assert r.client assert r.query_table is None assert r.response is None
def test_is_empty_query_required_if_no_params(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.required_query_parameter_is("my_field", "equals") assert "Unexpected arguments for condition type EQUALS: expected 1 or 2 arguments, but got none." in str( e) r.required_query_parameter_is(field="sys_id", condition_type="EQUALS", param_1="ehe876387364nkje") with pytest.raises(AssertionError) as e: r.add_query_parameter("AND", "my_field", "greater than") assert "Unexpected arguments for condition type GREATER THAN: expected 1 or 2 arguments, but got none." in str( e)
def test_required_query_parameter_is_date_field(self): r = RESTQuery() r.query_table_is("incident") try: r.required_query_parameter_is("sys_created_on", "BETWEEN", "2016-05-02 09:45:01", "2016-05-09 09:45:01", is_date_field=True) r.add_query_parameter("OR", "sys_updated_on", "EQUALS", "2018-08-10 10:23:40") except AssertionError: pytest.fail( "Unexpected AssertionError raised when setting date field query parameter." )
def test_invalid_query_condition_type(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.required_query_parameter_is(field="sys_id", condition_type="INVALID", param_1="ehe876387364nkje") assert "Invalid condition type specified." in str(e) r.required_query_parameter_is(field="sys_id", condition_type="EQUALS", param_1="ehe876387364nkje") with pytest.raises(AssertionError) as e: r.add_query_parameter("INVALID", field="number", condition_type="EQUALS", param_1="TKT546259") assert "Invalid operand" in str(e)
def test_desired_response_fields_empty_by_default(self): r = RESTQuery() assert r.desired_response_fields == []
def test_one_parameter_not_enough_for_between_condition(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.required_query_parameter_is("my_field", "BeTWeeN", param_1=10) assert "Unexpected arguments for condition type BETWEEN: expected 0 or 2 arguments, but got 1." in str( e)
def test_get_record_by_sys_id_no_table(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.get_record_by_sys_id("ehe876387364nkje") assert "Query table must already be specified in this test case, but is not." in str( e)
def test_get_response_field_values_raise_if_response_empty(self): r = RESTQuery() with pytest.raises(QueryNotExecuted) as e: r.get_response_field_values("sys_created_on") assert "No query has been executed." in str(e)
def test_add_parameter_with_nq(self): r = RESTQuery() r.required_query_parameter_is("description", "CONTAINS", "michael") r.add_query_parameter("NQ", "status", "EQUALS", "Open") assert r.query._query[-2] == "^NQ"
def test_get_response_record_count_when_set(self): r = RESTQuery() r.record_count = 10 assert r.record_count == r.get_response_record_count()
def test_get_individual_response_field_no_response(self): r = RESTQuery() with pytest.raises(AssertionError) as e: r.get_individual_response_field("test_no_response") assert "Failed to retrieve data required for this test." in str(e)
def test_get_record_count_raises_when_not_set(self): r = RESTQuery() with pytest.raises(QueryNotExecuted) as e: r.get_response_record_count() assert "No query has been executed. Use the Execute Query keyword to retrieve records." in str( e)
def test_get_individual_response_field_wrong_field(self): response = { 'bill_to': '', 'init_request': '', 'short_description': 'PO 76069-14341 - 95032', 'total_cost': '0', 'due_by': '', 'description': '', 'requested_for': '', 'sys_updated_on': '2018-08-08 14:40:48', 'budget_number': '', 'u_received_cost': '0', 'u_business': '', 'number': 'PO0022269', 'sys_id': '0407cfa5dbb75b00fdd99257db9619e5', 'sys_updated_by': 'michael.rose', 'shipping': '', 'terms': '', 'sys_created_on': '2018-08-08 14:40:48', 'vendor': { 'link': 'https://iceuat.service-now.com/api/now/table/core_company/4407cfa5dbb75b00fdd99257db9619e3', 'value': '4407cfa5dbb75b00fdd99257db9619e3' }, 'sys_domain': { 'link': 'https://iceuat.service-now.com/api/now/table/sys_user_group/global', 'value': 'global' }, 'department': '', 'u_po_number': '76069-14341', 'sys_created_by': 'michael.rose', 'assigned_to': '', 'ordered': '', 'po_date': '7413-01-11 00:10:28', 'vendor_contract': '', 'contract': '', 'expected_delivery': '', 'sys_mod_count': '0', 'u_project': { 'link': 'https://iceuat.service-now.com/api/now/table/planned_task/02d1a2fa0f94fe809d486eb8b1050e86', 'value': '02d1a2fa0f94fe809d486eb8b1050e86' }, 'received': '', 'sys_tags': '', 'requested': '2018-08-08 04:00:00', 'requested_by': '', 'u_import_source': { 'link': 'https://iceuat.service-now.com/api/now/table/sys_import_set/e2f68fa5dbb75b00fdd99257db961950', 'value': 'e2f68fa5dbb75b00fdd99257db961950' }, 'ship_rate': '0', 'location': '', 'vendor_account': '', 'ship_to': '', 'status': 'ordered' } r = RESTQuery(query_table="proc_po", response=response) with pytest.raises(AssertionError) as e: r.get_individual_response_field("po_aint_got_no_field") assert "Field not found in response from proc_po: po_aint_got_no_field" in str( e)
def test_new_rest_query_instance_whitespace_in_host_is_trimmed(self): r = RESTQuery(host=" https://iceuat.service-now.com/ ") assert r.host == "https://iceuat.service-now.com/" assert r.instance == "iceuat"