esp_sdk 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +6 -1
  4. data/Gemfile.lock +11 -1
  5. data/README.md +287 -28
  6. data/bin/esp +15 -0
  7. data/esp_sdk.gemspec +2 -0
  8. data/lib/esp/aws_clients.rb +60 -0
  9. data/lib/esp/commands/add_external_account.rb +57 -0
  10. data/lib/esp/commands/commands_tasks.rb +106 -0
  11. data/lib/esp/commands/console.rb +68 -0
  12. data/lib/esp/extensions/active_resource/formats/json_api_format.rb +12 -4
  13. data/lib/esp/extensions/active_resource/paginated_collection.rb +5 -5
  14. data/lib/esp/extensions/active_resource/validations.rb +1 -1
  15. data/lib/esp/external_account_creator.rb +77 -0
  16. data/lib/esp/resources/alert.rb +30 -34
  17. data/lib/esp/resources/cloud_trail_event.rb +5 -0
  18. data/lib/esp/resources/contact_request.rb +6 -5
  19. data/lib/esp/resources/custom_signature.rb +32 -56
  20. data/lib/esp/resources/dashboard.rb +8 -1
  21. data/lib/esp/resources/external_account.rb +27 -19
  22. data/lib/esp/resources/organization.rb +27 -3
  23. data/lib/esp/resources/region.rb +15 -3
  24. data/lib/esp/resources/report.rb +28 -24
  25. data/lib/esp/resources/resource.rb +26 -10
  26. data/lib/esp/resources/service.rb +5 -0
  27. data/lib/esp/resources/signature.rb +28 -12
  28. data/lib/esp/resources/stat.rb +21 -2
  29. data/lib/esp/resources/stat_custom_signature.rb +30 -4
  30. data/lib/esp/resources/stat_region.rb +29 -3
  31. data/lib/esp/resources/stat_service.rb +29 -3
  32. data/lib/esp/resources/stat_signature.rb +29 -3
  33. data/lib/esp/resources/sub_organization.rb +27 -3
  34. data/lib/esp/resources/suppression/region.rb +14 -32
  35. data/lib/esp/resources/suppression/signature.rb +14 -40
  36. data/lib/esp/resources/suppression/unique_identifier.rb +8 -6
  37. data/lib/esp/resources/suppression.rb +43 -5
  38. data/lib/esp/resources/tag.rb +5 -0
  39. data/lib/esp/resources/team.rb +33 -9
  40. data/lib/esp/resources/user.rb +29 -3
  41. data/lib/esp/version.rb +1 -1
  42. data/lib/esp.rb +25 -5
  43. data/test/esp/aws_clients_test.rb +101 -0
  44. data/test/esp/extensions/active_resource/formats/json_api_format_test.rb +26 -12
  45. data/test/esp/extensions/active_resource/paginated_collection_test.rb +93 -72
  46. data/test/esp/extensions/active_resource/validations_test.rb +2 -12
  47. data/test/esp/external_account_creator_test.rb +153 -0
  48. data/test/esp/resources/alert_test.rb +71 -33
  49. data/test/esp/resources/cloud_trail_event_test.rb +9 -1
  50. data/test/esp/resources/contact_request_test.rb +8 -0
  51. data/test/esp/resources/custom_signature_test.rb +8 -0
  52. data/test/esp/resources/dashboard_test.rb +8 -0
  53. data/test/esp/resources/external_account_test.rb +8 -0
  54. data/test/esp/resources/metadata_test.rb +1 -1
  55. data/test/esp/resources/organization_test.rb +8 -0
  56. data/test/esp/resources/region_test.rb +12 -4
  57. data/test/esp/resources/report_test.rb +13 -4
  58. data/test/esp/resources/resource_test.rb +208 -64
  59. data/test/esp/resources/service_test.rb +8 -0
  60. data/test/esp/resources/signature_test.rb +15 -9
  61. data/test/esp/resources/stat_custom_signature_test.rb +9 -1
  62. data/test/esp/resources/stat_region_test.rb +23 -1
  63. data/test/esp/resources/stat_service_test.rb +23 -1
  64. data/test/esp/resources/stat_signature_test.rb +23 -1
  65. data/test/esp/resources/stat_test.rb +52 -8
  66. data/test/esp/resources/sub_organization_test.rb +8 -0
  67. data/test/esp/resources/suppression/region_test.rb +10 -2
  68. data/test/esp/resources/suppression/signature_test.rb +10 -2
  69. data/test/esp/resources/suppression/unique_identifier_test.rb +10 -2
  70. data/test/esp/resources/suppression_test.rb +74 -14
  71. data/test/esp/resources/tag_test.rb +9 -1
  72. data/test/esp/resources/team_test.rb +8 -0
  73. data/test/esp/resources/user_test.rb +49 -19
  74. data/test/esp_test.rb +19 -1
  75. data/test/factories/alerts.rb +70 -0
  76. data/test/factories/organizations.rb +2 -2
  77. data/test/factories/regions.rb +1 -1
  78. data/test/factories/sub_organizations.rb +1 -1
  79. data/test/factories/suppressions.rb +109 -3
  80. data/test/factories/users.rb +65 -2
  81. data/test/test_helper.rb +9 -8
  82. metadata +41 -69
  83. data/bin/esp_console +0 -67
  84. data/rdoc/ActiveResource/Formats.html +0 -178
  85. data/rdoc/ActiveResource/PaginatedCollection.html +0 -912
  86. data/rdoc/ActiveResource.html +0 -182
  87. data/rdoc/ESP/Alert.html +0 -808
  88. data/rdoc/ESP/CloudTrailEvent.html +0 -377
  89. data/rdoc/ESP/ContactRequest.html +0 -368
  90. data/rdoc/ESP/CustomSignature.html +0 -748
  91. data/rdoc/ESP/Dashboard.html +0 -357
  92. data/rdoc/ESP/ExternalAccount.html +0 -567
  93. data/rdoc/ESP/Metadata.html +0 -411
  94. data/rdoc/ESP/Organization.html +0 -592
  95. data/rdoc/ESP/Region.html +0 -401
  96. data/rdoc/ESP/Report.html +0 -624
  97. data/rdoc/ESP/Service.html +0 -382
  98. data/rdoc/ESP/Signature.html +0 -557
  99. data/rdoc/ESP/Stat.html +0 -1780
  100. data/rdoc/ESP/StatCustomSignature.html +0 -1601
  101. data/rdoc/ESP/StatRegion.html +0 -1600
  102. data/rdoc/ESP/StatService.html +0 -1600
  103. data/rdoc/ESP/StatSignature.html +0 -1600
  104. data/rdoc/ESP/SubOrganization.html +0 -542
  105. data/rdoc/ESP/Suppression/Region.html +0 -456
  106. data/rdoc/ESP/Suppression/Signature.html +0 -472
  107. data/rdoc/ESP/Suppression/UniqueIdentifier.html +0 -419
  108. data/rdoc/ESP/Suppression.html +0 -651
  109. data/rdoc/ESP/Tag.html +0 -373
  110. data/rdoc/ESP/Team.html +0 -586
  111. data/rdoc/ESP/User.html +0 -485
  112. data/rdoc/ESP.html +0 -549
  113. data/rdoc/README_md.html +0 -503
  114. data/rdoc/created.rid +0 -31
  115. data/rdoc/images/add.png +0 -0
  116. data/rdoc/images/arrow_up.png +0 -0
  117. data/rdoc/images/brick.png +0 -0
  118. data/rdoc/images/brick_link.png +0 -0
  119. data/rdoc/images/bug.png +0 -0
  120. data/rdoc/images/bullet_black.png +0 -0
  121. data/rdoc/images/bullet_toggle_minus.png +0 -0
  122. data/rdoc/images/bullet_toggle_plus.png +0 -0
  123. data/rdoc/images/date.png +0 -0
  124. data/rdoc/images/delete.png +0 -0
  125. data/rdoc/images/find.png +0 -0
  126. data/rdoc/images/loadingAnimation.gif +0 -0
  127. data/rdoc/images/macFFBgHack.png +0 -0
  128. data/rdoc/images/package.png +0 -0
  129. data/rdoc/images/page_green.png +0 -0
  130. data/rdoc/images/page_white_text.png +0 -0
  131. data/rdoc/images/page_white_width.png +0 -0
  132. data/rdoc/images/plugin.png +0 -0
  133. data/rdoc/images/ruby.png +0 -0
  134. data/rdoc/images/tag_blue.png +0 -0
  135. data/rdoc/images/tag_green.png +0 -0
  136. data/rdoc/images/transparent.png +0 -0
  137. data/rdoc/images/wrench.png +0 -0
  138. data/rdoc/images/wrench_orange.png +0 -0
  139. data/rdoc/images/zoom.png +0 -0
  140. data/rdoc/index.html +0 -136
  141. data/rdoc/js/darkfish.js +0 -155
  142. data/rdoc/js/jquery.js +0 -4
  143. data/rdoc/js/navigation.js +0 -142
  144. data/rdoc/js/search.js +0 -94
  145. data/rdoc/js/search_index.js +0 -1
  146. data/rdoc/js/searcher.js +0 -228
  147. data/rdoc/rdoc.css +0 -595
  148. data/rdoc/table_of_contents.html +0 -942
