ruby-paloalto-client 0.0.1 → 0.0.2
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/README.md +40 -0
- data/lib/{palo-alto → palo_alto}/client/version.rb +1 -1
- data/lib/{palo-alto → palo_alto}/client.rb +3 -3
- data/lib/{palo-alto/common/base-api.rb → palo_alto/common/base_api.rb} +0 -0
- data/lib/{palo-alto → palo_alto}/helpers/rest.rb +1 -1
- data/lib/{palo-alto → palo_alto}/models/address.rb +0 -0
- data/lib/{palo-alto/models/address-group.rb → palo_alto/models/address_group.rb} +0 -0
- data/lib/{palo-alto → palo_alto}/models/device.rb +0 -0
- data/lib/palo_alto/models/log_entry.rb +93 -0
- data/lib/{palo-alto → palo_alto}/models/rulebase.rb +0 -0
- data/lib/palo_alto/models/system_log_entry.rb +29 -0
- data/lib/palo_alto/models/traffic_log_entry.rb +33 -0
- data/lib/{palo-alto/models/virtual-system.rb → palo_alto/models/virtual_system.rb} +0 -0
- data/lib/{palo-alto/v6/address-api.rb → palo_alto/v6/address_api.rb} +1 -1
- data/lib/{palo-alto/v6/address-group-api.rb → palo_alto/v6/address_group_api.rb} +2 -2
- data/lib/{palo-alto → palo_alto}/v6/api.rb +6 -4
- data/lib/{palo-alto/v6/device-api.rb → palo_alto/v6/device_api.rb} +2 -2
- data/lib/palo_alto/v6/log_api.rb +189 -0
- data/lib/{palo-alto/v6/virtual-system-api.rb → palo_alto/v6/virtual_system_api.rb} +4 -4
- data/ruby-paloalto-client.gemspec +1 -1
- data/spec/fixtures/blank_traffic_logs.xml +27 -0
- data/spec/fixtures/log_complete.xml +81 -0
- data/spec/fixtures/log_in_progress.xml +28 -0
- data/spec/fixtures/log_job.xml +8 -0
- data/spec/fixtures/missing_type_logs.xml +29 -0
- data/spec/fixtures/pending_traffic_logs.xml +23 -0
- data/spec/fixtures/system_logs.xml +61 -0
- data/spec/fixtures/traffic_logs.xml +139 -0
- data/spec/fixtures/unsupported_log_attribute.xml +33 -0
- data/spec/fixtures/unsupported_logs.xml +32 -0
- data/spec/lib/palo-alto/client_spec.rb +1 -1
- data/spec/lib/palo-alto/common/base_api_spec.rb +2 -2
- data/spec/lib/palo-alto/helpers/rest_spec.rb +2 -2
- data/spec/lib/palo-alto/models/address_group_spec.rb +1 -1
- data/spec/lib/palo-alto/models/address_spec.rb +1 -1
- data/spec/lib/palo-alto/models/device_spec.rb +1 -1
- data/spec/lib/palo-alto/models/log_entry_spec.rb +86 -0
- data/spec/lib/palo-alto/models/rulebase_spec.rb +1 -1
- data/spec/lib/palo-alto/models/system_log_entry_spec.rb +18 -0
- data/spec/lib/palo-alto/models/traffic_log_entry_spec.rb +18 -0
- data/spec/lib/palo-alto/models/virtual_system_spec.rb +1 -1
- data/spec/lib/palo-alto/v6/address_api_spec.rb +2 -2
- data/spec/lib/palo-alto/v6/address_group_api_spec.rb +4 -4
- data/spec/lib/palo-alto/v6/api_spec.rb +1 -1
- data/spec/lib/palo-alto/v6/device_api_spec.rb +3 -3
- data/spec/lib/palo-alto/v6/log_api_spec.rb +218 -0
- data/spec/lib/palo-alto/v6/virtual_system_api_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -0
- metadata +48 -16
@@ -0,0 +1,218 @@
|
|
1
|
+
require "palo_alto/v6/log_api"
|
2
|
+
require "palo_alto/helpers/rest"
|
3
|
+
|
4
|
+
describe "PaloAlto::V6::LogApi" do
|
5
|
+
# dummy class to demonstrate functionality
|
6
|
+
class DummyClass
|
7
|
+
extend PaloAlto::V6::LogApi
|
8
|
+
|
9
|
+
def self.endpoint
|
10
|
+
"https://some.host:80/api/"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.auth_key
|
14
|
+
"OIGHOEIHT()*#Y"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ".generate_logs" do
|
19
|
+
let(:log_success_xml) { File.open(fixture_file("log_job.xml")).read }
|
20
|
+
|
21
|
+
describe "when specifying an invalid log_type parameter" do
|
22
|
+
it "raises an exception" do
|
23
|
+
expect{ DummyClass.generate_logs(log_type: "blah") }.to raise_exception
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "for invalid number of logs specified" do
|
28
|
+
it "raises an exception when number of logs is less than minimum" do
|
29
|
+
expect{ DummyClass.generate_logs(log_type: "traffic", num_logs: -1000) }.to raise_exception
|
30
|
+
end
|
31
|
+
|
32
|
+
it "raises an exception when number of logs is greater than maximum" do
|
33
|
+
expect{ DummyClass.generate_logs(log_type: "traffic", num_logs: 99999) }.to raise_exception
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "when the job is kicked off successfully" do
|
38
|
+
before do
|
39
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(log_success_xml)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns the job_id for the log job" do
|
43
|
+
expect(DummyClass.generate_logs(log_type: "traffic")).to eq("2014")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "when errors occur" do
|
48
|
+
it "raises an exception if an error occurred obtaining XML" do
|
49
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_raise(Exception)
|
50
|
+
expect{ DummyClass.generate_logs(log_type: "traffic") }.to raise_exception
|
51
|
+
end
|
52
|
+
|
53
|
+
it "raises an exception if an error occurred reported in the XML" do
|
54
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(File.open(fixture_file("failure.xml")).read)
|
55
|
+
expect{ DummyClass.generate_logs(log_type: "traffic") }.to raise_exception
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe ".log_job_complete?" do
|
61
|
+
let(:job_id) { "2015" }
|
62
|
+
let(:log_in_progress_xml) { File.open(fixture_file("log_in_progress.xml")).read }
|
63
|
+
let(:log_complete_xml) { File.open(fixture_file("log_complete.xml")).read }
|
64
|
+
|
65
|
+
describe "when a job is still in progress" do
|
66
|
+
before do
|
67
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(log_in_progress_xml)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "returns false" do
|
71
|
+
expect(DummyClass.log_job_complete?(job_id: job_id)).to eq(false)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "when a job has completed" do
|
76
|
+
before do
|
77
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(log_complete_xml)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "returns true" do
|
81
|
+
expect(DummyClass.log_job_complete?(job_id: job_id)).to eq(true)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "when errors occur" do
|
86
|
+
it "raises an exception if an error occurred obtaining XML" do
|
87
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_raise(Exception)
|
88
|
+
expect{ DummyClass.log_job_complete?(job_id: job_id) }.to raise_exception
|
89
|
+
end
|
90
|
+
|
91
|
+
it "raises an exception if an error occurred obtaining XML" do
|
92
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(File.open(fixture_file("failure.xml")).read)
|
93
|
+
expect{ DummyClass.log_job_complete?(job_id: job_id) }.to raise_exception
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe ".get_logs" do
|
99
|
+
let(:job_id) { "2014" }
|
100
|
+
let(:log_xml) { File.open(fixture_file("traffic_logs.xml")).read }
|
101
|
+
let(:blank_log_xml) { File.open(fixture_file("blank_traffic_logs.xml")).read }
|
102
|
+
let(:pending_log_xml) { File.open(fixture_file("pending_traffic_logs.xml")).read }
|
103
|
+
|
104
|
+
describe "when logs exist" do
|
105
|
+
it "parses the XML response into the required format" do
|
106
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(log_xml)
|
107
|
+
logs = DummyClass.get_logs(job_id: job_id)
|
108
|
+
|
109
|
+
expect(logs).to be_instance_of(Array)
|
110
|
+
expect(logs).to_not be_empty
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "when no logs exist" do
|
115
|
+
before do
|
116
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(blank_log_xml)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "returns an empty array" do
|
120
|
+
expect(DummyClass.get_logs(job_id: job_id)).to eq([])
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe "when the log job is not complete" do
|
125
|
+
before do
|
126
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(pending_log_xml)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "raises an Exception" do
|
130
|
+
expect{ DummyClass.get_logs(job_id: job_id) }.to raise_exception
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "when errors occur" do
|
135
|
+
it "raises an exception if an error occurred obtaining XML" do
|
136
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_raise(Exception)
|
137
|
+
expect{ DummyClass.get_logs(job_id: job_id) }.to raise_exception
|
138
|
+
end
|
139
|
+
|
140
|
+
it "raises an exception if an error occurred reported in the XML" do
|
141
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(File.open(fixture_file("failure.xml")).read)
|
142
|
+
expect{ DummyClass.get_logs(job_id: job_id) }.to raise_exception
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe "private functions" do
|
148
|
+
describe "get_log_xml" do
|
149
|
+
let(:job_id) { "2014" }
|
150
|
+
let(:log_xml) { File.open(fixture_file("traffic_logs.xml")).read }
|
151
|
+
let(:invalid_log_xml) { File.open(fixture_file("invalid_format.xml")).read }
|
152
|
+
|
153
|
+
describe "for valid XML data" do
|
154
|
+
it "parses the XML response into the required format" do
|
155
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(log_xml)
|
156
|
+
logs = DummyClass.send(:get_log_xml, { job_id: job_id })
|
157
|
+
|
158
|
+
expect(logs).to be_instance_of(Nokogiri::XML::Document)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "for nil response from PaloAlto service" do
|
163
|
+
before do
|
164
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(nil)
|
165
|
+
end
|
166
|
+
|
167
|
+
it "raises an Exception" do
|
168
|
+
expect{ DummyClass.send(:get_log_xml, { job_id: job_id }) }.to raise_exception
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe "for invalid XML data" do
|
173
|
+
before do
|
174
|
+
expect(PaloAlto::Helpers::Rest).to receive(:make_request).and_return(log_xml)
|
175
|
+
expect(Nokogiri::XML::Document).to receive(:parse).and_raise(Exception)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "raises an Exception" do
|
179
|
+
expect{ DummyClass.send(:get_log_xml, { job_id: job_id }) }.to raise_exception
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
describe "get_log_xml_response_code" do
|
185
|
+
let(:log_xml) { File.open(fixture_file("traffic_logs.xml")).read }
|
186
|
+
let(:xml_data) { Nokogiri::XML(log_xml) }
|
187
|
+
|
188
|
+
describe "for a valid Nokogiri::XML::Document" do
|
189
|
+
it "returns the response code" do
|
190
|
+
expect(DummyClass.send(:get_log_xml_response_code, { xml_data: xml_data })).to eq("success")
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
describe "for an input type that is not a Nokogiri::XML::Document" do
|
195
|
+
it "raises an Exception" do
|
196
|
+
expect{ DummyClass.send(:get_log_xml_response_code, { xml_data: "test" }) }.to raise_exception
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
describe "get_log_job_status" do
|
202
|
+
let(:log_xml) { File.open(fixture_file("traffic_logs.xml")).read }
|
203
|
+
let(:xml_data) { Nokogiri::XML(log_xml) }
|
204
|
+
|
205
|
+
describe "for a valid Nokogiri::XML::Document" do
|
206
|
+
it "returns the response code" do
|
207
|
+
expect(DummyClass.send(:get_log_job_status, { xml_data: xml_data })).to eq("FIN")
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
describe "for an input type that is not a Nokogiri::XML::Document" do
|
212
|
+
it "raises an Exception" do
|
213
|
+
expect{ DummyClass.send(:get_log_job_status, { xml_data: "test" }) }.to raise_exception
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-paloalto-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Karimi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -123,34 +123,48 @@ files:
|
|
123
123
|
- LICENSE.txt
|
124
124
|
- README.md
|
125
125
|
- Rakefile
|
126
|
-
- lib/
|
127
|
-
- lib/
|
128
|
-
- lib/
|
129
|
-
- lib/
|
130
|
-
- lib/
|
131
|
-
- lib/
|
132
|
-
- lib/
|
133
|
-
- lib/
|
134
|
-
- lib/
|
135
|
-
- lib/
|
136
|
-
- lib/
|
137
|
-
- lib/
|
138
|
-
- lib/
|
139
|
-
- lib/
|
126
|
+
- lib/palo_alto/client.rb
|
127
|
+
- lib/palo_alto/client/version.rb
|
128
|
+
- lib/palo_alto/common/base_api.rb
|
129
|
+
- lib/palo_alto/helpers/rest.rb
|
130
|
+
- lib/palo_alto/models/address.rb
|
131
|
+
- lib/palo_alto/models/address_group.rb
|
132
|
+
- lib/palo_alto/models/device.rb
|
133
|
+
- lib/palo_alto/models/log_entry.rb
|
134
|
+
- lib/palo_alto/models/rulebase.rb
|
135
|
+
- lib/palo_alto/models/system_log_entry.rb
|
136
|
+
- lib/palo_alto/models/traffic_log_entry.rb
|
137
|
+
- lib/palo_alto/models/virtual_system.rb
|
138
|
+
- lib/palo_alto/v6/address_api.rb
|
139
|
+
- lib/palo_alto/v6/address_group_api.rb
|
140
|
+
- lib/palo_alto/v6/api.rb
|
141
|
+
- lib/palo_alto/v6/device_api.rb
|
142
|
+
- lib/palo_alto/v6/log_api.rb
|
143
|
+
- lib/palo_alto/v6/virtual_system_api.rb
|
140
144
|
- ruby-paloalto-client.gemspec
|
141
145
|
- spec/fixtures/address_groups.xml
|
142
146
|
- spec/fixtures/addresses.xml
|
143
147
|
- spec/fixtures/blank_address_groups.xml
|
144
148
|
- spec/fixtures/blank_addresses.xml
|
145
149
|
- spec/fixtures/blank_devices.xml
|
150
|
+
- spec/fixtures/blank_traffic_logs.xml
|
146
151
|
- spec/fixtures/blank_virtual_systems.xml
|
147
152
|
- spec/fixtures/devices.xml
|
148
153
|
- spec/fixtures/failure.xml
|
154
|
+
- spec/fixtures/log_complete.xml
|
155
|
+
- spec/fixtures/log_in_progress.xml
|
156
|
+
- spec/fixtures/log_job.xml
|
157
|
+
- spec/fixtures/missing_type_logs.xml
|
149
158
|
- spec/fixtures/no_address_group_virtual_systems.xml
|
150
159
|
- spec/fixtures/no_address_virtual_systems.xml
|
151
160
|
- spec/fixtures/no_members_address_groups.xml
|
152
161
|
- spec/fixtures/no_rulebase_virtual_systems.xml
|
153
162
|
- spec/fixtures/no_vsys_devices.xml
|
163
|
+
- spec/fixtures/pending_traffic_logs.xml
|
164
|
+
- spec/fixtures/system_logs.xml
|
165
|
+
- spec/fixtures/traffic_logs.xml
|
166
|
+
- spec/fixtures/unsupported_log_attribute.xml
|
167
|
+
- spec/fixtures/unsupported_logs.xml
|
154
168
|
- spec/fixtures/virtual_systems.xml
|
155
169
|
- spec/lib/palo-alto/client_spec.rb
|
156
170
|
- spec/lib/palo-alto/common/base_api_spec.rb
|
@@ -158,12 +172,16 @@ files:
|
|
158
172
|
- spec/lib/palo-alto/models/address_group_spec.rb
|
159
173
|
- spec/lib/palo-alto/models/address_spec.rb
|
160
174
|
- spec/lib/palo-alto/models/device_spec.rb
|
175
|
+
- spec/lib/palo-alto/models/log_entry_spec.rb
|
161
176
|
- spec/lib/palo-alto/models/rulebase_spec.rb
|
177
|
+
- spec/lib/palo-alto/models/system_log_entry_spec.rb
|
178
|
+
- spec/lib/palo-alto/models/traffic_log_entry_spec.rb
|
162
179
|
- spec/lib/palo-alto/models/virtual_system_spec.rb
|
163
180
|
- spec/lib/palo-alto/v6/address_api_spec.rb
|
164
181
|
- spec/lib/palo-alto/v6/address_group_api_spec.rb
|
165
182
|
- spec/lib/palo-alto/v6/api_spec.rb
|
166
183
|
- spec/lib/palo-alto/v6/device_api_spec.rb
|
184
|
+
- spec/lib/palo-alto/v6/log_api_spec.rb
|
167
185
|
- spec/lib/palo-alto/v6/virtual_system_api_spec.rb
|
168
186
|
- spec/spec_helper.rb
|
169
187
|
homepage: ''
|
@@ -196,14 +214,24 @@ test_files:
|
|
196
214
|
- spec/fixtures/blank_address_groups.xml
|
197
215
|
- spec/fixtures/blank_addresses.xml
|
198
216
|
- spec/fixtures/blank_devices.xml
|
217
|
+
- spec/fixtures/blank_traffic_logs.xml
|
199
218
|
- spec/fixtures/blank_virtual_systems.xml
|
200
219
|
- spec/fixtures/devices.xml
|
201
220
|
- spec/fixtures/failure.xml
|
221
|
+
- spec/fixtures/log_complete.xml
|
222
|
+
- spec/fixtures/log_in_progress.xml
|
223
|
+
- spec/fixtures/log_job.xml
|
224
|
+
- spec/fixtures/missing_type_logs.xml
|
202
225
|
- spec/fixtures/no_address_group_virtual_systems.xml
|
203
226
|
- spec/fixtures/no_address_virtual_systems.xml
|
204
227
|
- spec/fixtures/no_members_address_groups.xml
|
205
228
|
- spec/fixtures/no_rulebase_virtual_systems.xml
|
206
229
|
- spec/fixtures/no_vsys_devices.xml
|
230
|
+
- spec/fixtures/pending_traffic_logs.xml
|
231
|
+
- spec/fixtures/system_logs.xml
|
232
|
+
- spec/fixtures/traffic_logs.xml
|
233
|
+
- spec/fixtures/unsupported_log_attribute.xml
|
234
|
+
- spec/fixtures/unsupported_logs.xml
|
207
235
|
- spec/fixtures/virtual_systems.xml
|
208
236
|
- spec/lib/palo-alto/client_spec.rb
|
209
237
|
- spec/lib/palo-alto/common/base_api_spec.rb
|
@@ -211,11 +239,15 @@ test_files:
|
|
211
239
|
- spec/lib/palo-alto/models/address_group_spec.rb
|
212
240
|
- spec/lib/palo-alto/models/address_spec.rb
|
213
241
|
- spec/lib/palo-alto/models/device_spec.rb
|
242
|
+
- spec/lib/palo-alto/models/log_entry_spec.rb
|
214
243
|
- spec/lib/palo-alto/models/rulebase_spec.rb
|
244
|
+
- spec/lib/palo-alto/models/system_log_entry_spec.rb
|
245
|
+
- spec/lib/palo-alto/models/traffic_log_entry_spec.rb
|
215
246
|
- spec/lib/palo-alto/models/virtual_system_spec.rb
|
216
247
|
- spec/lib/palo-alto/v6/address_api_spec.rb
|
217
248
|
- spec/lib/palo-alto/v6/address_group_api_spec.rb
|
218
249
|
- spec/lib/palo-alto/v6/api_spec.rb
|
219
250
|
- spec/lib/palo-alto/v6/device_api_spec.rb
|
251
|
+
- spec/lib/palo-alto/v6/log_api_spec.rb
|
220
252
|
- spec/lib/palo-alto/v6/virtual_system_api_spec.rb
|
221
253
|
- spec/spec_helper.rb
|