qualys 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -2
  3. data/.rubocop.yml +7 -0
  4. data/.rubocop_todo.yml +71 -0
  5. data/.travis.yml +13 -1
  6. data/Gemfile +3 -1
  7. data/Gemfile.lock +91 -0
  8. data/README.md +50 -10
  9. data/Rakefile +3 -4
  10. data/lib/qualys.rb +10 -11
  11. data/lib/qualys/api.rb +38 -47
  12. data/lib/qualys/auth.rb +11 -20
  13. data/lib/qualys/compliance.rb +3 -7
  14. data/lib/qualys/config.rb +3 -5
  15. data/lib/qualys/host.rb +17 -0
  16. data/lib/qualys/report.rb +90 -0
  17. data/lib/qualys/scans.rb +10 -22
  18. data/lib/qualys/version.rb +1 -1
  19. data/lib/qualys/vulnerability.rb +74 -0
  20. data/qualys.gemspec +18 -19
  21. data/spec/fixtures/vcr_cassettes/api_get.yml +52 -0
  22. data/spec/fixtures/vcr_cassettes/create_global_report.yml +68 -0
  23. data/spec/fixtures/vcr_cassettes/emptyscans.yml +35 -0
  24. data/spec/fixtures/vcr_cassettes/get.yml +107 -0
  25. data/spec/fixtures/vcr_cassettes/global_report.yml +17800 -0
  26. data/spec/fixtures/vcr_cassettes/load_global_report.yml +625 -0
  27. data/spec/fixtures/vcr_cassettes/login.yml +50 -0
  28. data/spec/fixtures/vcr_cassettes/logout.yml +50 -0
  29. data/spec/fixtures/vcr_cassettes/scan.yml +73 -0
  30. data/spec/fixtures/vcr_cassettes/scans.yml +89 -0
  31. data/spec/fixtures/vcr_cassettes/templates.yml +121 -0
  32. data/spec/fixtures/vcr_cassettes/try_load_not_existing_report.yml +63 -0
  33. data/spec/fixtures/vcr_cassettes/unlogged.yml +45 -0
  34. data/spec/fixtures/vcr_cassettes/wrong.yml +101 -0
  35. data/spec/qualys/api_spec.rb +27 -0
  36. data/spec/qualys/report_spec.rb +65 -0
  37. data/spec/qualys/scans_spec.rb +75 -0
  38. data/spec/qualys/version_spec.rb +11 -0
  39. data/spec/qualys/vulnerability_spec.rb +53 -0
  40. data/spec/qualys_spec.rb +20 -0
  41. data/spec/spec_helper.rb +37 -0
  42. metadata +61 -15
  43. data/.rock.yml +0 -17
  44. data/lib/qualys/reports.rb +0 -47