@@ -4,6 +4,14 @@ module ESP
4
4
  class Suppression
5
5
  class SignatureTest < ActiveSupport::TestCase
6
6
  context ESP::Suppression::Signature do
7
+ context '.where' do
8
+ should 'not be implemented' do
9
+ assert_raises ESP::NotImplementedError do
10
+ ESP::Suppression::Signature.where(id_eq: 2)
11
+ end
12
+ end
13
+ end
14
+
7
15
  context '#find' do
8
16
  should 'not be implemented' do
9
17
  assert_raises ESP::NotImplementedError do
@@ -93,7 +101,7 @@ module ESP
93
101
 
94
102
  context 'for_alert' do
95
103
  should 'return error when reason is not supplied' do
96
- alert_id = ESP::Report.last.alerts.last.id
104
+ alert_id = ESP::Report.all.detect { |r| r.status == 'complete' }.alerts.last.id
97
105
 
98
106
  suppression = ESP::Suppression::Signature.create(alert_id: alert_id)
99
107
 
@@ -101,7 +109,7 @@ module ESP
101
109
  end
102
110
 
103
111
  should 'return suppression' do
104
- alert_id = ESP::Report.last.alerts.last.id
112
+ alert_id = ESP::Report.all.detect { |r| r.status == 'complete' }.alerts.last.id
105
113
 
