Пример #1
0
    def test_get_validation_record_gt_one(
            self, cfngin_context: MockCFNginContext) -> None:
        """Test get get_validation_record more than one result."""
        # setup context
        acm_stubber = cfngin_context.add_stubber("acm", "us-east-1")
        cfngin_context.add_stubber("route53", "us-east-1")
        cfngin_context.config.namespace = "test"

        cert_arn = "arn:aws:acm:us-east-1:012345678901:certificate/test"
        expected_request = {"CertificateArn": cert_arn}

        cert = Certificate(
            context=cfngin_context,
            provider=MagicMock(),
            domain="example.com",
            hosted_zone_id="test",
        )

        acm_stubber.add_response(
            "describe_certificate",
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[
                    gen_domain_validation_option(),
                    gen_domain_validation_option(),
                ],
            ),
            expected_request,
        )

        with acm_stubber, pytest.raises(ValueError) as excinfo:
            cert.get_validation_record(cert_arn=cert_arn)

        assert "only one option is supported" in str(excinfo.value)
        acm_stubber.assert_no_pending_responses()
Пример #2
0
    def test_get_validation_record_status_missmatch(
            self, cfngin_context: MockCFNginContext, check: str,
            found: str) -> None:
        """Test get get_validation_record with a missmatched record status."""
        # setup context
        acm_stubber = cfngin_context.add_stubber("acm", "us-east-1")
        cfngin_context.add_stubber("route53", "us-east-1")
        cfngin_context.config.namespace = "test"

        cert_arn = "arn:aws:acm:us-east-1:012345678901:certificate/test"
        expected_request = {"CertificateArn": cert_arn}

        cert = Certificate(
            context=cfngin_context,
            provider=MagicMock(),
            domain="example.com",
            hosted_zone_id="test",
        )

        acm_stubber.add_response(
            "describe_certificate",
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[
                    gen_domain_validation_option(ValidationStatus=found)
                ],
            ),
            expected_request,
        )

        with acm_stubber, pytest.raises(ValueError) as excinfo:
            cert.get_validation_record(cert_arn=cert_arn, status=check)

        assert "No validations with status" in str(excinfo.value)
        acm_stubber.assert_no_pending_responses()
Пример #3
0
    def test_get_validation_record_gt_one(self, cfngin_context):
        """Test get get_validation_record more than one result."""
        # setup context
        acm_stubber = cfngin_context.add_stubber('acm', 'us-east-1')
        cfngin_context.add_stubber('route53', 'us-east-1')
        cfngin_context.config.namespace = 'test'

        cert_arn = 'arn:aws:acm:us-east-1:012345678901:certificate/test'
        expected_request = {'CertificateArn': cert_arn}

        cert = Certificate(context=cfngin_context,
                           provider=MagicMock(),
                           domain='example.com',
                           hosted_zone_id='test')

        acm_stubber.add_response(
            'describe_certificate',
            gen_certificate(CertificateArn=cert_arn,
                            DomainValidationOptions=[
                                gen_domain_validation_option(),
                                gen_domain_validation_option()
                            ]), expected_request)

        with acm_stubber, pytest.raises(ValueError) as excinfo:
            cert.get_validation_record(cert_arn=cert_arn)

        assert 'only one option is supported' in str(excinfo.value)
        acm_stubber.assert_no_pending_responses()
Пример #4
0
    def test_get_validation_record_status_missmatch(self, cfngin_context,
                                                    check, found):
        """Test get get_validation_record with a missmatched record status."""
        # setup context
        acm_stubber = cfngin_context.add_stubber('acm', 'us-east-1')
        cfngin_context.add_stubber('route53', 'us-east-1')
        cfngin_context.config.namespace = 'test'

        cert_arn = 'arn:aws:acm:us-east-1:012345678901:certificate/test'
        expected_request = {'CertificateArn': cert_arn}

        cert = Certificate(context=cfngin_context,
                           provider=MagicMock(),
                           domain='example.com',
                           hosted_zone_id='test')

        acm_stubber.add_response(
            'describe_certificate',
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[
                    gen_domain_validation_option(ValidationStatus=found)
                ]), expected_request)

        with acm_stubber, pytest.raises(ValueError) as excinfo:
            cert.get_validation_record(cert_arn=cert_arn, status=check)

        assert 'No validations with status' in str(excinfo.value)
        acm_stubber.assert_no_pending_responses()
Пример #5
0
    def test_get_validation_record(
        self,
        cfngin_context: MockCFNginContext,
        monkeypatch: MonkeyPatch,
        patch_time: None,
        status: str,
    ) -> None:
        """Test get_validation_record."""
        # setup context
        acm_stubber = cfngin_context.add_stubber("acm", "us-east-1")
        cfngin_context.add_stubber("route53", "us-east-1")
        cfngin_context.config.namespace = "test"

        cert_arn = "arn:aws:acm:us-east-1:012345678901:certificate/test"
        expected_request = {"CertificateArn": cert_arn}
        validate_option_missing_record = gen_domain_validation_option(
            ValidationStatus=status)
        del validate_option_missing_record["ResourceRecord"]

        cert = Certificate(
            context=cfngin_context,
            provider=MagicMock(),
            domain="example.com",
            hosted_zone_id="test",
        )
        monkeypatch.setattr(cert, "get_certificate", lambda: cert_arn)

        acm_stubber.add_response(
            "describe_certificate",
            gen_certificate(CertificateArn=cert_arn),
            expected_request,
        )
        acm_stubber.add_response(
            "describe_certificate",
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[validate_option_missing_record],
            ),
            expected_request,
        )
        acm_stubber.add_response(
            "describe_certificate",
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[
                    gen_domain_validation_option(ValidationStatus=status)
                ],
            ),
            expected_request,
        )

        with acm_stubber:
            assert (cert.get_validation_record(status=status) ==
                    gen_domain_validation_option()["ResourceRecord"])
        acm_stubber.assert_no_pending_responses()
Пример #6
0
    def test_get_validation_record(self, cfngin_context, monkeypatch,
                                   patch_time, status):
        """Test get_validation_record."""
        # setup context
        acm_stubber = cfngin_context.add_stubber('acm', 'us-east-1')
        cfngin_context.add_stubber('route53', 'us-east-1')
        cfngin_context.config.namespace = 'test'

        cert_arn = 'arn:aws:acm:us-east-1:012345678901:certificate/test'
        expected_request = {'CertificateArn': cert_arn}
        validate_option_missing_record = gen_domain_validation_option(
            ValidationStatus=status)
        del validate_option_missing_record['ResourceRecord']

        cert = Certificate(context=cfngin_context,
                           provider=MagicMock(),
                           domain='example.com',
                           hosted_zone_id='test')
        monkeypatch.setattr(cert, 'get_certificate', lambda: cert_arn)

        acm_stubber.add_response('describe_certificate',
                                 gen_certificate(CertificateArn=cert_arn),
                                 expected_request)
        acm_stubber.add_response(
            'describe_certificate',
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[validate_option_missing_record]),
            expected_request)
        acm_stubber.add_response(
            'describe_certificate',
            gen_certificate(
                CertificateArn=cert_arn,
                DomainValidationOptions=[
                    gen_domain_validation_option(ValidationStatus=status)
                ]), expected_request)

        with acm_stubber:
            assert cert.get_validation_record(status=status) == \
                gen_domain_validation_option()['ResourceRecord']
        acm_stubber.assert_no_pending_responses()