@@ -0,0 +1,45 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://qualysapi.qualys.eu/api/2.0/fo/scan/?action=list
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ X-Requested-With:
11
+ - Qualys Ruby Client v0.1.3
12
+ response:
13
+ status:
14
+ code: 401
15
+ message: Unauthorized
16
+ headers:
17
+ Date:
18
+ - Mon, 11 Dec 2017 12:54:07 GMT
19
+ Server:
20
+ - Qualys
21
+ X-Xss-Protection:
22
+ - '1'
23
+ X-Content-Type-Options:
24
+ - nosniff
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Content-Type:
30
+ - text/xml;charset=UTF-8
31
+ body:
32
+ encoding: UTF-8
33
+ string: |
34
+ <?xml version="1.0" encoding="UTF-8" ?>
35
+ <!DOCTYPE SIMPLE_RETURN SYSTEM "https://qualysapi.qualys.eu/api/2.0/simple_return.dtd">
36
+ <SIMPLE_RETURN>
37
+ <RESPONSE>
38
+ <DATETIME>2017-12-11T12:54:07Z</DATETIME>
39
+ <CODE>2000</CODE>
40
+ <TEXT>Bad Login/Password</TEXT>
41
+ </RESPONSE>
42
+ </SIMPLE_RETURN>
43
+ http_version:
44
+ recorded_at: Mon, 11 Dec 2017 12:54:07 GMT
45
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,101 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://qualysapi.qualys.eu/api/2.0/fo/scan
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ X-Requested-With:
11
+ - Qualys Ruby Client v0.1.3
12
+ response:
13
+ status:
14
+ code: 301
15
+ message: Moved Permanently
16
+ headers:
17
+ Date:
18
+ - Mon, 11 Dec 2017 12:58:49 GMT
19
+ Server:
20
+ - Qualys
21
+ Location:
22
+ - https://qualysapi.qualys.eu/api/2.0/fo/scan/
23
+ Content-Length:
24
+ - '255'
25
+ Content-Type:
26
+ - text/html; charset=iso-8859-1
27
+ body:
28
+ encoding: UTF-8
29
+ string: |
30
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
31
+ <html><head>
32
+ <title>301 Moved Permanently</title>
33
+ </head><body>
34
+ <h1>Moved Permanently</h1>
35
+ <p>The document has moved <a href="http://qualysapi.qualys.eu:443/api/2.0/fo/scan/">here</a>.</p>
36
+ </body></html>
37
+ http_version:
38
+ recorded_at: Mon, 11 Dec 2017 12:58:49 GMT
39
+ - request:
40
+ method: get
41
+ uri: https://qualysapi.qualys.eu/api/2.0/fo/scan/
42
+ body:
43
+ encoding: US-ASCII
44
+ string: ''
45
+ headers:
46
+ X-Requested-With:
47
+ - Qualys Ruby Client v0.1.3
48
+ response:
49
+ status:
50
+ code: 400
51
+ message: Bad Request
52
+ headers:
53
+ Date:
54
+ - Mon, 11 Dec 2017 12:58:49 GMT
55
+ Server:
56
+ - Qualys
57
+ X-Xss-Protection:
58
+ - '1'
59
+ X-Content-Type-Options:
60
+ - nosniff
61
+ X-Frame-Options:
62
+ - SAMEORIGIN
63
+ Expires:
64
+ - Thu, 19 Nov 1981 08:52:00 GMT
65
+ Cache-Control:
66
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
67
+ Pragma:
68
+ - no-cache
69
+ X-Ratelimit-Limit:
70
+ - '300'
71
+ X-Ratelimit-Window-Sec:
72
+ - '3600'
73
+ X-Concurrency-Limit-Limit:
74
+ - '2'
75
+ X-Concurrency-Limit-Running:
76
+ - '0'
77
+ X-Ratelimit-Towait-Sec:
78
+ - '0'
79
+ X-Ratelimit-Remaining:
80
+ - '294'
81
+ Connection:
82
+ - close
83
+ Transfer-Encoding:
84
+ - chunked
85
+ Content-Type:
86
+ - text/xml;charset=UTF-8
87
+ body:
88
+ encoding: UTF-8
89
+ string: |
90
+ <?xml version="1.0" encoding="UTF-8" ?>
91
+ <!DOCTYPE SIMPLE_RETURN SYSTEM "https://qualysapi.qualys.eu/api/2.0/simple_return.dtd">
92
+ <SIMPLE_RETURN>
93
+ <RESPONSE>
94
+ <DATETIME>2017-12-11T12:58:49Z</DATETIME>
95
+ <CODE>1903</CODE>
96
+ <TEXT>Missing required parameter(s): action</TEXT>
97
+ </RESPONSE>
98
+ </SIMPLE_RETURN>
99
+ http_version:
100
+ recorded_at: Mon, 11 Dec 2017 12:58:49 GMT
101
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'rubygems'
5
+
6
+ describe Qualys::Api do
7
+ describe 'api_get' do
8
+ let(:query) { Qualys::Api.api_get('/scan/', query: { action: 'list' }) }
9
+ let(:wrong_query) { Qualys::Api.api_get('/scan') }
10
+ let(:not_existing_query) { Qualys::Api.api_get('/nonExisting', query: { action: 'list' }) }
11
+
12
+ it 'query the API' do
13
+ VCR.use_cassette('api_get') do
14
+ expect(query.response.code).to eq '200'
15
+ end
16
+ end
17
+ it 'raises appropriatly' do
18
+ VCR.use_cassette('unlogged') do
19
+ expect { query }.to raise_error(Qualys::Api::AuthorizationRequired, 'Please Login Before Communicating With The API')
20
+ end
21
+
22
+ VCR.use_cassette('wrong') do
23
+ expect { wrong_query }.to raise_error(Qualys::Api::InvalidResponse)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Qualys::Report, type: :model do
6
+ let(:report) { Qualys::Report.global_report }
7
+
8
+ describe '#templates' do
9
+ it 'gets all the templates' do
10
+ VCR.use_cassette('templates') do
11
+ expect(Qualys::Report.templates.first['ID']).to eq '91078694'
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '#find_by_id' do
17
+ it 'loads the report' do
18
+ VCR.use_cassette('templates') do
19
+ VCR.use_cassette('load_global_report') do
20
+ expect(Qualys::Report.find_by_id(4_888_430)).to be_kind_of Qualys::Report
21
+ end
22
+ end
23
+ end
24
+
25
+ it 'returns nil when the report does not exist ' do
26
+ VCR.use_cassette('templates') do
27
+ VCR.use_cassette('try_load_not_existing_report') do
28
+ expect(Qualys::Report.find_by_id(4_888_480)).to be_nil
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ describe '#create_global_report' do
35
+ it 'gets the report id' do
36
+ VCR.use_cassette('templates') do
37
+ VCR.use_cassette('create_global_report') do
38
+ expect(Qualys::Report.create_global_report).to eq '4888438'
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '#global_report' do
45
+ it 'loads the report' do
46
+ VCR.use_cassette('templates') do
47
+ VCR.use_cassette('global_report') do
48
+ stub_const('Qualys::Report::TIMEOUT', 0)
49
+ expect(Qualys::Report.global_report).to be_kind_of(Qualys::Report)
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ describe '#hosts' do
56
+ it 'gets all the host' do
57
+ VCR.use_cassette('templates') do
58
+ VCR.use_cassette('global_report') do
59
+ stub_const('Qualys::Report::TIMEOUT', 0)
60
+ expect(report.hosts).to all(be_kind_of(Qualys::Host))
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Qualys::Scans, type: :model do
6
+ let(:scans) { Qualys::Scans.all }
7
+
8
+ describe '#all' do
9
+ it 'gets all the scans' do
10
+ VCR.use_cassette('scans') do
11
+ expect(scans.size).to eq 5
12
+ expect(scans).to all(be_an(Qualys::Scan))
13
+ end
14
+ end
15
+
16
+ it 'does not return scan if there is no' do
17
+ VCR.use_cassette('emptyscans') do
18
+ expect(scans).to eq []
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '#get' do
24
+ it 'gets the scan' do
25
+ VCR.use_cassette('get') do
26
+ details = Qualys::Scans.get('scan/1512633883.79354')
27
+ expect(details.first.keys).to include('ip', 'dns', 'netbios', 'qid', 'instance',
28
+ 'protocol', 'port', 'ssl', 'fqdn')
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ RSpec.describe Qualys::Scan, type: :model do
35
+ let(:scan) { Qualys::Scans.all[1] }
36
+ let(:error_scan) { Qualys::Scans.all[0] }
37
+
38
+ describe '#initialize' do
39
+ it 'has all fields filled' do
40
+ VCR.use_cassette('scan') do
41
+ expect(scan.ref).to eq 'scan/1512633883.79354'
42
+ expect(scan.title).to eq 'shellshock 20171207'
43
+ expect(scan.type).to eq 'On-Demand'
44
+ expect(scan.date).to eq '2017-12-07T08:04:43Z'
45
+ expect(scan.duration).to eq '00:07:02'
46
+ expect(scan.status).to eq 'Finished'
47
+ expect(scan.target).to eq '47.69.112.62'
48
+ expect(scan.user).to eq 'thomas'
49
+ end
50
+ end
51
+ end
52
+
53
+ describe '#details' do
54
+ it 'returns the details' do
55
+ VCR.use_cassette('scan') do
56
+ VCR.use_cassette('get') do
57
+ expect(scan.details.first.keys).to include('ip', 'dns', 'netbios', 'qid', 'instance',
58
+ 'protocol', 'port', 'ssl', 'fqdn')
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ describe '#finished' do
65
+ it 'returns returns a bolean' do
66
+ VCR.use_cassette('scan') do
67
+ expect(scan.finished?).to be true
68
+ end
69
+
70
+ VCR.use_cassette('scan') do
71
+ expect(error_scan.finished?).to be false
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'qualys/version'
4
+
5
+ require 'spec_helper'
6
+
7
+ describe Qualys do
8
+ it 'has a version' do
9
+ expect(Qualys).to be_const_defined('VERSION')
10
+ end
11
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Qualys::Vulnerability, type: :model do
6
+ let(:vulnerabilities) { Qualys::Report.global_report.hosts.first.vulnerabilities }
7
+ let(:vulnerability) { vulnerabilities[0] }
8
+ let(:vulnerability_with_cve) { vulnerabilities[5] }
9
+ let(:rich_vulnerability) { vulnerabilities[11] }
10
+
11
+ describe '#initialize' do
12
+ it 'initialize all elements for a basic vulnerability' do
13
+ stub_const('Qualys::Report::TIMEOUT', 0)
14
+ VCR.use_cassette('templates') do
15
+ VCR.use_cassette('global_report') do
16
+ expect(vulnerability).to be_kind_of(Qualys::Vulnerability)
17
+ expect(vulnerability.qid).to eq 'qid_38173'
18
+ expect(vulnerability.type).to eq 'Vuln'
19
+ expect(vulnerability.port).to eq '25'
20
+ expect(vulnerability.service).to eq 'smtp'
21
+ expect(vulnerability.protocol).to eq 'tcp'
22
+ expect(vulnerability.ssl).to eq 'true'
23
+ expect(vulnerability.result).to eq 'Certificate #0 CN=localhost.localdomain self signed certificate'
24
+ expect(vulnerability.first_found).to eq '2017-12-07T08:12:19Z'
25
+ expect(vulnerability.last_found).to eq '2017-12-07T08:12:19Z'
26
+ expect(vulnerability.times_found).to eq '1'
27
+ expect(vulnerability.status).to eq 'New'
28
+ end
29
+ end
30
+ end
31
+
32
+ it 'initializes the details' do
33
+ stub_const('Qualys::Report::TIMEOUT', 0)
34
+ VCR.use_cassette('templates') do
35
+ VCR.use_cassette('global_report') do
36
+ expect(vulnerability.details['id']).to eq vulnerability.qid
37
+ expect(vulnerability.cve_code_list).to be_nil
38
+ expect(vulnerability.title).to eq 'SSL Certificate - Signature Verification Failed Vulnerability'
39
+ expect(vulnerability.severity).to eq '2'
40
+ expect(vulnerability.category).to eq 'General remote services'
41
+ expect(vulnerability.threat).to start_with 'An SSL Certificate associates an entity (person, organization'
42
+ expect(vulnerability.impact).to start_with 'By exploiting this vulnerability, man-in-the-middle attacks'
43
+ expect(vulnerability.solution).to start_with 'Please install a server certificate signed by a trusted'
44
+ expect(vulnerability.pci_flag).to eq '1'
45
+ expect(vulnerability.correlation).to be_nil
46
+ expect(vulnerability.vendor_reference_list).to be_nil
47
+ expect(vulnerability.last_update).to be_nil
48
+ expect(vulnerability.url).to eq 'https://qualysguard.qualys.eu/fo/common/vuln_info.php?id=38173'
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Qualys do
4
+ describe '#configure' do
5
+ it 'configures' do
6
+ expect do
7
+ Qualys.configure do |config|
8
+ config.username = 'Thomas'
9
+ config.password = 'verysafepass'
10
+ end
11
+ end.not_to raise_error
12
+
13
+ expect do
14
+ Qualys.configure do |config|
15
+ config.password = nil
16
+ end
17
+ end.to raise_error("Configuration parameter missing: 'password'. Please add it to the Qualys.configure block")
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,37 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'qualys'
5
+ require 'vcr'
6
+
7
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ Coveralls::SimpleCov::Formatter
10
+ ])
11
+ SimpleCov.start
12
+
13
+ VCR.configure do |config|
14
+ config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
15
+ config.hook_into :webmock
16
+ end
17
+
18
+ RSpec.configure do |config|
19
+ config.before(:suite) do
20
+ Qualys.configure do |qualys_config|
21
+ qualys_config.username = 'Thomas'
22
+ qualys_config.password = 'thomasPassword'
23
+ end
24
+
25
+ Qualys::Api.base_uri = 'https://qualysapi.qualys.eu/api/2.0/fo/'
26
+
27
+ VCR.use_cassette('login') do
28
+ Qualys::Auth.login
29
+ end
30
+ end
31
+
32
+ config.after(:suite) do
33
+ VCR.use_cassette('logout') do
34
+ Qualys::Auth.logout
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qualys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Mackintosh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-25 00:00:00.000000000 Z
11
+ date: 2017-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: json
14
+ name: erubis
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,21 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: erubis
28
+ name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '0.15'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '0.15'
41
41
  - !ruby/object:Gem::Dependency
