Skip to content
This repository has been archived by the owner on Apr 16, 2022. It is now read-only.

Commit

Permalink
Fix Ref ARN Return types (#226)
Browse files Browse the repository at this point in the history
* Fix arn issue caused by type parameterization

* Add additional resources with ref return types

* Remove console log

* Update CHANGELOG.md
  • Loading branch information
martysweet committed Feb 27, 2019
1 parent 1cd0073 commit 7975480
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -7,6 +7,7 @@ Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Fixed
- Merge PR #226, fixing Ref return values for ARN resources
- Merge PR #223, allowing Ref usage inside SAM Global

## [1.9.5] - 2019-02-05
Expand Down
15 changes: 14 additions & 1 deletion data/aws_resource_ref_types.json
@@ -1,6 +1,9 @@
{
"AWS::ApplicationAutoScaling::ScalingPolicy": "arn",
"AWS::AutoScaling::ScalingPolicy": "arn",
"AWS::Batch::ComputeEnvironment": "arn",
"AWS::Batch::JobDefinition": "arn",
"AWS::Batch::JobQueue": "arn",
"AWS::CertificateManager::Certificate": "arn",
"AWS::CloudFormation::Stack": "arn",
"AWS::CloudFormation::WaitCondition": "arn",
Expand All @@ -11,8 +14,18 @@
"AWS::ElasticLoadBalancingV2::LoadBalancer": "arn",
"AWS::ElasticLoadBalancingV2::TargetGroup": "arn",
"AWS::IAM::ManagedPolicy": "arn",
"AWS::IoT1Click::Project": "arn",
"AWS::IoT1Click::Device": "arn",
"AWS::Kinesis::StreamConsumer": "arn",
"AWS::Lambda::Alias": "arn",
"AWS::Lambda::LayerVersion": "arn",
"AWS::Lambda::LayerVersionPermission": "arn",
"AWS::Lambda::Version": "arn",
"AWS::OpsWorks::UserProfile": "arn",
"AWS::SNS::Topic": "arn"
"AWS::OpsWorksCM::Server": "arn",
"AWS::RAM::ResourceShare": "arn",
"AWS::SecretsManager::Secret": "arn",
"AWS::SNS::Topic": "arn",
"AWS::StepFunctions::Activity": "arn",
"AWS::StepFunctions::StateMachine": "arn"
}
7 changes: 7 additions & 0 deletions src/test/validatorTest.ts
Expand Up @@ -931,6 +931,13 @@ describe('validator', () => {
expect(result).to.have.deep.property('templateValid', true);
expect(result['errors']['crit']).to.have.lengthOf(0);
});

it('Issue #212 - Ref does not account for resources that return ARNS', function () {
var input = 'testData/valid/yaml/issue-212-ref-arn.yaml';
var result = validator.validateFile(input);
expect(result).to.have.deep.property('templateValid', true);
expect(result['errors']['crit']).to.have.lengthOf(0);
});
});

describe('parameters-validation', () => {
Expand Down
2 changes: 1 addition & 1 deletion src/validator.ts
Expand Up @@ -988,7 +988,7 @@ function assignResourcesOutputs(){

// Create a map for storing the output attributes for this Resource
let refValue = "mock-ref-" + res;
let refOverride = resourcesSpec.getRefOverride(resourceType);
let refOverride = resourcesSpec.getRefOverride(resourcesSpec.getParameterizedTypeName(resourceType));
if(refOverride !== null){
if(refOverride == "arn"){
refValue = mockArnPrefix + res;
Expand Down
24 changes: 24 additions & 0 deletions testData/valid/yaml/issue-212-ref-arn.yaml
@@ -0,0 +1,24 @@
AWSTemplateFormatVersion: '2010-09-09'

Resources:
LoadBalancer:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Scheme: internal

DevNullTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Port: 80
Protocol: HTTP
VpcId: "vpc-id"

LoadBalancerHTTPListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- TargetGroupArn: !Ref DevNullTargetGroup
Type: forward
LoadBalancerArn: !Ref LoadBalancer
Port: 80
Protocol: HTTP

0 comments on commit 7975480

Please sign in to comment.