aws-must-templates 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +97 -44
  3. data/lib/tasks/cross-ref.rb +6 -0
  4. data/lib/tasks/suite.rake +150 -48
  5. data/lib/test-suites/test_suites.rb +13 -13
  6. data/mustache/commonDependsOn.mustache +24 -2
  7. data/mustache/commonRef.mustache +22 -0
  8. data/mustache/commonValue.mustache +1 -1
  9. data/mustache/commonXGressRule.mustache +31 -0
  10. data/mustache/mapping.mustache +3 -1
  11. data/mustache/mappingAmazonVpcNat.mustache +38 -0
  12. data/mustache/resource.mustache +4 -0
  13. data/mustache/resourceInstance.mustache +26 -7
  14. data/mustache/resourceInternetGateway.mustache +30 -16
  15. data/mustache/resourceRoute.mustache +50 -0
  16. data/mustache/resourceRouteTable.mustache +67 -0
  17. data/mustache/resourceSecurityGroup.mustache +13 -12
  18. data/mustache/resourceSubnet.mustache +20 -8
  19. data/mustache/root.mustache +26 -11
  20. data/spec/aws-must-templates/AllwaysOk/AllwaysOk_spec.rb +35 -0
  21. data/spec/aws-must-templates/AwsCommandLineInterfaceInstalled/AwsCommandLineInterfaceInstalled_spec.rb +19 -1
  22. data/spec/aws-must-templates/AwsMustTestRunnerProperties/AwsMustTestRunnerProperties_spec.rb +16 -1
  23. data/spec/aws-must-templates/CloudFormationHelperScriptsInstalled/CloudFormationHelperScriptsInstalled_spec.rb +17 -0
  24. data/spec/aws-must-templates/Ec2InstanceType/Ec2InstanceType_spec.rb +47 -0
  25. data/spec/aws-must-templates/Ec2PrivateIp/Ec2PrivateIp_spec.rb +49 -0
  26. data/spec/aws-must-templates/Ec2PublicIp/Ec2PublicIp_spec.rb +68 -0
  27. data/spec/aws-must-templates/Ec2Routes/Ec2Routes_spec.rb +69 -0
  28. data/spec/aws-must-templates/Ec2SecurityGroups/Ec2SecurityGroups_spec.rb +151 -0
  29. data/spec/aws-must-templates/Ec2StatusNormal/Ec2StatusNormal_spec.rb +55 -0
  30. data/spec/aws-must-templates/NetworkCanPing/NetworkCanPing_spec.rb +36 -0
  31. data/spec/aws-must-templates/ParameterTest/ParameterTest_spec.rb +17 -1
  32. data/spec/aws-must-templates/RespondsToPing/RespondsToPing_spec.rb +46 -0
  33. data/spec/aws-must-templates/S3NoAccess/S3NoAccess_spec.rb +17 -3
  34. data/spec/aws-must-templates/S3ReadAccessAllowed/S3ReadAccessAllowed_spec.rb +18 -1
  35. data/spec/aws-must-templates/Stack/Stack_spec.rb +28 -1
  36. data/spec/aws-must-templates/ValidOSVersion/ValidOSVersion_spec.rb +16 -1
  37. data/spec/aws-must-templates/Vpc/vpc_spec.rb +51 -0
  38. data/spec/aws-must-templates/table_of_content.mustache +67 -0
  39. data/spec/lib/test_suites_spec.rb +101 -28
  40. data/spec/mustache/commonDependsOn_spec.rb +57 -2
  41. data/spec/mustache/commonInstanceType_spec.rb +1 -1
  42. data/spec/mustache/mappingAmazonVpcNat_spec.rb +56 -0
  43. data/spec/mustache/mapping_spec.rb +48 -7
  44. data/spec/mustache/resourceInstance_spec.rb +102 -1
  45. data/spec/mustache/resourceInternetGateway_spec.rb +14 -9
  46. data/spec/mustache/resourcePolicy_spec.rb +1 -1
  47. data/spec/mustache/resourceS3Bucket_spec.rb +1 -1
  48. data/spec/mustache/resourceSecurityGroup_spec.rb +3 -3
  49. data/spec/mustache/resourceSubnet_spec.rb +50 -3
  50. data/spec/support/lib/aws/aws.rb +6 -0
  51. data/spec/support/lib/aws/ec2_resource.rb +177 -0
  52. data/spec/support/lib/aws/mixin_cidr.rb +18 -0
  53. data/spec/support/lib/aws/mixin_ec2.rb +53 -0
  54. data/spec/support/lib/aws/mixin_security_group.rb +15 -0
  55. data/spec/support/lib/aws/mixin_subnet.rb +77 -0
  56. data/spec/support/lib/aws/mixin_vpc.rb +10 -0
  57. data/spec/support/lib/aws/route_resource.rb +86 -0
  58. data/spec/support/lib/aws/security_group_resource.rb +120 -0
  59. data/spec/support/lib/aws/vpc_resource.rb +69 -0
  60. data/spec/support/lib/suite_value.rb +38 -0
  61. data/spec/support/lib/test_parameter.rb +12 -8
  62. data/spec/support/lib/valid_property.rb +29 -9
  63. data/spec/support/spec_helper.rb +75 -44
  64. data/spec/support/utils.rb +4 -0
  65. metadata +34 -24
