esp_sdk 2.7.0 → 2.8.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +36 -35
- data/.travis.yml +2 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +63 -85
- data/Rakefile +2 -1
- data/esp_sdk.gemspec +3 -4
- data/lib/esp/aws_clients.rb +2 -2
- data/lib/esp/commands/add_external_account.rb +1 -1
- data/lib/esp/commands/commands_tasks.rb +2 -2
- data/lib/esp/extensions/active_resource/formats/json_api_format.rb +24 -16
- data/lib/esp/extensions/active_resource/validations.rb +1 -1
- data/lib/esp/resources/alert.rb +3 -2
- data/lib/esp/resources/custom_signature/definition.rb +2 -2
- data/lib/esp/resources/dashboard.rb +2 -5
- data/lib/esp/resources/resource.rb +14 -15
- data/lib/esp/resources/stat.rb +2 -5
- data/lib/esp/resources/suppression.rb +1 -1
- data/lib/esp/version.rb +1 -1
- data/test/esp/integration/custom_signature_definition_integration_test.rb +15 -1
- data/test/esp/integration/custom_signature_integration_test.rb +3 -1
- data/test/esp/integration/custom_signature_result_alert_integration_test.rb +4 -4
- data/test/esp/integration/custom_signature_result_integration_test.rb +2 -1
- data/test/esp/integration/json_api_format_integration_test.rb +1 -1
- data/test/esp/integration/suppression_integration_test.rb +1 -1
- data/test/esp/integration/suppression_unique_identifier_integration_test.rb +1 -1
- data/test/esp/resources/custom_signature/definition_test.rb +1 -1
- data/test/esp/resources/custom_signature_test.rb +1 -1
- data/test/esp/resources/external_account_test.rb +1 -1
- data/test/esp/resources/organization_test.rb +6 -6
- data/test/esp/resources/service_test.rb +1 -1
- data/test/esp/resources/sub_organization_test.rb +3 -3
- data/test/esp/resources/team_test.rb +2 -2
- data/test/factories/contact_requests.rb +1 -2
- data/test/factories/custom_signature/definitions.rb +1 -2
- data/test/factories/dashboards.rb +1 -2
- data/test/factories/external_accounts.rb +1 -2
- data/test/factories/organizations.rb +1 -2
- data/test/factories/reports.rb +1 -2
- data/test/factories/scan_intervals.rb +1 -2
- data/test/factories/stat_custom_signatures.rb +1 -2
- data/test/factories/stat_regions.rb +1 -2
- data/test/factories/stat_services.rb +1 -2
- data/test/factories/stat_signautures.rb +1 -2
- data/test/factories/stats.rb +1 -2
- data/test/factories/sub_organizations.rb +1 -2
- data/test/factories/suppression/regions.rb +2 -4
- data/test/factories/suppression/signatures.rb +2 -4
- data/test/factories/suppression/unique_identifiers.rb +2 -4
- data/test/factories/suppressions.rb +1 -2
- data/test/factories/users.rb +1 -2
- data/test/test_helper.rb +3 -10
- metadata +11 -28
- data/lib/tasks/testing.rake +0 -3
- data/test/parallel_reporter.rb +0 -93
@@ -64,7 +64,8 @@ module ESP::Integration
|
|
64
64
|
|
65
65
|
context '#create' do
|
66
66
|
should 'be able to create' do
|
67
|
-
|
67
|
+
team = ESP::Team.last
|
68
|
+
custom_signature = ESP::CustomSignature.create(name: 'ABC', identifier: 'ABC', risk_level: 'High', team_ids: [team.id])
|
68
69
|
refute_predicate custom_signature, :new?
|
69
70
|
definition = custom_signature.definitions.first
|
70
71
|
fail 'Missing definition' if definition.blank?
|
@@ -6,7 +6,7 @@ module ESP::Integration
|
|
6
6
|
context ActiveResource::Formats::JsonAPIFormat do
|
7
7
|
context 'live calls' do
|
8
8
|
should 'merge included objects' do
|
9
|
-
report = ESP::Report.first
|
9
|
+
report = ESP::Report.first(params: { sorts: 'id' })
|
10
10
|
alert = ESP::Alert.where(report_id: report.id, include: 'external_account.team.organization,region,signature,custom_signature').first
|
11
11
|
|
12
12
|
assert_not_nil alert.attributes['external_account']
|
@@ -5,7 +5,7 @@ module ESP::Integration
|
|
5
5
|
context ESP::Suppression do
|
6
6
|
context 'live calls' do
|
7
7
|
setup do
|
8
|
-
@s = ESP::Suppression.first
|
8
|
+
@s = ESP::Suppression.first(params: { sorts: 'id' })
|
9
9
|
fail "Live DB does not have any suppressions. Add a suppression and run tests again." if @s.blank?
|
10
10
|
end
|
11
11
|
|
@@ -9,7 +9,7 @@ module ESP::Integration
|
|
9
9
|
should 'return error when reason is not supplied' do
|
10
10
|
alert_id = ESP::Report.all.detect { |r| r.status == 'complete' }.alerts.last.id
|
11
11
|
|
12
|
-
suppression = ESP::Suppression::UniqueIdentifier.create(alert_id: alert_id)
|
12
|
+
suppression = ESP::Suppression::UniqueIdentifier.create(alert_id: alert_id, reason: '')
|
13
13
|
|
14
14
|
assert_equal "Suppression reason can't be blank", suppression.errors.full_messages.first
|
15
15
|
end
|
@@ -23,7 +23,7 @@ module ESP
|
|
23
23
|
definition.results
|
24
24
|
|
25
25
|
assert_requested(:get, /custom_signature_results.json*/) do |req|
|
26
|
-
assert_equal "filter[definition_id_eq]=#{definition.id}", URI.unescape(req.uri.query)
|
26
|
+
assert_equal "filter[definition_id_eq]=#{definition.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -36,7 +36,7 @@ module ESP
|
|
36
36
|
custom_signature.definitions
|
37
37
|
|
38
38
|
assert_requested(:get, /custom_signature_definitions.json*/) do |req|
|
39
|
-
assert_equal "filter[custom_signature_id_eq]=#{custom_signature.id}", URI.unescape(req.uri.query)
|
39
|
+
assert_equal "filter[custom_signature_id_eq]=#{custom_signature.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -44,7 +44,7 @@ module ESP
|
|
44
44
|
external_account.reports
|
45
45
|
|
46
46
|
assert_requested(:get, /reports.json*/) do |req|
|
47
|
-
assert_equal "filter[external_account_id_eq]=#{external_account.id}", URI.unescape(req.uri.query)
|
47
|
+
assert_equal "filter[external_account_id_eq]=#{external_account.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -29,7 +29,7 @@ module ESP
|
|
29
29
|
organization.teams
|
30
30
|
|
31
31
|
assert_requested(:get, /teams.json*/) do |req|
|
32
|
-
assert_equal "filter[organization_id_eq]=#{organization.id}", URI.unescape(req.uri.query)
|
32
|
+
assert_equal "filter[organization_id_eq]=#{organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -42,7 +42,7 @@ module ESP
|
|
42
42
|
organization.sub_organizations
|
43
43
|
|
44
44
|
assert_requested(:get, /sub_organizations.json*/) do |req|
|
45
|
-
assert_equal "filter[organization_id_eq]=#{organization.id}", URI.unescape(req.uri.query)
|
45
|
+
assert_equal "filter[organization_id_eq]=#{organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -55,7 +55,7 @@ module ESP
|
|
55
55
|
organization.users
|
56
56
|
|
57
57
|
assert_requested(:get, /users.json*/) do |req|
|
58
|
-
assert_equal "filter[organization_id_eq]=#{organization.id}", URI.unescape(req.uri.query)
|
58
|
+
assert_equal "filter[organization_id_eq]=#{organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -68,7 +68,7 @@ module ESP
|
|
68
68
|
organization.reports
|
69
69
|
|
70
70
|
assert_requested(:get, /reports.json*/) do |req|
|
71
|
-
assert_equal "filter[organization_id_eq]=#{organization.id}", URI.unescape(req.uri.query)
|
71
|
+
assert_equal "filter[organization_id_eq]=#{organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -81,7 +81,7 @@ module ESP
|
|
81
81
|
organization.external_accounts
|
82
82
|
|
83
83
|
assert_requested(:get, /external_accounts.json*/) do |req|
|
84
|
-
assert_equal "filter[organization_id_eq]=#{organization.id}", URI.unescape(req.uri.query)
|
84
|
+
assert_equal "filter[organization_id_eq]=#{organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -94,7 +94,7 @@ module ESP
|
|
94
94
|
organization.custom_signatures
|
95
95
|
|
96
96
|
assert_requested(:get, /custom_signatures.json*/) do |req|
|
97
|
-
assert_equal "filter[organization_id_eq]=#{organization.id}", URI.unescape(req.uri.query)
|
97
|
+
assert_equal "filter[organization_id_eq]=#{organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
@@ -19,7 +19,7 @@ module ESP
|
|
19
19
|
s.signatures
|
20
20
|
|
21
21
|
assert_requested(:get, /signatures.json*/) do |req|
|
22
|
-
assert_equal "filter[service_id_eq]=#{s.id}", URI.unescape(req.uri.query)
|
22
|
+
assert_equal "filter[service_id_eq]=#{s.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -22,7 +22,7 @@ module ESP
|
|
22
22
|
sub_organization.teams
|
23
23
|
|
24
24
|
assert_requested(:get, /teams.json*/) do |req|
|
25
|
-
assert_equal "filter[sub_organization_id_eq]=#{sub_organization.id}", URI.unescape(req.uri.query)
|
25
|
+
assert_equal "filter[sub_organization_id_eq]=#{sub_organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -35,7 +35,7 @@ module ESP
|
|
35
35
|
sub_organization.external_accounts
|
36
36
|
|
37
37
|
assert_requested(:get, /external_accounts.json*/) do |req|
|
38
|
-
assert_equal "filter[sub_organization_id_eq]=#{sub_organization.id}", URI.unescape(req.uri.query)
|
38
|
+
assert_equal "filter[sub_organization_id_eq]=#{sub_organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -48,7 +48,7 @@ module ESP
|
|
48
48
|
sub_organization.reports
|
49
49
|
|
50
50
|
assert_requested(:get, /reports.json*/) do |req|
|
51
|
-
assert_equal "filter[sub_organization_id_eq]=#{sub_organization.id}", URI.unescape(req.uri.query)
|
51
|
+
assert_equal "filter[sub_organization_id_eq]=#{sub_organization.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -33,7 +33,7 @@ module ESP
|
|
33
33
|
team.external_accounts
|
34
34
|
|
35
35
|
assert_requested(:get, /external_accounts.json*/) do |req|
|
36
|
-
assert_equal "filter[team_id_eq]=#{team.id}", URI.unescape(req.uri.query)
|
36
|
+
assert_equal "filter[team_id_eq]=#{team.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -60,7 +60,7 @@ module ESP
|
|
60
60
|
team.reports
|
61
61
|
|
62
62
|
assert_requested(:get, /reports.json*/) do |req|
|
63
|
-
assert_equal "filter[team_id_eq]=#{team.id}", URI.unescape(req.uri.query)
|
63
|
+
assert_equal "filter[team_id_eq]=#{team.id}", URI::DEFAULT_PARSER.unescape(req.uri.query)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
data/test/factories/reports.rb
CHANGED
data/test/factories/stats.rb
CHANGED
@@ -62,8 +62,7 @@ FactoryGirl.define do
|
|
62
62
|
}
|
63
63
|
}
|
64
64
|
}
|
65
|
-
]
|
66
|
-
}
|
65
|
+
] }
|
67
66
|
end
|
68
67
|
relationships do
|
69
68
|
{ organization: {
|
@@ -83,8 +82,7 @@ FactoryGirl.define do
|
|
83
82
|
links: {
|
84
83
|
related: "http://localhost:3000/api/v2/users/1.json"
|
85
84
|
}
|
86
|
-
}
|
87
|
-
}
|
85
|
+
} }
|
88
86
|
end
|
89
87
|
end
|
90
88
|
end
|
@@ -89,8 +89,7 @@ FactoryGirl.define do
|
|
89
89
|
}
|
90
90
|
}
|
91
91
|
}
|
92
|
-
]
|
93
|
-
}
|
92
|
+
] }
|
94
93
|
end
|
95
94
|
relationships do
|
96
95
|
{ organization: {
|
@@ -110,8 +109,7 @@ FactoryGirl.define do
|
|
110
109
|
links: {
|
111
110
|
related: "http://localhost:3000/api/v2/users/1.json"
|
112
111
|
}
|
113
|
-
}
|
114
|
-
}
|
112
|
+
} }
|
115
113
|
end
|
116
114
|
end
|
117
115
|
end
|
@@ -83,8 +83,7 @@ FactoryGirl.define do
|
|
83
83
|
}
|
84
84
|
}
|
85
85
|
}
|
86
|
-
}
|
87
|
-
}
|
86
|
+
} }
|
88
87
|
end
|
89
88
|
relationships do
|
90
89
|
{ organization: {
|
@@ -104,8 +103,7 @@ FactoryGirl.define do
|
|
104
103
|
links: {
|
105
104
|
related: "http://localhost:3000/api/v2/users/1.json"
|
106
105
|
}
|
107
|
-
}
|
108
|
-
}
|
106
|
+
} }
|
109
107
|
end
|
110
108
|
end
|
111
109
|
end
|
data/test/factories/users.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
ENV['ESP_ENV'] = 'test'
|
2
|
-
#
|
3
|
-
if ENV['CI_BUILD_STAGE'].to_s.casecmp('test_sdk') != 0
|
4
|
-
require 'coveralls'
|
5
|
-
Coveralls.wear!
|
6
|
-
end
|
2
|
+
$VERBOSE = nil # hide those annoying instance variable not defined errors that come from gems
|
7
3
|
|
8
4
|
require 'minitest/autorun'
|
9
|
-
require 'minitest/
|
5
|
+
require 'minitest/pride'
|
10
6
|
require 'factory_girl'
|
11
7
|
require 'mocha/mini_test'
|
12
8
|
require 'bourne'
|
@@ -16,12 +12,10 @@ require 'rubygems'
|
|
16
12
|
require 'active_resource'
|
17
13
|
require_relative 'json_strategy'
|
18
14
|
require_relative '../lib/esp_sdk'
|
19
|
-
require_relative 'parallel_reporter'
|
20
15
|
|
21
16
|
FactoryGirl.definition_file_paths = [File.expand_path('factories', File.dirname(__FILE__))]
|
22
17
|
FactoryGirl.find_definitions
|
23
18
|
FactoryGirl.register_strategy(:json, JsonStrategy)
|
24
|
-
Minitest::Reporters.use! Minitest::Reporters::ParallelReporter.new(color: true)
|
25
19
|
|
26
20
|
class ActiveSupport::TestCase
|
27
21
|
include FactoryGirl::Syntax::Methods # so we can use json(:object) instead of FactoryGirl.json(:object)
|
@@ -41,8 +35,7 @@ class ActiveSupport::TestCase
|
|
41
35
|
data = json_array.map { |j| JSON.parse(j)['data'] }
|
42
36
|
links = build_links(data, page_args)
|
43
37
|
list = { 'data' => data.slice(0, page_args[:size]),
|
44
|
-
"links" => links
|
45
|
-
}
|
38
|
+
"links" => links }
|
46
39
|
list['included'] = JSON.parse(json_array.first)['included'] if json_array.first.present?
|
47
40
|
list.to_json
|
48
41
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esp_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evident.io
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,20 +108,6 @@ dependencies:
|
|
108
108
|
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: minitest-reporters
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: shoulda
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,7 +165,7 @@ dependencies:
|
|
179
165
|
- !ruby/object:Gem::Version
|
180
166
|
version: '0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
168
|
+
name: factory_girl
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
184
170
|
requirements:
|
185
171
|
- - '>='
|
@@ -193,7 +179,7 @@ dependencies:
|
|
193
179
|
- !ruby/object:Gem::Version
|
194
180
|
version: '0'
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
182
|
+
name: yard
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
198
184
|
requirements:
|
199
185
|
- - '>='
|
@@ -207,7 +193,7 @@ dependencies:
|
|
207
193
|
- !ruby/object:Gem::Version
|
208
194
|
version: '0'
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
196
|
+
name: awesome_print
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
212
198
|
requirements:
|
213
199
|
- - '>='
|
@@ -221,7 +207,7 @@ dependencies:
|
|
221
207
|
- !ruby/object:Gem::Version
|
222
208
|
version: '0'
|
223
209
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
210
|
+
name: aws-sdk
|
225
211
|
requirement: !ruby/object:Gem::Requirement
|
226
212
|
requirements:
|
227
213
|
- - '>='
|
@@ -235,7 +221,7 @@ dependencies:
|
|
235
221
|
- !ruby/object:Gem::Version
|
236
222
|
version: '0'
|
237
223
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
224
|
+
name: rdiscount
|
239
225
|
requirement: !ruby/object:Gem::Requirement
|
240
226
|
requirements:
|
241
227
|
- - '>='
|
@@ -249,7 +235,7 @@ dependencies:
|
|
249
235
|
- !ruby/object:Gem::Version
|
250
236
|
version: '0'
|
251
237
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
238
|
+
name: bundler-audit
|
253
239
|
requirement: !ruby/object:Gem::Requirement
|
254
240
|
requirements:
|
255
241
|
- - '>='
|
@@ -282,14 +268,14 @@ dependencies:
|
|
282
268
|
requirements:
|
283
269
|
- - ~>
|
284
270
|
- !ruby/object:Gem::Version
|
285
|
-
version: 2.0
|
271
|
+
version: '2.0'
|
286
272
|
type: :runtime
|
287
273
|
prerelease: false
|
288
274
|
version_requirements: !ruby/object:Gem::Requirement
|
289
275
|
requirements:
|
290
276
|
- - ~>
|
291
277
|
- !ruby/object:Gem::Version
|
292
|
-
version: 2.0
|
278
|
+
version: '2.0'
|
293
279
|
- !ruby/object:Gem::Dependency
|
294
280
|
name: rack
|
295
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -377,7 +363,6 @@ files:
|
|
377
363
|
- lib/esp/version.rb
|
378
364
|
- lib/esp_sdk.rb
|
379
365
|
- lib/tasks/rubocop.rake
|
380
|
-
- lib/tasks/testing.rake
|
381
366
|
- test/esp/aws_clients_test.rb
|
382
367
|
- test/esp/extensions/active_resource/dirty_test.rb
|
383
368
|
- test/esp/extensions/active_resource/formats/json_api_format_test.rb
|
@@ -484,7 +469,6 @@ files:
|
|
484
469
|
- test/factories/teams.rb
|
485
470
|
- test/factories/users.rb
|
486
471
|
- test/json_strategy.rb
|
487
|
-
- test/parallel_reporter.rb
|
488
472
|
- test/test_helper.rb
|
489
473
|
homepage: https://github.com/EvidentSecurity/esp_sdk
|
490
474
|
licenses:
|
@@ -506,7 +490,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
506
490
|
version: '0'
|
507
491
|
requirements: []
|
508
492
|
rubyforge_project:
|
509
|
-
rubygems_version: 2.
|
493
|
+
rubygems_version: 2.0.14.1
|
510
494
|
signing_key:
|
511
495
|
specification_version: 4
|
512
496
|
summary: SDK for interacting with the ESP API.
|
@@ -617,5 +601,4 @@ test_files:
|
|
617
601
|
- test/factories/teams.rb
|
618
602
|
- test/factories/users.rb
|
619
603
|
- test/json_strategy.rb
|
620
|
-
- test/parallel_reporter.rb
|
621
604
|
- test/test_helper.rb
|