api_client = <rest_framework.test.APIClient object at 0x7fa0048fd710>
origin_to_review = 'https://git.example.org/user/project'
keycloak_oidc = <swh.auth.pytest_plugin.KeycloackOpenIDConnectMock object at 0x7fa0048fd898>
mocker = <pytest_mock.plugin.MockerFixture object at 0x7fa004901160>
requests_mock = <requests_mock.mocker.Mocker object at 0x7fa004916f98>
def test_create_save_request_archives_with_ambassador_user(
api_client, origin_to_review, keycloak_oidc, mocker, requests_mock,
):
keycloak_oidc.realm_permissions = [SWH_AMBASSADOR_PERMISSION]
oidc_profile = keycloak_oidc.login()
api_client.credentials(HTTP_AUTHORIZATION=f"Bearer {oidc_profile['refresh_token']}")
originUrl = "https://somewhere.org/simple"
artifact_version = "1.2.3"
artifact_filename = f"tarball-{artifact_version}.tar.gz"
artifact_url = f"{originUrl}/{artifact_filename}"
content_length = "100"
last_modified = "Sun, 21 Aug 2011 16:26:32 GMT"
requests_mock.head(
artifact_url,
status_code=200,
headers={"content-length": content_length, "last-modified": last_modified,},
)
mock_scheduler = mocker.patch("swh.web.common.origin_save.scheduler")
mock_scheduler.get_task_runs.return_value = []
mock_scheduler.create_tasks.return_value = [
{
"id": 10,
"priority": "high",
"policy": "oneshot",
"status": "next_run_not_scheduled",
"type": "load-archive-files",
"arguments": {
"args": [],
"kwargs": {
"url": originUrl,
"artifacts": [
{
"url": artifact_url,
"version": artifact_version,
"time": last_modified,
"length": content_length,
}
],
},
},
},
]
url = reverse(
"api-1-save-origin",
url_args={"visit_type": "archives", "origin_url": originUrl,},
)
response = check_api_post_response(
api_client,
url,
status_code=200,
data={
"archives_data": [
> {"artifact_url": artifact_url, "artifact_version": artifact_version,}
]
},
)
.tox/py3/lib/python3.7/site-packages/swh/web/tests/api/views/test_origin_save.py:521:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/py3/lib/python3.7/site-packages/swh/web/tests/utils.py:158: in check_api_post_response
content_type=content_type,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response status_code=500, "application/json">, status_code = 200
content_type = '*/*'
def _assert_http_response(
response: HttpResponse, status_code: int, content_type: str
) -> HttpResponse:
if isinstance(response, Response):
drf_response = cast(Response, response)
error_context = (
drf_response.data.pop("traceback")
if isinstance(drf_response.data, dict) and "traceback" in drf_response.data
else drf_response.data
)
elif isinstance(response, StreamingHttpResponse):
error_context = getattr(response, "traceback", response.streaming_content)
else:
error_context = getattr(response, "traceback", response.content)
> assert response.status_code == status_code, error_context
E AssertionError: Traceback (most recent call last):
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/rest_framework/views.py", line 506, in dispatch
E response = handler(request, *args, **kwargs)
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/rest_framework/decorators.py", line 50, in handler
E return func(*args, **kwargs)
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/swh/web/api/apiurls.py", line 96, in api_view_f
E response = f(request, **kwargs)
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/swh/web/api/apidoc.py", line 348, in documented_view
E raise exc
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/swh/web/api/apidoc.py", line 345, in documented_view
E return {"data": f(request, **kwargs), "doc_data": doc_data}
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/swh/web/api/views/origin_save.py", line 93, in api_save_origin
E **data,
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/swh/web/common/origin_save.py", line 519, in create_save_origin_request
E extra_loader_arguments={"artifacts": task_kwargs["artifacts"]},
E File "<attrs generated init swh.scheduler.model.ListedOrigin>", line 14, in __init__
E __attr_validator_lister_id(self, __attr_lister_id, self.lister_id)
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/attr/_make.py", line 2975, in __call__
E v(inst, attr, value)
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/attrs_strict/_type_validation.py", line 105, in _validator
E _validate_elements(attribute, field, attribute.type)
E File "/var/lib/jenkins/workspace/DWAPPS/tests-on-diff/.tox/py3/lib/python3.7/site-packages/attrs_strict/_type_validation.py", line 131, in _validate_elements
E raise AttributeTypeError(value, attribute)
E attrs_strict._error.AttributeTypeError: lister_id must be <class 'uuid.UUID'> (got <MagicMock name='scheduler.get_or_create_lister().id' id='140325249213888'> that is a <class 'unittest.mock.MagicMock'>)
E
E assert 500 == 200
E +500
E -200
.tox/py3/lib/python3.7/site-packages/swh/web/tests/utils.py:34: AssertionError
TEST RESULT
TEST RESULT
- Run At
- Jun 11 2021, 4:14 PM