106
114
  suppression = ESP::Suppression::Signature.create(alert_id: alert_id, reason: 'test')
107
115
 
@@ -4,6 +4,14 @@ module ESP
4
4
  class Suppression
5
5
  class UniqueIdentifierTest < ActiveSupport::TestCase
6
6
  context ESP::Suppression::UniqueIdentifier do
7
+ context '.where' do
8
+ should 'not be implemented' do
9
+ assert_raises ESP::NotImplementedError do
10
+ ESP::Suppression::UniqueIdentifier.where(id_eq: 2)
11
+ end
12
+ end
13
+ end
14
+
7
15
  context '#find' do
8
16
  should 'not be implemented' do
9
17
  assert_raises ESP::NotImplementedError do
@@ -56,7 +64,7 @@ module ESP
56
64
 
57
65
  context '.create' do
58
66
  should 'return error when reason is not supplied' do
59
- alert_id = ESP::Report.last.alerts.last.id
67
+ alert_id = ESP::Report.all.detect { |r| r.status == 'complete' }.alerts.last.id
60
68
 
61
69
  suppression = ESP::Suppression::UniqueIdentifier.create(alert_id: alert_id)
62
70
 
@@ -64,7 +72,7 @@ module ESP
64
72
  end
65
73
 
66
74
  should 'return suppression' do
67
- alert_id = ESP::Report.last.alerts.last.id
75
+ alert_id = ESP::Report.all.detect { |r| r.status == 'complete' }.alerts.last.id
68
76
 
69
77
  suppression = ESP::Suppression::UniqueIdentifier.create(alert_id: alert_id, reason: 'test')
70
78
 
@@ -53,54 +53,106 @@ module ESP
53
53
 
54
54
  context '#regions' do
55
55
  should 'call the api for the report and the passed in params' do
56
- suppression = build(:suppression)
57
- stub_request(:get, /regions.json*/).to_return(body: json_list(:region, 2))
56
+ suppression = build(:suppression, region_ids: [1, 2])
57
+ stub_request(:put, /regions.json*/).to_return(body: json_list(:region, 2))
58
58
 
59
59
  suppression.regions
60
60
 
61
- assert_requested(:get, /regions.json*/) do |req|
62
- assert_equal "filter[suppressions_id_eq]=#{suppression.id}", URI.unescape(req.uri.query)
61
+ assert_requested(:put, /regions.json*/) do |req|
62
+ body = JSON.parse(req.body)
63
+ assert_equal [1, 2], body["filter"]["id_in"]
63
64
  end
