def test_an_exchange_can_be_generated_automatically( self, mock_token, mock_uuid): # Given mock_uuid.return_value = 'id1' mock_token.side_effect = ['up1', 'dl1'] # When generated_exchange = Exchange.generate('sub1') # Then expected_exchange = Exchange('id1', 'sub1', 'up1', 'dl1', False, generated_exchange.creation_time) assert expected_exchange == generated_exchange assert expected_exchange.creation_time < datetime.now(timezone.utc)
def test_an_exchange_should_be_created_with_revoked_upload_set_to_false( self): # Given exchange = Exchange('id1', 'sub1', 'up1', 'dl1') # Then assert exchange.revoked_upload is False
def test_handle_should_return_a_200_status(self, revoke_an_exchange, mock_exchange_repo, revoke_event, event_sub): # Given mock_exchange_repo.get.return_value = Exchange.generate(event_sub) # When response = handle(event=revoke_event, context={}) # Then assert response['body'] == 'Exchange revoked' assert response['statusCode'] == 200
def test_handle_should_launch_a_revoke_command(self, revoke_an_exchange, mock_exchange_repo, revoke_event, event_sub): # Given mock_exchange_repo.get.return_value = Exchange.generate(event_sub) # When handle(event=revoke_event, context={}) # Then revoke_an_exchange.revoke_an_exchange_by_its_identifier.assert_called_once_with( revoke_event['headers']['exchange_identifier'])
def test_handle_should_return_403_if_jwt_sub_does_not_match_exchange_sub( self, revoke_an_exchange, mock_exchange_repo, revoke_event, an_exchange): # Given mock_exchange_repo.get.return_value = Exchange.generate( 'a_different_sub') # When response = handle(event=revoke_event, context={}) # Then assert response['body'] == 'Forbidden' assert response['statusCode'] == 403
def test_exchanges_should_be_compared_on_identifier_email_tokens_upload_revocation_and_creation_time( self): # Given exchange1 = Exchange(identifier='id1', sub='sub1', upload_token='up1', download_token='dl1', revoked_upload=False, creation_time=datetime.now()) exchange1bis = Exchange('id1', 'sub1', 'up1', 'dl1', False, exchange1.creation_time) exchange2 = Exchange('id2', 'sub2', 'up2', 'dl2', False, exchange1.creation_time) exchange3 = Exchange('id1', 'sub1', 'up1', 'dl1', True, exchange1.creation_time) exchange4 = Exchange('id1', 'sub1', 'up1', 'dl1', False, datetime(2000, 1, 1)) # Then assert exchange1 == exchange1bis assert exchange1 != exchange2 assert exchange1 != exchange3 assert exchange1 != exchange4
def _map_exchange_from_item(item): return Exchange( item['identifier'], item['sub'], item['upload_token'], item['download_token'], item['revoked_upload'], datetime.fromtimestamp(float(item['creation_time']), timezone.utc))
def _generate_exchange(days_before): exchange = Exchange.generate('a_test_sub') exchange.creation_time = datetime.now( timezone.utc) - timedelta(days=days_before) return exchange
from datetime import datetime, timezone, timedelta from typing import List import pytest from hallebarde.domain.exchange import Exchange exchange1 = Exchange('e68faee7-753e-49a6-a372-dc1cdc0dae03', 'sub', '-j1WjK_KnE8cQOVCYOb9WTM-qKLhyfp-DdVXSAjJthE', 'ccgxa2udCPYcw9T1mKAXud2hHgOX_14q__KVK7p910E') exchange2 = Exchange('224c74ed-eeac-47d2-b8fe-165a0e30815f', 'sub', '9WsE02XcMAekmjKHoj9Zq7_uVqc8dVz1Fq8czbZOq_Y', '2yOdhL1NM5lyX7Mt8pHVYfkE51UkoSuGUrv6z4OT-c4') exchange3 = Exchange('97de5cec-33e6-49ae-8ee8-8865ce357625', 'adifferentsub', 'tKcYqm-c0FujZrstLkcwLty_lSVAYxtfPHkRJmwmoxw', 'DEXeS6gfdhXOmj9KqmAGvqvFJUc8GCk_ZB4AU_f5Rag') exchange4 = Exchange('e68faee7-753e-49a6-a372-dc1cdc0dae03', 'email@none', '-j1WjK_KnE8cQOVCYOb9WTM-qKLhyfp-DdVXSAjJthE', 'ccgxa2udCPYcw9T1mKAXud2hHgOX_14q__KVK7p910E', revoked_upload=True) @pytest.fixture def an_exchange() -> Exchange: return exchange1 @pytest.fixture def an_exchange_with_different_sub() -> Exchange: return exchange3