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