64
65
  end
66
+
67
+ should 'not call the api if it was returned in an include' do
68
+ stub_request(:get, %r{suppressions/1.json*}).to_return(body: json(:suppression, :with_include))
69
+ suppression = ESP::Suppression.find(1)
70
+ stub_request(:put, /regions.json*/)
71
+
72
+ assert_not_nil suppression.attributes['regions']
73
+
74
+ suppression.regions
75
+
76
+ assert_not_requested(:put, /regions.json*/)
77
+ end
65
78
  end
66
79
 
67
80
  context '#external_accounts' do
68
81
  should 'call the api for the report and the passed in params' do
69
- suppression = build(:suppression)
70
- stub_request(:get, /external_accounts.json*/).to_return(body: json_list(:external_account, 2))
82
+ suppression = build(:suppression, external_account_ids: [1, 2])
83
+ stub_request(:put, /external_accounts.json*/).to_return(body: json_list(:external_account, 2))
71
84
 
72
85
  suppression.external_accounts
73
86
 
74
- assert_requested(:get, /external_accounts.json*/) do |req|
75
- assert_equal "filter[suppressions_id_eq]=#{suppression.id}", URI.unescape(req.uri.query)
87
+ assert_requested(:put, /external_accounts.json*/) do |req|
88
+ body = JSON.parse(req.body)
89
+ assert_equal [1, 2], body["filter"]["id_in"]
76
90
  end
77
91
  end
92
+
93
+ should 'not call the api if it was returned in an include' do
94
+ stub_request(:get, %r{suppressions/1.json*}).to_return(body: json(:suppression, :with_include))
95
+ suppression = ESP::Suppression.find(1)
96
+ stub_request(:put, /external_accounts.json*/)
97
+
98
+ assert_not_nil suppression.attributes['external_accounts']
99
+
100
+ suppression.external_accounts
101
+
102
+ assert_not_requested(:put, /external_accounts.json*/)
103
+ end
78
104
  end
79
105
 
80
106
  context '#signatures' do
81
107
  should 'call the api for the report and the passed in params' do
82
108
  suppression = build(:suppression, signature_ids: [1, 2])
83
- stub_request(:get, /signatures.json*/).to_return(body: json_list(:signature, 2))
109
+ stub_request(:put, /signatures.json*/).to_return(body: json_list(:signature, 2))
84
110
 
85
111
  suppression.signatures
86
112
 
87
- assert_requested(:get, /signatures.json*/) do |req|
88
- assert_equal "filter[id_in][0]=#{suppression.signature_ids.first}&filter[id_in][1]=#{suppression.signature_ids.second}", URI.unescape(req.uri.query)
113
+ assert_requested(:put, /signatures.json*/) do |req|
114
+ body = JSON.parse(req.body)
115
+ assert_equal [1, 2], body["filter"]["id_in"]
89
116
  end
90
117
  end
118
+
119
+ should 'not call the api if it was returned in an include' do
120
+ stub_request(:get, %r{suppressions/1.json*}).to_return(body: json(:suppression, :with_include))
121
+ suppression = ESP::Suppression.find(1)
122
+ stub_request(:put, /signatures.json*/)
123
+
124
+ assert_not_nil suppression.attributes['signatures']
125
+
126
+ suppression.signatures
127
+
128
+ assert_not_requested(:put, /signatures.json*/)
129
+ end
91
130
  end
92
131
 
93
132
  context '#custom_signatures' do
94
133
  should 'call the api for the report and the passed in params' do
95
134
  suppression = build(:suppression, custom_signature_ids: [1, 2])
96
- stub_request(:get, /custom_signatures.json*/).to_return(body: json_list(:custom_signature, 2))
135
+ stub_request(:put, /custom_signatures.json*/).to_return(body: json_list(:custom_signature, 2))
97
136
 
98
137
  suppression.custom_signatures
99
138
 
100
- assert_requested(:get, /custom_signatures.json*/) do |req|
101
- assert_equal "filter[id_in][0]=#{suppression.custom_signature_ids.first}&filter[id_in][1]=#{suppression.custom_signature_ids.second}", URI.unescape(req.uri.query)
139
+ assert_requested(:put, /custom_signatures.json*/) do |req|
140
+ body = JSON.parse(req.body)
141
+ assert_equal [1, 2], body["filter"]["id_in"]
102
142
  end
