"""Tests for sqs connector functionality.""" import base64 import json import boto3 from moto import mock_aws import pytest from project_manager.connector import sqs @mock_aws def test_put_message_to_sqs_no_such_queue(valid_sqs_payload): """Try to put message to nonexistent sqs queue.""" invalid_queue = 'nosuchqueue' result = sqs.put_message_to_sqs(invalid_queue, valid_sqs_payload) assert result.status == 400 @pytest.mark.parametrize( 'orchard_user_id, user_context_is_added', [ ('alw:324354', True), (None, False)] ) @mock_aws def test_put_message_to_sqs_success( valid_sqs_payload, orchard_user_id, user_context_is_added, test_request_context): """Test put message to sqs queue success.""" test_queue_name = 'testqueue' client = boto3.client('sqs', region_name='us-east-1') queue_url = client.create_queue(QueueName=test_queue_name).get('QueueUrl') result = sqs.put_message_to_sqs( test_queue_name, valid_sqs_payload, orchard_user_id=orchard_user_id, ) message = client.receive_message( QueueUrl=queue_url, MessageAttributeNames=['feature_flag_user_context'] )['Messages'][0] message_body = message['Body'] message_attributes = message.get('MessageAttributes', {}) result_msg = json.loads(base64.b64decode(message_body).decode('utf-8')) assert result_msg == valid_sqs_payload assert (( 'feature_flag_user_context' in message_attributes) is user_context_is_added) assert result.status == 200