示例#1
0
 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())
示例#2
0
    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
        )
示例#3
0
 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"
示例#5
0
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
示例#7
0
 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
示例#9
0
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
示例#10
0
    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
示例#12
0
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()
示例#13
0
def ses_client():
    with mock_ses():
        client = boto3.client("ses")
        client.verify_email_identity(EmailAddress=settings.FROM_EMAIL)
        yield client
示例#14
0
def ses(aws_credentials):
    with mock_ses():
        yield boto3.client('ses', region_name='us-east-1')