103
143
  end
144
+
145
+ should 'not call the api if it was returned in an include' do
146
+ stub_request(:get, %r{suppressions/1.json*}).to_return(body: json(:suppression, :with_include))
147
+ suppression = ESP::Suppression.find(1)
148
+ stub_request(:put, /custom_signatures.json*/)
149
+
150
+ assert_not_nil suppression.attributes['custom_signatures']
151
+
152
+ suppression.custom_signatures
153
+
154
+ assert_not_requested(:put, /custom_signatures.json*/)
155
+ end
104
156
  end
105
157
 
106
158
  context '#deactivate' do
@@ -220,6 +272,14 @@ module ESP
220
272
  end
221
273
  end
222
274
  end
275
+
276
+ context '.where' do
277
+ should 'return suppression objects' do
278
+ suppressions = ESP::Suppression.where(id_eq: @s.id)
279
+
280
+ assert_equal ESP::Suppression, suppressions.resource_class
281
+ end
282
+ end
223
283
  end
224
284
  end
225
285
  end
@@ -29,6 +29,14 @@ module ESP
29
29
  end
30
30
  end
31
31
 
32
+ context '.where' do
33
+ should 'not be implemented' do
34
+ assert_raises ESP::NotImplementedError do
35
+ Tag.where(id_eq: 2)
36
+ end
37
+ end
38
+ end
39
+
32
40
  context '.for_alert' do
33
41
  should 'throw an error if alert id is not supplied' do
34
42
  error = assert_raises ArgumentError do
@@ -86,7 +94,7 @@ module ESP
86
94
 
87
95
  context '.for_alert' do
88
96
  should 'return tags for alert id' do
89
- report = ESP::Report.last
97
+ report = ESP::Report.all.detect { |r| r.status == 'complete' }
90
98
  events = ESP::Tag.for_alert(report.alerts.last.id)
91
99
 
92
100
  assert_equal ESP::Tag, events.resource_class
@@ -110,6 +110,14 @@ module ESP
110
110
  end
111
111
  end
112
112
 
113
+ context '.where' do
114
+ should 'return team objects' do
115
+ teams = ESP::Team.where(name_eq: @team.name)
116
+
117
+ assert_equal ESP::Team, teams.resource_class
118
+ end
119
+ end
120
+
113
121
  context '#CRUD' do
114
122
  should 'be able to create, update and destroy' do
115
123
  team = ESP::Team.new(name: 'bob', organization_id: @team.organization_id, sub_organization_id: @team.sub_organization_id)
@@ -43,33 +43,61 @@ module ESP
43
43
  context '#sub_organizations' do
44
44
  should 'call the api' do
45
45
  u = build(:user, sub_organization_ids: [1, 2])
46
- stub_request(:get, /sub_organizations.json*/).to_return(body: json_list(:sub_organization, 2))
46
+ stub_request(:put, /sub_organizations.json*/).to_return(body: json_list(:sub_organization, 2))
47
47
 
48
48
  u.sub_organizations
49
49
 
50
- assert_requested(:get, /sub_organizations.json*/) do |req|
51
- assert_equal "filter[id_in][0]=#{u.sub_organization_ids.first}&filter[id_in][1]=#{u.sub_organization_ids.second}", URI.unescape(req.uri.query)
50
+ assert_requested(:put, /sub_organizations.json*/) do |req|
51
+ body = JSON.parse(req.body)
52
+ assert_equal [1, 2], body["filter"]["id_in"]
52
53
  end
53
54
  end
55
+
56
+ should 'not call the api if it was returned in an include' do
57
+ stub_request(:get, %r{users/1.json*}).to_return(body: json(:user, :with_include))
58
+ user = ESP::User.find(1)
59
+ stub_request(:put, /sub_organizations.json*/)
60
+
61
+ assert_not_nil user.attributes['sub_organizations']
62
+
63
+ user.sub_organizations
64
+
65
+ assert_not_requested(:put, /sub_organizations.json*/)
66
+ end
54
67
  end
55
68
 
56
69
  context '#teams' do
57
70
  should 'call the api' do
58
71
  u = build(:user, team_ids: [1, 2])
