def test_extract_topic_arn_by_parameter_reference_raises_exception_on_invalid_reference(self):
        parameters = {'exposeTopicArn': 'my-super-duper-arn'}
        resource_description = {'Type': 'Custom::SNS::Subscription',
                                'Properties': {'TopicArn': {'Ref': 'exposeTopicArnWithTypo'},
                                               'QueueArn': {'Ref': 'exposeQueue'}}}

        with self.assertRaises(CfnSphereException):
            CustomResourceHandler.extract_topic_arn(resource_description, parameters)
    def test_extract_topic_arn_by_parameter_value(self):
        resource_description = {'Type': 'Custom::SNS::Subscription',
                                'Properties': {'TopicArn': 'my-super-duper-arn',
                                               'QueueArn': {'Ref': 'exposeQueue'}}}

        result = CustomResourceHandler.extract_topic_arn(resource_description, {})
        self.assertEqual('my-super-duper-arn', result)
    def test_extract_topic_arn_by_parameter_reference_raises_exception_on_invalid_reference(
            self):
        parameters = {'exposeTopicArn': 'my-super-duper-arn'}
        resource_description = {
            'Type': 'Custom::SNS::Subscription',
            'Properties': {
                'TopicArn': {
                    'Ref': 'exposeTopicArnWithTypo'
                },
                'QueueArn': {
                    'Ref': 'exposeQueue'
                }
            }
        }

        with self.assertRaises(CfnSphereException):
            CustomResourceHandler.extract_topic_arn(resource_description,
                                                    parameters)
    def test_extract_topic_arn_by_parameter_value(self):
        resource_description = {
            'Type': 'Custom::SNS::Subscription',
            'Properties': {
                'TopicArn': 'my-super-duper-arn',
                'QueueArn': {
                    'Ref': 'exposeQueue'
                }
            }
        }

        result = CustomResourceHandler.extract_topic_arn(
            resource_description, {})
        self.assertEqual('my-super-duper-arn', result)