diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f85c56e..fea92b0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -46,7 +46,8 @@ jobs: run: pytest --cov-report=xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v3.1.4 - with: + with: + token: b1c643cb-040e-4c87-9f7d-5129d97daac0 file: ./coverage.xml flags: unittests name: codecov-umbrella diff --git a/examples/resources/base.py b/examples/resources/base.py index ad8f541..0709f28 100644 --- a/examples/resources/base.py +++ b/examples/resources/base.py @@ -13,12 +13,12 @@ def health_auth_check() -> Dict: return dict(greeting="I'm authenticated and healthy !!!") -@app.get('/raise_cuenca_errors') +@app.get('/raise_cuenca_errors', response_model=None) def raise_cuenca_errors() -> NoReturn: raise WrongCredsError('you are not lucky enough!') -@app.get('/raise_fast_agave_errors') +@app.get('/raise_fast_agave_errors', response_model=None) def raise_fast_agave_errors() -> NoReturn: raise UnauthorizedError('nice try!') diff --git a/examples/resources/users.py b/examples/resources/users.py index 53e4f91..8bff39e 100644 --- a/examples/resources/users.py +++ b/examples/resources/users.py @@ -18,6 +18,7 @@ async def update( user: UserModel, request: UserUpdateRequest, api_request: Request ) -> Response: user.name = request.name - user.ip = api_request.client.host + if api_request.client is not None: + user.ip = api_request.client.host await user.async_save() return Response(content=user.to_dict(), status_code=200) diff --git a/fast_agave/version.py b/fast_agave/version.py index 092052c..a842d05 100644 --- a/fast_agave/version.py +++ b/fast_agave/version.py @@ -1 +1 @@ -__version__ = '0.14.1' +__version__ = '0.15.0' diff --git a/requirements-test.txt b/requirements-test.txt index 7918af1..f4aa4ae 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -3,12 +3,12 @@ flake8==4.0.* isort==5.10.* mock==4.0.3 mongomock==4.1.* -moto[server]==2.2.* +moto[server,sqs]==5.0.9 mypy==1.0.1 pytest==7.4.* pytest-cov==4.1.* pytest-vcr==1.0.* pytest-asyncio==0.15.* requests==2.28.* -boto3==1.20.24 -botocore==1.23.24 +boto3==1.34.106 +botocore==1.34.106 diff --git a/requirements.txt b/requirements.txt index bbf0412..fce7db7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ -aiobotocore==2.1.0 -cuenca-validations==0.11.19 -fastapi==0.68.2 -mongoengine-plus==0.0.3 -python-multipart==0.0.5 +aiobotocore==2.13.0 +cuenca-validations==0.11.29 +fastapi==0.111.0 +mongoengine-plus==0.2.2 +python-multipart==0.0.9 starlette-context==0.3.3 types-aiobotocore-sqs==2.1.0.post1 \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index ebb612c..387c5c7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -185,7 +185,13 @@ def aws_credentials() -> None: def aws_endpoint_urls( aws_credentials, ) -> Generator[Dict[str, str], None, None]: - sqs = subprocess.Popen(['moto_server', 'sqs', '-p', '4000']) + sqs = subprocess.Popen( + [ + 'moto_server', + '-p', + '4000', + ] + ) endpoints = dict( sqs='http://127.0.0.1:4000/', @@ -222,7 +228,11 @@ async def sqs_client(): session = aiobotocore.session.get_session() async with session.create_client('sqs', 'us-east-1') as sqs: await sqs.create_queue( - QueueName='core.fifo', Attributes={'FifoQueue': 'true'} + QueueName='core.fifo', + Attributes={ + 'FifoQueue': 'true', + 'ContentBasedDeduplication': 'true', + }, ) resp = await sqs.get_queue_url(QueueName='core.fifo') sqs.send_message = partial(sqs.send_message, QueueUrl=resp['QueueUrl']) diff --git a/tests/tasks/test_sqs_tasks.py b/tests/tasks/test_sqs_tasks.py index a6a780c..aae8d4d 100644 --- a/tests/tasks/test_sqs_tasks.py +++ b/tests/tasks/test_sqs_tasks.py @@ -288,7 +288,7 @@ async def my_task(data: Dict) -> None: max_retries=3, )(my_task)() - expected_calls = [call(test_message)] * 4 + expected_calls = [call(test_message)] * 3 async_mock_function.assert_has_calls(expected_calls) assert async_mock_function.call_count == len(expected_calls) @@ -380,9 +380,9 @@ async def countdown_tester(data: Dict): async def test_concurrency_controller( sqs_client, ) -> None: - message_id = str(uuid.uuid4()) - test_message = dict(id=message_id, name='fast-agave') for i in range(5): + message_id = str(uuid.uuid4()) + test_message = dict(id=message_id, name='fast-agave') await sqs_client.send_message( MessageBody=json.dumps(test_message), MessageGroupId=message_id, @@ -405,4 +405,4 @@ async def task_counter(data: Dict) -> None: )(task_counter)() running_tasks = [call[0] for call, _ in async_mock_function.call_args_list] - assert max(running_tasks) == 2 + assert max(running_tasks) == 3