59
- stub_request(:get, /teams.json*/).to_return(body: json_list(:team, 2))
72
+ stub_request(:put, /teams.json*/).to_return(body: json_list(:team, 2))
60
73
 
61
74
  u.teams
62
75
 
63
- assert_requested(:get, /teams.json*/) do |req|
64
- assert_equal "filter[id_in][0]=#{u.team_ids.first}&filter[id_in][1]=#{u.team_ids.second}", URI.unescape(req.uri.query)
76
+ assert_requested(:put, /teams.json*/) do |req|
77
+ body = JSON.parse(req.body)
78
+ assert_equal [1, 2], body["filter"]["id_in"]
65
79
  end
66
80
  end
81
+
82
+ should 'not call the api if it was returned in an include' do
83
+ stub_request(:get, %r{users/1.json*}).to_return(body: json(:user, :with_include))
84
+ user = ESP::User.find(1)
85
+ stub_request(:put, /teams.json*/)
86
+
87
+ assert_not_nil user.attributes['teams']
88
+
89
+ user.teams
90
+
91
+ assert_not_requested(:put, /teams.json*/)
92
+ end
67
93
  end
68
94
 
69
95
  context 'live calls' do
70
96
  setup do
71
97
  skip "Make sure you run the live calls locally to ensure proper integration" if ENV['CI_SERVER']
72
98
  WebMock.allow_net_connect!
99
+ @user = ESP::User.last
100
+ skip "Live DB does not have any users. Add a user and run tests again." if @user.blank?
73
101
  end
74
102
 
75
103
  teardown do
@@ -78,33 +106,35 @@ module ESP
78
106
 
79
107
  context '#organization' do
80
108
  should 'return an organization' do
81
- u = ESP::User.last
109
+ org = @user.organization
82
110
 
83
- org = u.organization
84
-
85
- assert_equal u.organization_id, org.id
111
+ assert_equal @user.organization_id, org.id
86
112
  end
87
113
  end
88
114
 
89
115
  context '#sub_organizations' do
90
116
  should 'return an array of sub_organizations' do
91
- u = ESP::User.last
92
-
93
- sub_orgs = u.sub_organizations
117
+ sub_orgs = @user.sub_organizations
94
118
 
95
- assert_equal u.sub_organization_ids.count, sub_orgs.count
96
- assert_equal u.sub_organization_ids, sub_orgs.map(&:id)
119
+ assert_equal @user.sub_organization_ids.count, sub_orgs.count
120
+ assert_equal @user.sub_organization_ids, sub_orgs.map(&:id)
97
121
  end
98
122
  end
99
123
 
100
124
  context '#teams' do
101
125
  should 'return an array of teams' do
102
- u = ESP::User.last
126
+ teams = @user.teams
127
+
128
+ assert_equal @user.team_ids.count, teams.count
129
+ assert_equal @user.team_ids.sort, teams.map(&:id).sort
130
+ end
131
+ end
103
132
 
104
- teams = u.teams
133
+ context '.where' do
134
+ should 'return user objects' do
135
+ users = ESP::User.where(id_eq: @user.id)
105
136
 
106
- assert_equal u.team_ids.count, teams.count
107
- assert_equal u.team_ids.sort, teams.map(&:id).sort
137
+ assert_equal ESP::User, users.resource_class
108
138
  end
109
139
  end
110
140
  end
data/test/esp_test.rb CHANGED
@@ -44,6 +44,22 @@ class ESPTest < ActiveSupport::TestCase
44
44
  end
45
45
  end
46
46
 
47
+ context '.http_proxy' do
48
+ should 'be set manually' do
49
+ ESP.http_proxy = 'http://foo.com/blah_blah'
50
+
51
+ assert_equal 'http://foo.com/blah_blah', ESP.http_proxy
52
+ assert_equal URI.parse('http://foo.com/blah_blah'), ESP::Resource.proxy
53
+ end
54
+
55
+ should 'be set from an environment variable' do
56
+ ESP.http_proxy = nil
57
+ ENV['http_proxy'] = 'http://foo.com/blah_blah'
58
+
59
+ assert_equal 'http://foo.com/blah_blah', ESP.http_proxy
60
+ end
61
+ end
62
+
47
63
  context '.host=' do
48
64
  setup do
49
65
  ESP.host = nil
@@ -97,11 +113,12 @@ class ESPTest < ActiveSupport::TestCase
97
113
  ESP.host = nil
