def setup_ses(self): """Method to create the tables""" if self.mock: mock_ses(self._setup_ses()) else: # For now just always mock SES during testing. mock_ses(self._setup_ses())
def setUp(self): celeryapp.conf.update(CELERY_ALWAYS_EAGER=True) country = Country.objects.create( iso='US', iso3='USA', iso_numeric='1', name='USA' ) market = Market.objects.create( name='USA', ) Sector.objects.create( name='tech', display_name='tech', ) market.countries.add(country) market.save() self.mock_ses = mock_ses() self.mock_s3 = mock_s3() self.mock_s3.start() self.mock_ses.start() self.patcher = patch( 'investment_report.utils.investment_report_pdf_generator' ) self.mock_generator = self.patcher.start() self.mock_generator.return_value = BytesIO(DATA) self.conn = boto3.resource( 's3', region_name=settings.AWS_DEFAULT_REGION )
def start_mocking(self): """Method to start mocking""" self.mock = True self.mock_dynamodb = mock_dynamodb2() self.mock_dynamodb.start() self.mock_ses = mock_ses() self.mock_ses.start()
def test_submit_unsafe_item(monkeypatch): # Set environment variable monkeypatch.setenv("STAGE", "dev") monkeypatch.setenv("MOTO_ACCOUNT_ID", '891514678401') from moto import mock_ses, mock_stepfunctions with mock_stepfunctions(), mock_ses(): # Initialize mock clients sf_client = boto3.client('stepfunctions', region_name="eu-central-1") sf_client.create_state_machine( name='SearchFactChecks_new-dev', definition='{}', roleArn= 'arn:aws:iam::891514678401:role/detektivkollektiv-stepfunct-StateMachineLambdaRole' ) ses_client = boto3.client("ses", region_name="eu-central-1") ses_client.verify_email_identity(EmailAddress="*****@*****.**") with Session() as session: session = setup_scenarios.create_questions(session) # Submit first item response = submit_item(create_event2(), None) assert response['statusCode'] == 403 assert response['headers']['new-item-created'] == "True" # Check database entries assert session.query(Item).count() == 1 assert session.query(Submission).count() == 1 submission = session.query(Submission).first() assert submission.status == 'Unsafe' assert submission.item.urls[0].url.unsafe is None assert submission.item.urls[1].url.unsafe == "GOOGLE:MALWARE"
def ses(aws_credentials): """Mocked SES Fixture.""" from consoleme.config import config with mock_ses(): client = boto3.client( "ses", region_name="us-east-1", **config.get("boto3.client_kwargs", {}) ) client.verify_email_address(EmailAddress="*****@*****.**") yield client
def test_submit_item(event1, event2, monkeypatch): # Set environment variable monkeypatch.setenv("STAGE", "dev") monkeypatch.setenv("MOTO_ACCOUNT_ID", '891514678401') from moto import mock_ses, mock_stepfunctions with mock_stepfunctions(), mock_ses(): # Initialize mock clients sf_client = boto3.client('stepfunctions', region_name="eu-central-1") sf_client.create_state_machine( name='SearchFactChecks_new-dev', definition='{}', roleArn='arn:aws:iam::891514678401:role/detektivkollektiv-stepfunct-StateMachineLambdaRole' ) ses_client = boto3.client("ses", region_name="eu-central-1") ses_client.verify_email_identity(EmailAddress="*****@*****.**") with Session() as session: session = setup_scenarios.create_questions(session) # Submit first item response = submit_item(event1, None) assert response['statusCode'] == 201 assert response['headers']['new-item-created'] == "True" # Check database entries assert session.query(Item).count() == 1 assert session.query(Submission).count() == 1 assert session.query(Submission.ip_address).first()[0] == '1.2.3.4' # Submit second item with same content as first one submit_item(event2, None) # Check database entries assert session.query(Item).count() == 1 # items didn't increase assert session.query(Submission).count() == 2 # submissions increased first_item_id = session.query(Item.id).first()[0] assert session.query(Item.submissions).\ filter(Item.id == first_item_id).count() == 2 # number of submissions to first item increased assert session.query(Submission.ip_address).all()[1][0] == '2.3.4.5' # ip address of second submission assigned to first item # Check if confirmation mails have been sent send_quota = ses_client.get_send_quota() sent_count = int(send_quota["SentLast24Hours"]) assert sent_count == 2
def setUp(self): with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=DeprecationWarning) current_account_id = "111122223333" region = "us-east-1" service = "ses" self.mock = mock_ses() self.mock.start() self.client = get_boto3_client(profile=None, service=service, region=region) response = self.client.verify_email_identity( EmailAddress=MY_RESOURCE) print(response) self.identities = SesIdentityPolicies( client=self.client, current_account_id=current_account_id, region=region)
def test_dates(event1): from moto import mock_ses, mock_stepfunctions with mock_stepfunctions(), mock_ses(): # Initialize mock clients sf_client = boto3.client('stepfunctions', region_name="eu-central-1") sf_client.create_state_machine( name='SearchFactChecks_new-dev', definition='{}', roleArn='arn:aws:iam::891514678401:role/detektivkollektiv-stepfunct-StateMachineLambdaRole' ) ses_client = boto3.client("ses", region_name="eu-central-1") ses_client.verify_email_identity(EmailAddress="*****@*****.**") with Session() as session: submissions = session.query(Submission).all() response = submit_item(event1, None) assert response['statusCode'] == 201 assert 1 == 1
def ses(aws_credentials): """Mocked SES Fixture.""" with mock_ses(): client = boto3.client("ses", region_name="us-east-1") client.verify_email_address(EmailAddress="*****@*****.**") yield client
def setUp(self): # ensure we definitely don't have any real credentials set for AWS os.environ["AWS_ACCESS_KEY_ID"] = "testing" os.environ["AWS_SECRET_ACCESS_KEY"] = "testing" os.environ["AWS_SECURITY_TOKEN"] = "testing" os.environ["AWS_SESSION_TOKEN"] = "testing" # don't send errors to senty under test os.environ["SENTRY_DSN"] = "" # set fake credentials for services # we're going to have mocked interactions with self.repo = "chris48s/does-not-exist" self.upload_bucket = "fake-upload-bucket" self.final_bucket = "fake-final-bucket" region = "eu-west-1" os.environ["GITHUB_REPO"] = self.repo os.environ["GITHUB_API_KEY"] = "testing" os.environ["WDIV_API_KEY"] = "testing" os.environ["FINAL_BUCKET_NAME"] = self.final_bucket os.environ["AWS_REGION"] = region os.environ["ERROR_REPORT_EMAIL"] = "*****@*****.**" os.environ[ "WDIV_WEBHOOK_URL"] = "https://wheredoivote.co.uk/api/beta/uploads/" # set up pretend s3 bucket self.s3mock = mock_s3() self.s3mock.start() self.conn = boto3.client("s3") self.conn.create_bucket(Bucket=self.upload_bucket) self.conn.create_bucket(Bucket=self.final_bucket) # mock SES self.sesmock = mock_ses() self.sesmock.start() conn = boto3.client("ses", region) conn.verify_email_identity( EmailAddress="*****@*****.**") # mock all the HTTP responses we're going to make responses.start() responses.add( responses.GET, f"https://wheredoivote.co.uk/api/beta/councils/X01000000.json", status=200, body=json.dumps({"name": "Piddleton Parish Council"}), ) responses.add( responses.GET, f"https://api.github.com/repos/{self.repo}/issues?state=open&labels=Data%20Import", json=[], status=200, ) responses.add( responses.POST, f"https://api.github.com/repos/{self.repo}/issues", json={"html_url": f"https://github.com/{self.repo}/issues/1"}, status=200, ) responses.add( responses.POST, "https://wheredoivote.co.uk/api/beta/uploads/", json={}, status=200, ) sys.stdout = io.StringIO()
def ses_client(aws_credentials): with mock_ses(): conn = boto3.client("ses", region_name="us-east-1") conn.verify_email_identity(EmailAddress="*****@*****.**") yield conn
def setup_s3_and_ddb(aws_credentials): mock_cloudformation().start() mock_dynamodb2().start() mock_s3().start() mock_ses().start() mock_sts().start() dynamodb_client = awshelper.get_resource(awshelper.ServiceName.dynamodb) table = dynamodb_client.create_table( TableName=config.DefaultValue.config_table_name, KeySchema=[ { 'AttributeName': 'partitionkey', 'KeyType': 'HASH' }, { 'AttributeName': 'sortkey', 'KeyType': 'RANGE' } ], AttributeDefinitions=[ { 'AttributeName': 'partitionkey', 'AttributeType': 'S' }, { 'AttributeName': 'sortkey', 'AttributeType': 'S' } ] ) s3_client = awshelper.get_client(awshelper.ServiceName.s3) s3_client.create_bucket( Bucket=TestValues.test_bucket_1_name, CreateBucketConfiguration={ 'LocationConstraint': 'us-west-2'}) s3_client.create_bucket( Bucket=TestValues.test_bucket_2_name, CreateBucketConfiguration={ 'LocationConstraint': 'us-west-2'}) body = bytes('hello world', 'utf-8') s3_client.put_object( Bucket=TestValues.test_bucket_1_name, Key='sampleobject', Body=body) s3_client.create_bucket( Bucket=config.DeploymentDetails.consolidated_inventory_bucket_name, CreateBucketConfiguration={ 'LocationConstraint': 'us-west-2'}) index = config.ServiceParameters.iterator_count ddb.store_iterator_index( config.ServiceParameters.inventory_monitor_iterator_name, index) yield TestResources(table, None, None) mock_sts().stop() mock_ses().stop() mock_s3().stop() mock_dynamodb2().stop() mock_cloudformation().stop()
def ses_client(): with mock_ses(): client = boto3.client("ses") client.verify_email_identity(EmailAddress=settings.FROM_EMAIL) yield client
def ses(aws_credentials): with mock_ses(): yield boto3.client('ses', region_name='us-east-1')