@@ -1,6 +1,21 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="S3ReadAccessAllowed"></a>S3ReadAccessAllowed<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate that read access to S3 bucket `test_parameter( current_test, "Bucket" )` exists
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+
15
+
1
16
  require 'spec_helper'
2
17
 
3
- current_test = "S3ReadAccessAllowed"
18
+ current_test = File.basename File.dirname __FILE__
4
19
 
5
20
  describe current_test do
6
21
 
@@ -142,3 +157,5 @@ describe current_test do
142
157
 
143
158
 
144
159
  end
160
+
161
+ # +++fold-off+++
@@ -1,3 +1,18 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Stack"></a>Stack<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate (and document in test report!) properties in
8
+ `property[:stack_id]`
9
+
10
+ +++close+++
11
+
12
+ =end
13
+
14
+ # +++fold-on+++
15
+
1
16
  require 'spec_helper'
2
17
 
3
18
 
@@ -7,7 +22,7 @@ require 'spec_helper'
7
22
  # Configuration
8
23
  #
9
24
 
10
- current_test = "Stack"
25
+ current_test = File.basename File.dirname __FILE__
11
26
 
12
27
  props = {
13
28
  "smoke" => [
@@ -21,6 +36,16 @@ props = {
21
36
  stack_parameter( "KeyName" ),
22
37
  stack_parameter( "SSHLocation" )
23
38
  ],
39
+ "suite2" => [
40
+ stack_parameter( "InstanceType" ),
41
+ stack_parameter( "KeyName" ),
42
+ stack_parameter( "SSHLocation" ),
43
+ stack_output( "myFront1" ),
44
+ stack_output( "myNat" ),
45
+ stack_output( "InstanceId1" ),
46
+ stack_output( "InstanceId2" ),
47
+ stack_output( "MyInternetGw" ),
48
+ ],
24
49
  }
25
50
  # ------------------------------------------------------------------
26
51
  #
@@ -47,3 +72,5 @@ describe current_test do
47
72
 
48
73
  end
49
74
 
75
+
76
+ # +++fold-off+++
@@ -1,6 +1,19 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="ValidOSVersion"></a>ValidOSVersion<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate that operating system codename == `test_parameter( current_test, "Codename" )`
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
1
14
  require 'spec_helper'
2
15
 
3
- current_test = "ValidOSVersion"
16
+ current_test = File.basename File.dirname __FILE__
4
17
 
5
18
  describe current_test do
6
19
 
@@ -14,3 +27,5 @@ describe current_test do
14
27
  end
15
28
  end
16
29
 
30
+
31
+ # +++fold-off+++
@@ -0,0 +1,51 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Vpc"></a>Vpc<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates that Vpc tagged with `Name` = `test_parameter( current_test, "VpcName" )`
8
+ exists, and that it is available.
9
+
10
+
11
+ **Parameters**
12
+
13
+ * `test_parameter( current_test, "VpcName" )` : search for Vpc with 'Name' tag
14
+
15
+
16
+ +++close+++
17
+
18
+ =end
19
+
20
+ # +++fold-on+++
21
+
22
+ require 'spec_helper'
23
+
24
+ current_test = File.basename File.dirname __FILE__
25
+
26
+ describe current_test do
27
+
28
+ # ------------------------------------------------------------------
29
+ # test parameters
30
+
31
+ vpcName = test_parameter( current_test, "VpcName" )
32
+
33
+
34
+ # ------------------------------------------------------------------
35
+ # tests
36
+ describe "vpc '#{vpcName.value}'" do
37
+
38
+ describe vpc_resource_by_name( vpcName.value ) do
39
+
40
+ it "#is available Vpc" do
41
+ expect( subject.is_available?).to eql( true )
42
+ end
43
+
44
+ end
45
+
46
+ end # instance
47
+
48
+
49
+ end
50
+
51
+ # +++fold-off+++
@@ -0,0 +1,67 @@
1
+ {{!
2
+
3
+ ==================================================================
4
+ Style section
5
+ ==================================================================
6
+
7
+ }}
8
+
9
+ <style>
10
+ h1 {
11
+ color:blue;
12
+ font-size: 2.5em;
13
+ }
14
+ h2 {
15
+ color:blue;
16
+ font-size: 1.5em;
17
+ }
18
+ h3 {
19
+ color:blue;
20
+ font-size: 1.5em;
21
+ }
22
+ .navigator {
23
+ font-size: 0.5em;
24
+ }
25
+ body {
26
+ background-color: LightSlateGray;
27
+ }
28
+ /* Support fold-on/fold-off toggle */
29
+ div.fold {
30
+ width: 90%; padding: .42rem; border-radius: 5px; margin: 1rem;
31
+
32
+ }
33
+ div.fold div {
34
+ height: 0px; margin: .2rem; overflow: hidden;
35
+ }
36
+ div.toggle ~ div { height: 0px; margin: .2rem; overflow: hidden; }
37
+ input.toggle:checked ~ div {
38
+ height: auto;
39
+ color: white;
40
+ background: #c6a24b;
41
+ font-family: monospace;
42
+ white-space: pre;
43
+ }
44
+ </style>
45
+
46
+
47
+ {{!
48
+ ==================================================================
49
+ CONTENT section
50
+ ==================================================================
51
+ }}
52
+
53
+
54
+ # <a id="top"/><a href="https://github.com/jarjuk/aws-must-templates">aws-must-templates</a>
55
+
56
+ RSPEC -tests for `aws-must-templates`.
57
+
58
+ ## Table of contents
59
+
60
+ <ul>
61
+ {{# files}}
62
+ <li><a href="#{{basedir}}">{{basedir}}</a></li>
63
+ {{/ files}}
64
+ </ul>
65
+
66
+
67
+
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require_relative "spec_helper.rb"
2
3
 
3
4
  require 'yaml'
@@ -69,8 +70,8 @@ describe "AwsMustTemplates::TestSuites::TestSuites" do
69
70
  expect( @sut ).to respond_to( :suite_role_ids )
70
71
  end
71
72
 
72
- it "methods 'suite_instance_ids'" do
73
- expect( @sut ).to respond_to( :suite_instance_ids )
73
+ it "methods 'suite_instance_names'" do
74
+ expect( @sut ).to respond_to( :suite_instance_names )
74
75
  end
75
76
 
76
77
  it "methods 'suite_instance_role_ids'" do
@@ -90,27 +91,27 @@ describe "AwsMustTemplates::TestSuites::TestSuites" do
90
91
 
91
92
  it "#nil - when suite not found" do
92
93
  suite_id = "aaa"
93
- instance_id = "notsucnhcid"
94
- expect( @sut.suite_instance_roles( suite_id, instance_id )).to eql( nil )
94
+ instance_name = "notsucnhcid"
95
+ expect( @sut.suite_instance_roles( suite_id, instance_name )).to eql( nil )
95
96
  end
96
97
 
97
98
  it "#nil - when instance not not found" do
98
99
  suite_id = @suite1.keys.first
99
- instance_id = "notsucnhcid"
100
- expect( @sut.suite_instance_roles( suite_id, instance_id )).to eql( nil )
100
+ instance_name = "notsucnhcid"
101
+ expect( @sut.suite_instance_roles( suite_id, instance_name )).to eql( nil )
101
102
  end
102
103
 
103
104
  it "#empty array - when no roles defined" do
104
105
  suite_id = @suite3.keys.first
105
- instance_id = @suite3[suite_id]["instances"][0].keys.first
106
- expect( @sut.suite_instance_roles( suite_id, instance_id )).to eql( [] )
106
+ instance_name = @suite3[suite_id]["instances"][0].keys.first
107
+ expect( @sut.suite_instance_roles( suite_id, instance_name )).to eql( [] )
107
108
  end
108
109
 
109
110
  it "#array of role defs - normal case" do
110
111
  suite_id = @suite3.keys.first
111
- instance_id = @suite3[suite_id]["instances"][1].keys.first
112
+ instance_name = @suite3[suite_id]["instances"][1].keys.first
112
113
  roles_ids = ["role1", "role2", "role3" ]
113
- expect( @sut.suite_instance_roles( suite_id, instance_id )).to eql( @suite3_instance2_roles )
114
+ expect( @sut.suite_instance_roles( suite_id, instance_name )).to eql( @suite3_instance2_roles )
114
115
  end
115
116
 
116
117
 
@@ -124,48 +125,48 @@ describe "AwsMustTemplates::TestSuites::TestSuites" do
124
125
 
125
126
  it "#nil - when suite not found" do
126
127
  suite_id = "aaa"
127
- instance_id = "notsucnhcid"
128
- expect( @sut.suite_instance_role_ids( suite_id, instance_id )).to eql( nil )
128
+ instance_name = "notsucnhcid"
129
+ expect( @sut.suite_instance_role_ids( suite_id, instance_name )).to eql( nil )
129
130
  end
130
131
 
131
132
  it "#nil - when insance not not found" do
132
133
  suite_id = @suite1.keys.first
133
- instance_id = "notsucnhcid"
134
- expect( @sut.suite_instance_role_ids( suite_id, instance_id )).to eql( nil )
134
+ instance_name = "notsucnhcid"
135
+ expect( @sut.suite_instance_role_ids( suite_id, instance_name )).to eql( nil )
135
136
  end
136
137
 
137
138
  it "#empty array - when no roles defined" do
138
139
  suite_id = @suite3.keys.first
139
- instance_id = @suite3[suite_id]["instances"][0].keys.first
140
- expect( @sut.suite_instance_role_ids( suite_id, instance_id )).to eql( [] )
140
+ instance_name = @suite3[suite_id]["instances"][0].keys.first
141
+ expect( @sut.suite_instance_role_ids( suite_id, instance_name )).to eql( [] )
141
142
  end
142
143
 
143
144
  it "#array of role ids - normal case" do
144
145
  suite_id = @suite3.keys.first
145
- instance_id = @suite3[suite_id]["instances"][1].keys.first
146
+ instance_name = @suite3[suite_id]["instances"][1].keys.first
146
147
  roles_ids = ["role1", "role2", "role3" ]
147
- expect( @sut.suite_instance_role_ids( suite_id, instance_id )).to eql( roles_ids )
148
+ expect( @sut.suite_instance_role_ids( suite_id, instance_name )).to eql( roles_ids )
148
149
  end
149
150
 
150
151
  end
151
152
 
152
153
  # ------------------------------------------------------------------
153
- # suite_instance_ids
154
- describe "suite_instance_ids" do
154
+ # suite_instance_names
155
+ describe "suite_instance_names" do
155
156
 
156
157
  it "#nil - when suite not found" do
157
158
  suite_id = "aaa"
158
- expect( @sut.suite_instance_ids( suite_id )).to eql( nil )
159
+ expect( @sut.suite_instance_names( suite_id )).to eql( nil )
159
160
  end
160
161
 
161
162
  it "#empty array - when suite does not have any instances" do
162
163
  suite_id = @suite1.keys.first
163
- expect( @sut.suite_instance_ids( suite_id )).to eql( [] )
164
+ expect( @sut.suite_instance_names( suite_id )).to eql( [] )
164
165
  end
165
166
 
166
- it "#array of instance_id - normal case" do
167
+ it "#array of instance_name - normal case" do
167
168
  suite_id = @suite3.keys.first
168
- expect( @sut.suite_instance_ids( suite_id )).to eql( @suite3.values.first["instances"].map { |h| h.keys.first })
169
+ expect( @sut.suite_instance_names( suite_id )).to eql( @suite3.values.first["instances"].map { |h| h.keys.first })
169
170
  end
170
171
 
171
172
  end
@@ -316,13 +317,85 @@ describe "AwsMustTemplates::TestSuites::TestSuites" do
316
317
  expect { AwsMustTemplates::TestSuites::TestSuites.new }.to raise_error( /No such file/ )
317
318
  end
318
319
 
320
+ # ------------------------------------------------------------------
321
+ # load ruby/object
322
+
323
+ context "Loads ruby/object" do
324
+
325
+ # **********
326
+ # Define test class constructed in YAML
327
+
328
+ module Tst
329
+ class A
330
+ attr_reader :apu
331
+ def initialize( apu )
332
+ @apu=apu
333
+ end
334
+ def to_s
335
+ puts "A=#{@a}"
336
+ end
337
+ def ==(a)
338
+ # puts "self.apu=#{self.apu} vs. a.apu=#{a.apu} #{self.apu == a.apu}"
339
+ self.apu == a.apu
340
+ end
341
+ def init_with( coder )
342
+ @apu = coder['apu']
343
+ end
344
+ end
345
+ end;
346
+
347
+ # **********
348
+ before :each do
349
+
350
+ yaml_content = <<-EOS
351
+ - tst-suite1:
352
+ desc: Fails fast if problems with AWS installation
353
+ roles:
354
+ - Test1:
355
+ param1: A
356
+ - Test2:
357
+ param2: !ruby/regexp '/^igw.*/'
358
+ - Test3:
359
+ param3: !ruby/object:Tst::A
360
+ apu: hei
361
+
362
+ EOS
363
+ yaml = YAML.load( yaml_content )
364
+ # puts "\nyaml=#{yaml}\n"
365
+ expect( YAML ).to receive(:load_file).with(AwsMustTemplates::TestSuites::SUITE_CONFIGS).and_return( yaml )
366
+ @test_suites = AwsMustTemplates::TestSuites::TestSuites.new
367
+
368
+ @expected = { "param1" => "A", "param2" => "igw-AAA", "param3" => Tst::A.new( "hei") }
369
+
370
+ end # before
371
+
372
+ # **********
373
+ # Tests
374
+
375
+ it "#loads suite from YAML" do
376
+ expect( @test_suites.suite_ids()).to eql( ['tst-suite1'] )
377
+ end
378
+
379
+ it "#includes fixed parameter" do
380
+ expect( @test_suites.suite_roles( "tst-suite1" ).first["Test1"] ).to include( { "param1" =>"A", } )
381
+ end
382
+
383
+ it "#defines include matcher for fixed string " do
384
+ expect( @expected ).to include( @test_suites.suite_roles( "tst-suite1" ).first["Test1"] )
385
+ end
386
+
387
+ it "#defines include matcher for regexp" do
388
+ expect( @expected ).to include( @test_suites.suite_roles( "tst-suite1" )[1]["Test2"] )
389
+ end
390
+
391
+ it "#defines include matcher Object" do
392
+ expect( @expected ).to include( @test_suites.suite_roles( "tst-suite1" )[2]["Test3"] )
393
+ end
394
+
395
+ end # context load/ruby object
319
396
  end
320
397
 
321
398
 
322
- it "#works" do
323
- expect( 1 ).to eql( 1 )
324
- end
325
-
326
399
  # ------------------------------------------------------------------
327
400
  # helpers
328
401
  def stub_yaml_file( yaml_text )
@@ -21,7 +21,9 @@ describe template_under_test do
21
21
 
22
22
  describe "Attributes" do
23
23
 
24
- it "#default'" do
24
+ # ------------------------------------------------------------------
25
+
26
+ it "#string'" do
25
27
 
26
28
  expect_str = <<-EOS
27
29
  , "DependsOn" : "heivaan"
@@ -37,13 +39,66 @@ describe template_under_test do
37
39
  render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
38
40
 
39
41
  # debug
40
- # puts "render_str=#{render_str}"
42
+ # puts "render_str1=#{render_str}"
43
+ # puts json_sanitize( dummy_element + render_str, nil )
44
+
45
+ expect( json_sanitize( dummy_element + render_str, nil )).to eql( json_sanitize( dummy_element + expect_str, nil ))
46
+
47
+ end
48
+
49
+ # ------------------------------------------------------------------
50
+
51
+ it "#array" do
52
+
53
+ expect_str = <<-EOS
54
+ , "DependsOn" : ["hei", "maailma"]
55
+ EOS
56
+
57
+ yaml_text = <<-EOF
58
+ DependsOn:
59
+ - hei
60
+ - maailma
61
+ EOF
62
+
63
+ # debug
64
+ # puts json_sanitize( dummy_element + expect_str, nil )
65
+
66
+ render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
67
+
68
+ # debug
69
+ # puts "render_str2=#{render_str}"
41
70
  # puts json_sanitize( dummy_element + render_str, nil )
42
71
 
43
72
  expect( json_sanitize( dummy_element + render_str, nil )).to eql( json_sanitize( dummy_element + expect_str, nil ))
44
73
 
45
74
  end
46
75
 
76
+ # ------------------------------------------------------------------
77
+
78
+ it "#empty" do
79
+
80
+ expect_str = <<-EOS
81
+ EOS
82
+
83
+ yaml_text = <<-EOF
84
+ apu: koe
85
+ EOF
86
+
87
+ # debug
88
+ # puts json_sanitize( dummy_element + expect_str, nil )
89
+
90
+ render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
91
+
92
+ # debug
93
+ # puts "render_str2=#{render_str}"
94
+ # puts json_sanitize( dummy_element + render_str, nil )
95
+
96
+ expect( json_sanitize( dummy_element + render_str, nil )).to eql( json_sanitize( dummy_element + expect_str, nil ))
97
+
98
+ end
99
+
100
+
101
+
47
102
 
48
103
  end # describe "Attributes" do
49
104
 
@@ -63,7 +63,7 @@ describe template_under_test do
63
63
  render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
64
64
 
65
65
  # debug
66
- puts "render_str=#{render_str}"
66
+ # puts "render_str=#{render_str}"
67
67
  # puts json_sanitize( dummy_element + render_str, nil )
68
68
 
69
69
  expect( json_sanitize( dummy_element + render_str, nil )).to eql( json_sanitize( dummy_element + expect_str, nil ))
@@ -0,0 +1,56 @@
1
+ require_relative "spec_helper"
2
+
3
+ template_under_test = "mappingAmazonVpcNat"
4
+
5
+ describe template_under_test do
6
+
7
+
8
+ let( :template_dir ) { "mustache" }
9
+
10
+ dummy_element = ''
11
+
12
+
13
+ before :each do
14
+ @aws_must = AwsMust::AwsMust.new( { :template_path => template_dir } )
15
+
16
+ # hide partials
17
+ allow_any_instance_of( AwsMust::Template ).to receive( :partial ).with( any_args ).and_return( "" )
18
+ # verify that template_under_test actually used
19
+ expect_any_instance_of( AwsMust::Template ).to receive( :get_template ).with( template_under_test ).and_call_original
20
+
21
+ end
22
+
23
+
24
+ it "#outpus mapping table" do
25
+ name = "koe"
26
+ expect_str= <<-EOS
27
+ "#{name}" : {
28
+ "us-east-1" : { "AMI" : "ami-184dc970" },
29
+ "us-west-1" : { "AMI" : "ami-a98396ec" },
30
+ "us-west-2" : { "AMI" : "ami-290f4119" },
31
+ "eu-west-1" : { "AMI" : "ami-14913f63" },
32
+ "eu-central-1" : { "AMI" : "ami-ae380eb3" },
33
+ "sa-east-1" : { "AMI" : "ami-8122969c" },
34
+ "ap-southeast-1" : { "AMI" : "ami-6aa38238" },
35
+ "ap-southeast-2" : { "AMI" : "ami-893f53b3" },
36
+ "ap-northeast-1" : { "AMI" : "ami-27d6e626" }
37
+ }
38
+ EOS
39
+
40
+ # puts json_sanitize( dummy_element + expect_str, nil )
41
+
42
+ yaml_text = <<-EOF
43
+ Name: #{name}
44
+ EOF
45
+
46
+ render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
47
+
48
+ # puts "render_str1=#{render_str}"
49
+ # puts json_sanitize( dummy_element + render_str, nil )
50
+
51
+ expect( json_sanitize( render_str, nil )).to eql( json_sanitize( expect_str, nil ))
52
+
53
+ end
54
+
55
+
56
+ end
@@ -6,11 +6,12 @@ describe template_under_test do
6
6
 
7
7
  let( :template_dir ) { "mustache" }
8
8
 
9
- def json_sanitize( str )
10
- return JSON.parse( str )
11
- end
9
+ dummy_element = ""
12
10
 
13
11
 
12
+ # def json_sanitize( str )
13
+ # return JSON.parse( str )
14
+ # end
14
15
 
15
16
  before :each do
16
17
  @aws_must = AwsMust::AwsMust.new( { :template_path => template_dir } )
@@ -22,22 +23,62 @@ describe template_under_test do
22
23
 
23
24
  end
24
25
 
26
+ # ------------------------------------------------------------------
27
+ #
28
+ it "#AmazonVpcNat" do
25
29
 
26
- it "#WaitHandle'" do
30
+ stubbed_template = [ '{"Instance": "rendered"}' ]
27
31
 
28
- expect_str = "\n"
32
+ expect_str= "#{stubbed_template.join}"
29
33
 
30
34
  yaml_text = <<-EOF
35
+ AmazonVpcNat: true
31
36
  EOF
32
37
 
38
+ # debug
39
+ # puts "expect_str=#{expect_str}"
40
+ # puts json_sanitize( expect_str + dummy_element)
41
+
42
+ expect_any_instance_of( AwsMust::Template ).to receive( :partial ).with( :mappingAmazonVpcNat ).once.and_return( *stubbed_template )
43
+
44
+ # invoke template
33
45
  render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
34
- expect( render_str.squeeze("\n" ) ).to eql( expect_str );
46
+
47
+ # debug
35
48
  # puts "render_str=#{render_str}"
36
- # expect( json_sanitize( render_str )).to eql( json_sanitize( expect_str ))
49
+ # puts json_sanitize( render_str + dummy_element )
50
+
51
+ expect( json_sanitize( render_str + dummy_element )).to eql( json_sanitize( expect_str + dummy_element ))
37
52
 
38
53
  end
39
54
 
55
+ # ------------------------------------------------------------------
56
+
57
+ it "#SubnetConfig" do
58
+
59
+ stubbed_template = [ '{"Instance": "rendered"}' ]
60
+
61
+ expect_str= "#{stubbed_template.join}"
62
+
63
+ yaml_text = <<-EOF
64
+ SubnetConfig: true
65
+ EOF
66
+
67
+ # debug
68
+ # puts "expect_str=#{expect_str}"
69
+ # puts json_sanitize( expect_str + dummy_element)
70
+
71
+ expect_any_instance_of( AwsMust::Template ).to receive( :partial ).with( :mappingSubnetConfig ).once.and_return( *stubbed_template )
40
72
 
73
+ # invoke template
74
+ render_str = @aws_must.generate_str( template_under_test, stub_yaml_file( yaml_text ), {} )
75
+
76
+ # debug
77
+ # puts "render_str=#{render_str}"
78
+ # puts json_sanitize( render_str + dummy_element )
41
79
 
80
+ expect( json_sanitize( render_str + dummy_element )).to eql( json_sanitize( expect_str + dummy_element ))
81
+
82
+ end
42
83
 
43
84
  end