98
114
  end
99
115
 
100
- should 'set site, access_key_id, secret_access_key' do
116
+ should 'set site, access_key_id, secret_access_key, http_proxy' do
101
117
  ESP.configure do |config|
102
118
  config.host = 'https://sample.com'
103
119
  config.access_key_id = '1234'
104
120
  config.secret_access_key = '5678'
121
+ config.http_proxy = 'proxy.com'
105
122
  end
106
123
 
107
124
  assert_equal "https://sample.com#{ESP::PATH}", ESP.site
@@ -110,6 +127,7 @@ class ESPTest < ActiveSupport::TestCase
110
127
  assert_equal '1234', ESP::Resource.hmac_access_id
111
128
  assert_equal '5678', ESP.secret_access_key
112
129
  assert_equal '5678', ESP::Resource.hmac_secret_key
130
+ assert_equal URI.parse("proxy.com"), ESP::Resource.proxy
113
131
  end
114
132
  end
115
133
 
@@ -125,6 +125,76 @@ FactoryGirl.define do
125
125
  }
126
126
  }
127
127
  },
128
+ {
129
+ id: '5',
130
+ type: "teams",
131
+ name: "Default Team",
132
+ created_at: "2015-09-11T21:12:15.183Z",
133
+ updated_at: "2015-09-11T21:12:15.183Z",
134
+ relationships: {
135
+ sub_organization: {
136
+ data: {
137
+ type: "sub_organizations",
138
+ id: "5"
139
+ },
140
+ links: {
141
+ related: "http://localhost:3000/api/v2/sub_organizations/2.json"
142
+ }
143
+ },
144
+ organization: {
145
+ data: {
146
+ type: "organizations",
147
+ id: "5"
148
+ },
149
+ links: {
150
+ related: "http://localhost:3000/api/v2/organizations/2.json"
151
+ }
152
+ }
153
+ }
154
+ },
155
+ {
156
+ id: '5',
157
+ type: "organizations",
158
+ created_at: "2015-09-11T21:12:15.183Z",
159
+ name: "Test Org",
160
+ updated_at: "2015-09-11T21:12:15.183Z",
161
+ relationships: {
162
+ sub_organizations: {
163
+ data: [
164
+ {
165
+ type: "sub_organizations",
166
+ id: "24"
167
+ },
168
+ {
169
+ type: "sub_organizations",
170
+ id: "2"
171
+ }
172
+ ],
173
+ links: {
174
+ related: "http://localhost:3000/api/v2/sub_organizations.json?filter%5Borganization_id_eq%5D=2"
175
+ }
176
+ },
177
+ teams: {
178
+ data: [
179
+ {
180
+ type: "teams",
181
+ id: "2"
182
+ },
183
+ {
184
+ type: "teams",
185
+ id: "20"
186
+ },
187
+ {
188
+ type: "teams",
189
+ id: "21"
190
+ }
191
+ ],
192
+ links: {
193
+ related: "http://localhost:3000/api/v2/teams.json?filter%5Borganization_id_eq%5D=2"
194
+ }
195
+ }
196
+ }
197
+ },
128
198
  {
129
199
  id: "1014",
130
200
  type: "regions",
@@ -20,7 +20,7 @@ FactoryGirl.define do
20
20
  }
21
21
  ],
22
22
  links: {
23
- related: "http://localhost:3000/api/v2/sub_organizations.json?q%5Borganization_id_eq%5D=2"
23
+ related: "http://localhost:3000/api/v2/sub_organizations.json?filter%5Borganization_id_eq%5D=2"
24
24
  }
25
25
  },
26
26
  teams: {
@@ -39,7 +39,7 @@ FactoryGirl.define do
39
39
  }
40
40
  ],
41
41
  links: {
42
- related: "http://localhost:3000/api/v2/teams.json?q%5Borganization_id_eq%5D=2"
42
+ related: "http://localhost:3000/api/v2/teams.json?filter%5Borganization_id_eq%5D=2"
43
43
  }
44
44
  }
45
45
  }
@@ -3,7 +3,7 @@ FactoryGirl.define do
3
3
  skip_create
4
4
 
5
5
  sequence(:id) { |n| n }
6
- type "services"
6
+ type "regions"
7
7
  code "us_east_test_1"
8
8
  end
9
9
  end
@@ -25,7 +25,7 @@ FactoryGirl.define do
25
25
  }