42
- name: httparty
42
+ name: json
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: vcr
98
+ name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: webmock
112
+ name: vcr
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: webmock
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -143,10 +143,12 @@ extensions: []
143
143
  extra_rdoc_files: []
144
144
  files:
145
145
  - ".gitignore"
146
- - ".rock.yml"
147
146
  - ".rspec"
147
+ - ".rubocop.yml"
148
+ - ".rubocop_todo.yml"
148
149
  - ".travis.yml"
149
150
  - Gemfile
151
+ - Gemfile.lock
150
152
  - LICENSE.txt
151
153
  - README.md
152
154
  - Rakefile
@@ -156,10 +158,33 @@ files:
156
158
  - lib/qualys/auth.rb
157
159
  - lib/qualys/compliance.rb
158
160
  - lib/qualys/config.rb
159
- - lib/qualys/reports.rb
161
+ - lib/qualys/host.rb
162
+ - lib/qualys/report.rb
160
163
  - lib/qualys/scans.rb
161
164
  - lib/qualys/version.rb
165
+ - lib/qualys/vulnerability.rb
162
166
  - qualys.gemspec
167
+ - spec/fixtures/vcr_cassettes/api_get.yml
168
+ - spec/fixtures/vcr_cassettes/create_global_report.yml
169
+ - spec/fixtures/vcr_cassettes/emptyscans.yml
170
+ - spec/fixtures/vcr_cassettes/get.yml
171
+ - spec/fixtures/vcr_cassettes/global_report.yml
172
+ - spec/fixtures/vcr_cassettes/load_global_report.yml
173
+ - spec/fixtures/vcr_cassettes/login.yml
174
+ - spec/fixtures/vcr_cassettes/logout.yml
175
+ - spec/fixtures/vcr_cassettes/scan.yml
176
+ - spec/fixtures/vcr_cassettes/scans.yml
177
+ - spec/fixtures/vcr_cassettes/templates.yml
178
+ - spec/fixtures/vcr_cassettes/try_load_not_existing_report.yml
179
+ - spec/fixtures/vcr_cassettes/unlogged.yml
180
+ - spec/fixtures/vcr_cassettes/wrong.yml
181
+ - spec/qualys/api_spec.rb
182
+ - spec/qualys/report_spec.rb
183
+ - spec/qualys/scans_spec.rb
184
+ - spec/qualys/version_spec.rb
185
+ - spec/qualys/vulnerability_spec.rb
186
+ - spec/qualys_spec.rb
187
+ - spec/spec_helper.rb
163
188
  homepage: http://github.com/mikemackintosh/ruby-qualys
