From 05b557fcd53582dadaa68c987c3d03a2308dbb20 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Mon, 1 Oct 2018 23:48:27 +0100 Subject: [PATCH] Pull a test out --- .../_query_validators/auth_validators.py | 11 ++++-- tests/mock_vws/test_authorization_header.py | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/mock_vws/_query_validators/auth_validators.py b/src/mock_vws/_query_validators/auth_validators.py index 2f5935ee5..b2341e97f 100644 --- a/src/mock_vws/_query_validators/auth_validators.py +++ b/src/mock_vws/_query_validators/auth_validators.py @@ -195,8 +195,13 @@ def validate_authorization( return wrapped(*args, **kwargs) context.status_code = codes.UNAUTHORIZED - text = 'Malformed authorization header.' - content_type = 'text/plain; charset=ISO-8859-1' - context.headers['Content-Type'] = content_type context.headers['WWW-Authenticate'] = 'VWS' + transaction_id = uuid.uuid4().hex + result_code = ResultCodes.AUTHENTICATION_FAILURE.value + text = ( + '{"transaction_id":' + f'"{transaction_id}",' + f'"result_code":"{result_code}"' + '}' + ) return text diff --git a/tests/mock_vws/test_authorization_header.py b/tests/mock_vws/test_authorization_header.py index 8f35e9a2c..90aa082ce 100644 --- a/tests/mock_vws/test_authorization_header.py +++ b/tests/mock_vws/test_authorization_header.py @@ -245,3 +245,42 @@ def test_bad_access_key_query( '}' ) assert response.text == expected_text + + def test_bad_secret_key_query( + self, + vuforia_database: VuforiaDatabase, + high_quality_image: io.BytesIO, + ) -> None: + """ + If the client secret key given is incorrect, an + ``UNAUTHORIZED`` response is returned. + """ + vuforia_database.client_secret_key = b'example' + image_content = high_quality_image.getvalue() + body = {'image': ('image.jpeg', image_content, 'image/jpeg')} + + response = query( + vuforia_database=vuforia_database, + body=body, + ) + + assert_vwq_failure( + response=response, + status_code=codes.UNAUTHORIZED, + content_type='application/json', + ) + + assert response.json().keys() == {'transaction_id', 'result_code'} + assert_valid_transaction_id(response=response) + assert_valid_date_header(response=response) + result_code = response.json()['result_code'] + transaction_id = response.json()['transaction_id'] + assert result_code == ResultCodes.AUTHENTICATION_FAILURE.value + # The separators are inconsistent and we test this. + expected_text = ( + '{"transaction_id":' + f'"{transaction_id}",' + f'"result_code":"{result_code}"' + '}' + ) + assert response.text == expected_text