def test_qm_usergroup_iterate_partial(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [MockResponse(200, [{"name": "n1", "type": "user-group"}, {"name": "n2", "type": "user-group"}], {"X-Total-Count": "6", "X-Page-Count": "3", "X-Current-Page": "1", "X-Page-Size:": "2"}), MockResponse(200, [{"name": "n1", "type": "user-group"}, {"name": "n2", "type": "user-group"}], {"X-Total-Count": "6", "X-Page-Count": "3", "X-Current-Page": "2", "X-Page-Size:": "2"}), MockResponse(400, text="400 bad request")] conn = Connection(**mock_connection_params) qm = QueryMultiple(conn, "user-group") for obj in qm: if obj["name"] == "n2": break for obj in qm: if obj["name"] == "n2": break pytest.raises(RequestError, qm.all_results)
def test_qm_user_reload(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [MockResponse(200, {"result": "success", "lastPage": False, "users": [{"name": "n1", "type": "user"}, {"name": "n2", "type": "user"}]}), MockResponse(200, {"result": "success", "lastPage": True, "users": [{"name": "n3", "type": "user"}, {"name": "n4", "type": "user"}]}), MockResponse(200, {"result": "success", "lastPage": False, "users": [{"name": "n5", "type": "user"}, {"name": "n6", "type": "user"}]}), MockResponse(200, {"result": "success", "lastPage": True, "users": [{"name": "n7", "type": "user"}, {"name": "n8", "type": "user"}]})] conn = Connection(**mock_connection_params) qm = QueryMultiple(conn, "user") assert list(qm) == [{"name": "n1", "type": "user"}, {"name": "n2", "type": "user"}, {"name": "n3", "type": "user"}, {"name": "n4", "type": "user"}] qm.reload() assert qm.all_results() == [{"name": "n5", "type": "user"}, {"name": "n6", "type": "user"}, {"name": "n7", "type": "user"}, {"name": "n8", "type": "user"}]
def test_qm_usergroup_iterate_complete(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [MockResponse(200, [{"name": "n1", "type": "user-group"}, {"name": "n2", "type": "user-group"}], {"X-Total-Count": "4", "X-Page-Count": "2", "X-Current-Page": "1", "X-Page-Size:": "2"}), MockResponse(200, [{"name": "n3", "type": "user-group"}, {"name": "n4", "type": "user-group"}], {"X-Total-Count": "4", "X-Page-Count": "2", "X-Current-Page": "2", "X-Page-Size:": "2"})] conn = Connection(**mock_connection_params) qm = QueryMultiple(conn, "user-group") for obj in qm: if obj["name"] == "n3": break assert qm.all_results() == [{"name": "n1", "type": "user-group"}, {"name": "n2", "type": "user-group"}, {"name": "n3", "type": "user-group"}, {"name": "n4", "type": "user-group"}]
def test_execute_multiple_queued_throttle_actions_error(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.side_effect = [ MockResponse(500), MockResponse(200, {"result": "success"}), MockResponse(200, {"result": "success"}) ] conn = Connection(throttle_actions=2, **mock_connection_params) action0 = Action(top="top0").append(a="a0") action1 = Action(top="top1").append(a="a1") action2 = Action(top="top2").append(a="a2") action3 = Action(top="top3").append(a="a3") action4 = Action(top="top4").append(a="a4") action5 = Action(top="top5").append(a="a5") pytest.raises(BatchError, conn.execute_multiple, [action0, action1, action2, action3, action4, action5], immediate=False) local_status, _ = conn.status(remote=False) assert local_status == { "multiple-query-count": 0, "single-query-count": 0, "actions-sent": 6, "actions-completed": 4, "actions-queued": 0 }
def test_qs_reload(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [ MockResponse( 200, { "result": "success", "user": { "user": "******", "type": "adobeID" } }), MockResponse( 200, { "result": "success", "user": { "user": "******", "type": "adobeID" } }) ] conn = Connection(**mock_connection_params) qs = QuerySingle(conn, "user", ["*****@*****.**"]) assert qs.result() == {"user": "******", "type": "adobeID"} # second verse, same as the first assert qs.result() == {"user": "******", "type": "adobeID"} qs.reload() assert qs.result() == {"user": "******", "type": "adobeID"}
def test_execute_multiple_single_queued_throttle_actions(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.side_effect = [ MockResponse(200, {"result": "success"}), MockResponse( 200, { "result": "partial", "completed": 1, "notCompleted": 1, "errors": [{ "index": 0, "step": 0, "errorCode": "test" }] }) ] conn = Connection(throttle_actions=2, **mock_connection_params) action0 = Action(top="top0").append(a="a0") action1 = Action(top="top1").append(a="a1") action2 = Action(top="top2").append(a="a2") action3 = Action(top="top3").append(a="a3") assert conn.execute_multiple([action0, action1, action2], immediate=False) == (1, 2, 2) local_status, server_status = conn.status(remote=False) assert server_status == { "status": "Never contacted", "endpoint": conn.endpoint } assert local_status == { "multiple-query-count": 0, "single-query-count": 0, "actions-sent": 2, "actions-completed": 2, "actions-queued": 1 } assert conn.execute_single(action3) == (0, 2, 1) local_status, _ = conn.status(remote=False) assert local_status == { "multiple-query-count": 0, "single-query-count": 0, "actions-sent": 4, "actions-completed": 3, "actions-queued": 0 } assert action0.execution_errors() == [] assert action1.execution_errors() == [] assert action2.execution_errors() == [{ "command": { "a": "a2" }, "target": { "top": "top2" }, "errorCode": "test" }] assert action3.execution_errors() == []
def test_qm_user_iterate_complete(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [ MockResponse( 200, { "result": "success", "lastPage": False, "users": [{ "name": "n1", "type": "user" }, { "name": "n2", "type": "user" }] }), MockResponse( 200, { "result": "success", "lastPage": True, "users": [{ "name": "n3", "type": "user" }, { "name": "n4", "type": "user" }] }) ] conn = Connection(**mock_connection_params) qm = QueryMultiple(conn, "user") for obj in qm: if obj["name"] == "n3": break assert qm.all_results() == [{ "name": "n1", "type": "user" }, { "name": "n2", "type": "user" }, { "name": "n3", "type": "user" }, { "name": "n4", "type": "user" }]
def test_query_multiple_user_paged(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [ MockResponse( 200, { "result": "success", "lastPage": False, "users": [{ "name": "n1", "type": "user" }, { "name": "n2", "type": "user" }] }), MockResponse( 200, { "result": "success", "lastPage": True, "users": [{ "name": "n3", "type": "user" }, { "name": "n4", "type": "user" }] }) ] conn = Connection(**mock_connection_params) assert conn.query_multiple("user", 0) == ([{ "name": "n1", "type": "user" }, { "name": "n2", "type": "user" }], False, 0, 0, 1, 0) assert conn.query_multiple("user", 1) == ([{ "name": "n3", "type": "user" }, { "name": "n4", "type": "user" }], True, 0, 0, 1, 0)
def test_get_jmx_unauthorized(self): requests.Session.get = MagicMock(return_value=MockResponse( _text='data', status_code=401, )) with self.assertRaises(UnauthorizedException): client.get_jmx(StreamSetsMock(), 'query_params_1')
def test_query_multiple_user_success(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse( 200, { "result": "success", "lastPage": False, "users": [{ "name": "n1", "type": "user" }, { "name": "n2", "type": "user" }] }) conn = Connection(**mock_connection_params) assert conn.query_multiple("user") == ([{ "name": "n1", "type": "user" }, { "name": "n2", "type": "user" }], False, 0, 0, 1, 0)
def test_remote_status_failure(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(404, text="404 Not Found") conn = Connection(**mock_connection_params) _, remote_status = conn.status(remote=True) assert remote_status["status"].startswith("Unexpected")
def test_post_request_fail(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse(400, text="400 test request failure") conn = Connection(**mock_connection_params) pytest.raises(RequestError, conn.make_call, "", "[3, 5]")
def test_get_server_fail(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(500, text="500 test server failure") conn = Connection(**mock_connection_params) pytest.raises(ServerError, conn.make_call, "")
def test_post_retry_header_0(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse(503, headers={"Retry-After": "0"}) conn = Connection(**mock_connection_params) pytest.raises(UnavailableError, conn.make_call, "", "[3, 5]")
def test_get_retry_header_time_2(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse( 502, headers={"Retry-After": formatdate(time.time() + 2.5)}) conn = Connection(**mock_connection_params) pytest.raises(UnavailableError, conn.make_call, "")
def test_qs_not_found(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(404, text="404 Object not found") conn = Connection(**mock_connection_params) qs = QuerySingle(conn, "user", ["*****@*****.**"]) assert qs.result() == {}
def test_get_jmx_success(self): requests.Session.get = MagicMock(return_value=MockResponse( _text='data', status_code=200 )) result = client.get_jmx(StreamSetsMock(), 'query_params_1') self.assertEqual(result, {'json': 'data'})
def test_execute_single_success_immediate(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse(200, {"result": "success"}) conn = Connection(**mock_connection_params) action = Action(top="top").append(a="a") assert conn.execute_single(action, immediate=True) == (0, 1, 1)
def test_execute_single_error_immediate_throttled(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse( 200, { "result": "partial", "completed": 1, "notCompleted": 1, "errors": [{ "index": 1, "step": 0, "errorCode": "test" }] }) conn = Connection(throttle_commands=2, **mock_connection_params) action = Action(top="top0").append(a="a0").append(a="a1").append( a="a2") assert conn.execute_single(action, immediate=True) == (0, 2, 1) assert action.execution_errors() == [{ "command": { "a": "a2" }, "target": { "top": "top0" }, "errorCode": "test" }]
def test_execute_multiple_dofirst_error(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse( 200, { "result": "error", "completed": 1, "notCompleted": 1, "errors": [{ "index": 1, "step": 1, "errorCode": "test.error", "message": "Test error message" }] }) conn = Connection(**mock_connection_params) action0 = Action(top="top0").append(a="a0") action1 = Action(top="top1").append(a="a1").insert(b="b") assert conn.execute_multiple([action0, action1]) == (0, 2, 1) assert action0.execution_errors() == [] assert action1.execution_errors() == [{ "command": { "a": "a1" }, "target": { "top": "top1" }, "errorCode": "test.error", "message": "Test error message" }]
def test_execute_single_dofirst_error_immediate(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse( 200, { "result": "error", "errors": [{ "index": 0, "step": 0, "errorCode": "test.error", "message": "Test error message" }] }) conn = Connection(**mock_connection_params) action = Action(top="top").insert(a="a") assert conn.execute_single(action, immediate=True) == (0, 1, 0) assert action.execution_errors() == [{ "command": { "a": "a" }, "target": { "top": "top" }, "errorCode": "test.error", "message": "Test error message" }]
def test_query_multiple_user_empty(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(200, {"result": "success", "lastPage": True, "users": []}) conn = Connection(**mock_connection_params) assert conn.query_multiple("user") == ([], True)
def test_qs_success(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(200, {"result": "success", "user": {"user": "******", "type": "adobeID"}}) conn = Connection(**mock_connection_params) qs = QuerySingle(conn, "user", ["*****@*****.**"]) assert qs.result() == {"user": "******", "type": "adobeID"}
def test_execute_single_success_queued(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse(200, {"result": "success"}) conn = Connection(throttle_actions=2, **mock_connection_params) action = Action(top="top").append(a="a") assert conn.execute_single(action) == (1, 0, 0) assert conn.execute_single(action) == (0, 2, 2)
def test_geocoding_by_place_name(self, client, mock_response): url = '/geocoding_by_place_name' response = client.get(url) assert response.status_code == 400 # we send the query with no parameters response = client.get(url+'?place_name=testing') assert response.status_code == 200 assert json.loads(response.data) == MockResponse.json()
def test_mock_proxy_get(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(200, body=["test", "body"]) with mock.patch("umapi_client.connection.os.getenv") as mock_getenv: mock_getenv.return_value = "error" pytest.raises(ArgumentError, Connection, tuple(), mock_connection_params)
def test_execute_multiple_dofirst_success(): with mock.patch( "umapi_client.connection.requests.Session.post") as mock_post: mock_post.return_value = MockResponse(200, {"result": "success"}) conn = Connection(**mock_connection_params) action0 = Action(top="top0").append(a="a0").insert(b="b") action1 = Action(top="top1").append(a="a1") assert conn.execute_multiple([action0, action1]) == (0, 2, 2)
def test_mock_proxy_get(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(200, body=["test", "body"]) with mock.patch("umapi_client.connection.os.getenv") as mock_getenv: mock_getenv.return_value = "proxy" conn = Connection(**mock_connection_params) conn.make_call("").json() mock_get.assert_called_with('http://test/', auth='N/A', timeout=120.0)
def test_query_multiple_usergroup_paged(): with mock.patch( "umapi_client.connection.requests.Session.get") as mock_get: mock_get.side_effect = [ MockResponse( 200, [{ "name": "n1", "type": "user-group" }, { "name": "n2", "type": "user-group" }], { "X-Total-Count": "4", "X-Page-Count": "2", "X-Current-Page": "1", "X-Page-Size": "2" }), MockResponse( 200, [{ "name": "n3", "type": "user-group" }, { "name": "n4", "type": "user-group" }], { "X-Total-Count": "4", "X-Page-Count": "2", "X-Current-Page": "2", "X-Page-Size": "2" }) ] conn = Connection(**mock_connection_params) assert conn.query_multiple("user-group", 0) == ([{ "name": "n1", "type": "user-group" }, { "name": "n2", "type": "user-group" }], False, 4, 2, 1, 2) assert conn.query_multiple("user-group", 1) == ([{ "name": "n3", "type": "user-group" }, { "name": "n4", "type": "user-group" }], True, 4, 2, 2, 2)
def test_mock_playback_get(): with mock.patch("umapi_client.connection.requests.Session.get") as mock_get: mock_get.return_value = MockResponse(200, body=["test", "body"]) with mock.patch("umapi_client.connection.os.getenv") as mock_getenv: mock_getenv.return_value = "playback" conn = Connection(**mock_connection_params) conn.make_call("").json() assert mock_get.call_args[0][0] == 'http://test/' assert isinstance(mock_get.call_args[1]['auth'], Auth)