26
26
  ],
27
27
  links: {
28
- related: "http://localhost:3000/api/v2/teams.json?q%5Bsub_organization_id_eq%5D=34"
28
+ related: "http://localhost:3000/api/v2/teams.json?filter%5Bsub_organization_id_eq%5D=34"
29
29
  }
30
30
  }
31
31
  }
@@ -4,12 +4,12 @@ FactoryGirl.define do
4
4
 
5
5
  sequence(:id) { |n| n }
6
6
  type "suppressions"
7
- created_at { Time.current }
7
+ created_at "2015-09-11T21:12:15.183Z"
8
8
  reason "I said"
9
9
  resource ''
10
10
  suppression_type "regions"
11
11
  status "active"
12
- updated_at { Time.current }
12
+ updated_at "2015-09-11T21:12:15.183Z"
13
13
  relationships do
14
14
  { organization: {
15
15
  data: {
@@ -63,9 +63,115 @@ FactoryGirl.define do
63
63
  }
64
64
  },
65
65
  custom_signatures: {
66
- data: []
66
+ data: [
67
+ {
68
+ id: "6",
69
+ type: "custom_signatures"
70
+ }
71
+ ],
72
+ links: {
73
+ related: "http://test.host/api/v2/custom_signatures.json?filter%5Bid_in%5D%5B%5D=6"
74
+ }
67
75
  }
68
76
  }
69
77
  end
78
+
79
+ trait :with_include do
80
+ included do
81
+ [
82
+ {
83
+ id: '1',
84
+ type: "regions",
85
+ code: "us_east_test_1"
86
+ },
87
+ {
88
+ id: '1015',
89
+ type: "external_accounts",
90
+ account: "762160981991",
91
+ arn: "arn:aws:iam::762160981991:role/Evident-Service-Role-Kevin",
92
+ created_at: "2015-09-11T21:12:15.183Z",
93
+ external_id: "913310e7-6a9c-49f7-bd69-120721ec1122",
94
+ name: "Dev",
95
+ updated_at: "2015-09-11T21:12:15.183Z",
96
+ relationships: {
97
+ organization: {
98
+ data: {
99
+ type: "organizations",
100
+ id: "1"
101
+ },
102
+ links: {
103
+ related: "http://localhost:3000/api/v2/organizations/1.json"
104
+ }
105
+ },
106
+ sub_organization: {
107
+ data: {
108
+ type: "sub_organizations",
109
+ id: "1"
110
+ },
111
+ links: {
112
+ related: "http://localhost:3000/api/v2/sub_organizations/1.json"
113
+ }
114
+ },
115
+ team: {
116
+ data: {
117
+ type: "teams",
118
+ id: "1"
119
+ },
120
+ links: {
121
+ related: "http://localhost:3000/api/v2/teams/1.json"
122
+ }
123
+ }
124
+ }
125
+ },
126
+ {
127
+ id: '6',
128
+ type: "signatures",
129
+ created_at: "2015-09-11T21:12:15.183Z",
130
+ description: "Some description for some test",
131
+ identifier: "1 Unique ID",
132
+ name: "1_test_signature",
133
+ resolution: "Turn on some setting",
134
+ risk_level: "High",
135
+ updated_at: nil,
136
+ relationships: {
137
+ service: {
138
+ data: {
139
+ type: "services",
140
+ id: "1"
141
+ },
142
+ links: {
143
+ related: "http://test.host/api/v2/services/1.json"
144
+ }
145
+ }
146
+ }
147
+ },
148
+ {
149
+ id: '6',
150
+ type: "custom_signatures",
151
+ created_at: "2015-09-11T21:12:15.183Z",
152
+ active: true,
153
+ description: "Test description",
154
+ identifier: "AWS::Test::001",
155
+ name: "Test",
156
+ resolution: "Test resolution",
157
+ risk_level: "Medium",
158
+ signature: "Some javascript",
159
+ language: "javascript",
160
+ updated_at: nil,
161
+ relationships: {
162
+ organization: {
163
+ data: {
164
+ type: "organizations",
165
+ id: "1003"
166
+ },
167
+ links: {
168
+ related: "http://test.host/api/v2/organizations/1003.json"
169
+ }
170
+ }
171
+ }
172
+ }
173
+ ]
174
+ end
175
+ end
70
176
  end
71
177
  end