lucid-cumulus 0.11.2 → 0.11.3

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.
@@ -0,0 +1,137 @@
1
+ require "sqs/SQSUtil"
2
+ require "sqs/SingleChangeTest"
3
+
4
+ module Cumulus
5
+ module Test
6
+ module SQS
7
+ describe Cumulus::SQS::Manager do
8
+ context "The SQS module's syncing functionality" do
9
+ it "should correctly create a new queue that's defined locally" do
10
+ queue_name = "not-in-aws"
11
+ SQS::client_spy
12
+ SQS::do_sync({
13
+ local: {queues: [{name: queue_name, value: {}}]},
14
+ aws: {list_queues: nil},
15
+ }) do |client|
16
+ create = client.spied_method(:create_queue)
17
+ expect(create.num_calls).to eq 1
18
+ expect(create.arguments[0]).to eq ({
19
+ :queue_name => "not-in-aws",
20
+ :attributes => {
21
+ "DelaySeconds" => "",
22
+ "MaximumMessageSize" => "",
23
+ "MessageRetentionPeriod" => "",
24
+ "ReceiveMessageWaitTimeSeconds" => "",
25
+ "VisibilityTimeout" => ""
26
+ }
27
+ })
28
+ end
29
+ end
30
+
31
+ it "should not delete queues added in AWS" do
32
+ queue_name = "only-in-aws"
33
+ SQS::client_spy
34
+ SQS::do_sync({
35
+ local: {queues: []},
36
+ aws: {
37
+ list_queues: {queue_urls: [SQS::queue_url(queue_name)]},
38
+ get_queue_attributes: {},
39
+ }
40
+ }) do |client|
41
+ # no calls were made to change anything
42
+ expect(client.method_calls.size).to eq 3
43
+ expect(client.spied_method(:stub_responses).nil?).to eq false
44
+ expect(client.spied_method(:list_queues).nil?).to eq false
45
+ expect(client.spied_method(:get_queue_attributes).nil?).to eq false
46
+ end
47
+ end
48
+
49
+ it "should update delay" do
50
+ SingleChangeTest.execute_sync do
51
+ @path = "delay"
52
+ @new_value = SQS::DEFAULT_QUEUE_DELAY - 1
53
+ @previous_value = SQS::DEFAULT_QUEUE_DELAY
54
+ @test_value = @new_value.to_s
55
+ @attribute_name = "DelaySeconds"
56
+ end
57
+ end
58
+
59
+ it "should update max-message-size" do
60
+ SingleChangeTest.execute_sync do
61
+ @path = "max-message-size"
62
+ @new_value = SQS::DEFAULT_QUEUE_MESSAGE_SIZE - 1
63
+ @previous_value = SQS::DEFAULT_QUEUE_MESSAGE_SIZE
64
+ @attribute_name = "MaximumMessageSize"
65
+ @test_value = @new_value.to_s
66
+ end
67
+ end
68
+
69
+ it "should update message-retention" do
70
+ SingleChangeTest.execute_sync do
71
+ @path = "message-retention"
72
+ @new_value = SQS::DEFAULT_QUEUE_MESSAGE_RETENTION - 1
73
+ @previous_value = SQS::DEFAULT_QUEUE_MESSAGE_RETENTION
74
+ @attribute_name = "MessageRetentionPeriod"
75
+ @test_value = @new_value.to_s
76
+ end
77
+ end
78
+
79
+ it "should update receive-wait-time" do
80
+ SingleChangeTest.execute_sync do
81
+ @path = "receive-wait-time"
82
+ @new_value = SQS::DEFAULT_QUEUE_WAIT_TIME - 1
83
+ @previous_value = SQS::DEFAULT_QUEUE_WAIT_TIME
84
+ @attribute_name = "ReceiveMessageWaitTimeSeconds"
85
+ @test_value = @new_value.to_s
86
+ end
87
+ end
88
+
89
+ it "should update the policy" do
90
+ new_value = "example-policy-2"
91
+ new_contents = "{\"a\":\"b\"}"
92
+ SingleChangeTest.execute_sync do
93
+ @path = "policy"
94
+ @policy = {
95
+ name: new_value,
96
+ value: new_contents,
97
+ }
98
+ @new_value = new_value
99
+ @previous_value = JSON.parse(SQS::DEFAULT_QUEUE_POLICY)
100
+ @attribute_name = "Policy"
101
+ @test_value = JSON.generate(JSON.parse(new_contents))
102
+ end
103
+ end
104
+
105
+ it "should update the dead-letter target" do
106
+ SingleChangeTest.execute_sync do
107
+ @path = "dead-letter.target"
108
+ @new_value = SQS::DEFAULT_DEAD_LETTER_TARGET + "a"
109
+ @previous_value = SQS::DEFAULT_DEAD_LETTER_TARGET
110
+ @full_test_value = {
111
+ "RedrivePolicy" => JSON.generate({
112
+ "deadLetterTargetArn" => @new_value,
113
+ "maxReceiveCount" => SQS::DEFAULT_DEAD_LETTER_RECEIVES
114
+ })
115
+ }
116
+ end
117
+ end
118
+
119
+ it "should update dead-letter max-receives" do
120
+ SingleChangeTest.execute_sync do
121
+ @path = "dead-letter.max-receives"
122
+ @new_value = SQS::DEFAULT_DEAD_LETTER_RECEIVES + 1
123
+ @previous_value = SQS::DEFAULT_DEAD_LETTER_RECEIVES
124
+ @full_test_value = {
125
+ "RedrivePolicy" => JSON.generate({
126
+ "deadLetterTargetArn" => SQS::DEFAULT_DEAD_LETTER_TARGET,
127
+ "maxReceiveCount" => @new_value
128
+ })
129
+ }
130
+ end
131
+ end
132
+
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,25 @@
1
+ module Cumulus
2
+ module Test
3
+ module Util
4
+ module DeepMerge
5
+ # Public: Do a deep merge of two hashes, overriding the values in `first`
6
+ # with the values in `second`.
7
+ #
8
+ # first - the first Hash
9
+ # seconds - the second Hash
10
+ #
11
+ # Returns a Hash that contains the values in `first` merged with `second`
12
+ def self.deep_merge(first, second)
13
+ if first.nil?
14
+ second
15
+ elsif second.nil?
16
+ first
17
+ else
18
+ merger = Proc.new { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
19
+ first.merge(second, &merger)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ module Cumulus
2
+ module Test
3
+ module ManagerUtil
4
+ @diff_strings = []
5
+ def diff_strings
6
+ @diff_strings = []
7
+ each_difference(local_resources, true) { |key, diffs| @diff_strings.concat diffs }
8
+ @diff_strings
9
+ end
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucid-cumulus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keilan Jackson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-12 00:00:00.000000000 Z
12
+ date: 2016-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.1.4
42
+ - !ruby/object:Gem::Dependency
43
+ name: deepsort
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '0.1'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '0.1'
42
56
  description: Cumulus allows you to manage your AWS infrastructure by creating JSON
43
57
  configuration files that describe your AWS resources.
44
58
  email: cumulus@lucidchart.com
@@ -55,8 +69,8 @@ files:
55
69
  - README.md
56
70
  - autocomplete
57
71
  - bin/cumulus
58
- - cumulus
59
72
  - lib/autoscaling/AutoScaling.rb
73
+ - lib/autoscaling/Commands.rb
60
74
  - lib/autoscaling/loader/Loader.rb
61
75
  - lib/autoscaling/manager/Manager.rb
62
76
  - lib/autoscaling/models/AlarmConfig.rb
@@ -94,6 +108,7 @@ files:
94
108
  - lib/aws_extensions/s3/CORSRule.rb
95
109
  - lib/aws_extensions/s3/ReplicationConfiguration.rb
96
110
  - lib/cloudfront/CloudFront.rb
111
+ - lib/cloudfront/Commands.rb
97
112
  - lib/cloudfront/loader/Loader.rb
98
113
  - lib/cloudfront/manager/Manager.rb
99
114
  - lib/cloudfront/models/CacheBehaviorConfig.rb
@@ -108,12 +123,14 @@ files:
108
123
  - lib/cloudfront/models/OriginSslProtocols.rb
109
124
  - lib/cloudfront/models/OriginSslProtocolsDiff.rb
110
125
  - lib/common/BaseLoader.rb
126
+ - lib/common/Commands.rb
111
127
  - lib/common/manager/Manager.rb
112
128
  - lib/common/models/Diff.rb
113
129
  - lib/common/models/ListChange.rb
114
130
  - lib/common/models/TagsDiff.rb
115
131
  - lib/common/models/UTCTimeSource.rb
116
132
  - lib/conf/Configuration.rb
133
+ - lib/ec2/Commands.rb
117
134
  - lib/ec2/EC2.rb
118
135
  - lib/ec2/IPProtocolMapping.rb
119
136
  - lib/ec2/loaders/EbsLoader.rb
@@ -124,6 +141,7 @@ files:
124
141
  - lib/ec2/models/EbsGroupDiff.rb
125
142
  - lib/ec2/models/InstanceConfig.rb
126
143
  - lib/ec2/models/InstanceDiff.rb
144
+ - lib/elb/Commands.rb
127
145
  - lib/elb/ELB.rb
128
146
  - lib/elb/loader/Loader.rb
129
147
  - lib/elb/manager/Manager.rb
@@ -135,6 +153,7 @@ files:
135
153
  - lib/elb/models/ListenerDiff.rb
136
154
  - lib/elb/models/LoadBalancerConfig.rb
137
155
  - lib/elb/models/LoadBalancerDiff.rb
156
+ - lib/iam/Commands.rb
138
157
  - lib/iam/IAM.rb
139
158
  - lib/iam/loader/Loader.rb
140
159
  - lib/iam/manager/IamGroups.rb
@@ -151,12 +170,14 @@ files:
151
170
  - lib/iam/models/RoleConfig.rb
152
171
  - lib/iam/models/StatementConfig.rb
153
172
  - lib/iam/models/UserConfig.rb
173
+ - lib/kinesis/Commands.rb
154
174
  - lib/kinesis/Kinesis.rb
155
175
  - lib/kinesis/loader/Loader.rb
156
176
  - lib/kinesis/manager/Manager.rb
157
177
  - lib/kinesis/models/StreamConfig.rb
158
178
  - lib/kinesis/models/StreamDiff.rb
159
179
  - lib/lambda/Lambda.rb
180
+ - lib/route53/Commands.rb
160
181
  - lib/route53/loader/Loader.rb
161
182
  - lib/route53/manager/Manager.rb
162
183
  - lib/route53/models/AliasTarget.rb
@@ -165,6 +186,7 @@ files:
165
186
  - lib/route53/models/Vpc.rb
166
187
  - lib/route53/models/ZoneConfig.rb
167
188
  - lib/route53/models/ZoneDiff.rb
189
+ - lib/s3/Commands.rb
168
190
  - lib/s3/S3.rb
169
191
  - lib/s3/loader/Loader.rb
170
192
  - lib/s3/manager/Manager.rb
@@ -180,6 +202,7 @@ files:
180
202
  - lib/s3/models/ReplicationConfig.rb
181
203
  - lib/s3/models/ReplicationDiff.rb
182
204
  - lib/s3/models/WebsiteConfig.rb
205
+ - lib/security/Commands.rb
183
206
  - lib/security/SecurityGroups.rb
184
207
  - lib/security/loader/Loader.rb
185
208
  - lib/security/manager/Manager.rb
@@ -189,6 +212,7 @@ files:
189
212
  - lib/security/models/SecurityGroupConfig.rb
190
213
  - lib/security/models/SecurityGroupDiff.rb
191
214
  - lib/sns/SNS.rb
215
+ - lib/sqs/Commands.rb
192
216
  - lib/sqs/SQS.rb
193
217
  - lib/sqs/loader/Loader.rb
194
218
  - lib/sqs/manager/Manager.rb
@@ -198,6 +222,7 @@ files:
198
222
  - lib/sqs/models/QueueDiff.rb
199
223
  - lib/util/Colors.rb
200
224
  - lib/util/StatusCodes.rb
225
+ - lib/vpc/Commands.rb
201
226
  - lib/vpc/loader/Loader.rb
202
227
  - lib/vpc/manager/Manager.rb
203
228
  - lib/vpc/models/AclEntryConfig.rb
@@ -218,6 +243,17 @@ files:
218
243
  - lib/vpc/models/VpcDiff.rb
219
244
  - lucid-cumulus.gemspec
220
245
  - rakefile.rb
246
+ - spec/mocks/ClientSpy.rb
247
+ - spec/mocks/MockedConfiguration.rb
248
+ - spec/mocks/MockedLoader.rb
249
+ - spec/mocks/MockedStatusCodes.rb
250
+ - spec/rspec_config.rb
251
+ - spec/sqs/SQSUtil.rb
252
+ - spec/sqs/SingleChangeTest.rb
253
+ - spec/sqs/diff_spec.rb
254
+ - spec/sqs/sync_spec.rb
255
+ - spec/util/DeepMerge.rb
256
+ - spec/util/ManagerUtil.rb
221
257
  homepage: http://lucidsoftware.github.io/cumulus/
222
258
  licenses:
223
259
  - Apache-2.0
data/cumulus DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env bash
2
- ~/.cumulus/bin/cumulus "$@"