aws-must-templates 0.1.6 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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