164
189
  licenses:
165
190
  - MIT
@@ -184,4 +209,25 @@ rubygems_version: 2.6.11
184
209
  signing_key:
185
210
  specification_version: 4
186
211
  summary: qualys API Client
187
- test_files: []
212
+ test_files:
213
+ - spec/fixtures/vcr_cassettes/api_get.yml
214
+ - spec/fixtures/vcr_cassettes/create_global_report.yml
215
+ - spec/fixtures/vcr_cassettes/emptyscans.yml
216
+ - spec/fixtures/vcr_cassettes/get.yml
217
+ - spec/fixtures/vcr_cassettes/global_report.yml
218
+ - spec/fixtures/vcr_cassettes/load_global_report.yml
219
+ - spec/fixtures/vcr_cassettes/login.yml
220
+ - spec/fixtures/vcr_cassettes/logout.yml
221
+ - spec/fixtures/vcr_cassettes/scan.yml
222
+ - spec/fixtures/vcr_cassettes/scans.yml
223
+ - spec/fixtures/vcr_cassettes/templates.yml
224
+ - spec/fixtures/vcr_cassettes/try_load_not_existing_report.yml
225
+ - spec/fixtures/vcr_cassettes/unlogged.yml
226
+ - spec/fixtures/vcr_cassettes/wrong.yml
227
+ - spec/qualys/api_spec.rb
228
+ - spec/qualys/report_spec.rb
229
+ - spec/qualys/scans_spec.rb
230
+ - spec/qualys/version_spec.rb
231
+ - spec/qualys/vulnerability_spec.rb
232
+ - spec/qualys_spec.rb
233
+ - spec/spec_helper.rb