def test_get_instance_build_logs_by_user(m, request_context, mock_user): assert not auth.current_user.is_anonymous, "Unexpected user in session" assert auth.current_registry is not None, "Unexpected registry in session" # pagination settings default_limit = 131072 parts = 4 part_size = round(default_limit / parts) logger.debug("Number of parts: %d", parts) logger.debug("Part size: %d", part_size) # set workflow/test_instance/test_build workflow = {"uuid": "1111-222"} build = MagicMock() build.id = "1" output_part = str("n" * part_size) build.get_output.return_value = output_part logger.debug("Part length: %r", len(output_part)) workflow = MagicMock() workflow.uuid = "1111-222" instance = MagicMock() instance.uuid = '12345' instance.suite = MagicMock() instance.suite.uuid = '1111' instance.get_test_build.return_value = build instance.test_suite.workflow = workflow m.get_test_instance.return_value = instance m.get_user_workflows.return_value = [] m.get_suite.return_value = instance.suite m.get_user_workflow_version = workflow # test get logs defaults offset and limit response = controllers.instances_builds_get_logs(instance['uuid'], build.id) m.get_test_instance.assert_called_once() m.get_suite.assert_called_once() m.get_user_workflow_version.assert_called_once() assert isinstance(response, str), "Unexpected response type" assert len( response ) == part_size, f"Unexpected log length: it should be limited to {part_size} bytes" # test pagination for n in range(0, parts): # test get logs defaults offset and limit response = controllers.instances_builds_get_logs( instance['uuid'], build.id, limit_bytes=part_size, offset_bytes=part_size * n) assert isinstance(response, str), "Unexpected response type" assert len( response ) == part_size, f"Unexpected log length: it should be limited to {part_size} bytes"
def test_get_instance_build_logs_by_user_invalid_limit(m, request_context, mock_user): assert not auth.current_user.is_anonymous, "Unexpected user in session" assert auth.current_registry is not None, "Unexpected registry in session" workflow = {"uuid": "1111-222"} build = MagicMock() build.id = "1" default_limit = 131072 build.output = str(os.urandom(default_limit)) instance = MagicMock() instance.uuid = '12345' instance.get_test_build.return_value = build instance.test_suite.workflow = workflow m.get_test_instance.return_value = instance m.get_user_workflows.return_value = [workflow] # test get logs defaults offset and limit response = controllers.instances_builds_get_logs(instance['uuid'], build.id, limit_bytes=-1000) logger.debug("Response: %r", response) assert response.status_code == 400, "Unexpected response" error = json.loads(response.data) logger.debug("Error object: %r", error) assert isinstance(error, dict), "Unexpected response type" assert messages.invalid_log_limit in error[ "detail"], "Unexpected error message"