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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +40 -0
  3. data/lib/{palo-alto → palo_alto}/client/version.rb +1 -1
  4. data/lib/{palo-alto → palo_alto}/client.rb +3 -3
  5. data/lib/{palo-alto/common/base-api.rb → palo_alto/common/base_api.rb} +0 -0
  6. data/lib/{palo-alto → palo_alto}/helpers/rest.rb +1 -1
  7. data/lib/{palo-alto → palo_alto}/models/address.rb +0 -0
  8. data/lib/{palo-alto/models/address-group.rb → palo_alto/models/address_group.rb} +0 -0
  9. data/lib/{palo-alto → palo_alto}/models/device.rb +0 -0
  10. data/lib/palo_alto/models/log_entry.rb +93 -0
  11. data/lib/{palo-alto → palo_alto}/models/rulebase.rb +0 -0
  12. data/lib/palo_alto/models/system_log_entry.rb +29 -0
  13. data/lib/palo_alto/models/traffic_log_entry.rb +33 -0
  14. data/lib/{palo-alto/models/virtual-system.rb → palo_alto/models/virtual_system.rb} +0 -0
  15. data/lib/{palo-alto/v6/address-api.rb → palo_alto/v6/address_api.rb} +1 -1
  16. data/lib/{palo-alto/v6/address-group-api.rb → palo_alto/v6/address_group_api.rb} +2 -2
  17. data/lib/{palo-alto → palo_alto}/v6/api.rb +6 -4
  18. data/lib/{palo-alto/v6/device-api.rb → palo_alto/v6/device_api.rb} +2 -2
  19. data/lib/palo_alto/v6/log_api.rb +189 -0
  20. data/lib/{palo-alto/v6/virtual-system-api.rb → palo_alto/v6/virtual_system_api.rb} +4 -4
  21. data/ruby-paloalto-client.gemspec +1 -1
  22. data/spec/fixtures/blank_traffic_logs.xml +27 -0
  23. data/spec/fixtures/log_complete.xml +81 -0
  24. data/spec/fixtures/log_in_progress.xml +28 -0
  25. data/spec/fixtures/log_job.xml +8 -0
  26. data/spec/fixtures/missing_type_logs.xml +29 -0
  27. data/spec/fixtures/pending_traffic_logs.xml +23 -0
  28. data/spec/fixtures/system_logs.xml +61 -0
  29. data/spec/fixtures/traffic_logs.xml +139 -0
  30. data/spec/fixtures/unsupported_log_attribute.xml +33 -0
  31. data/spec/fixtures/unsupported_logs.xml +32 -0
  32. data/spec/lib/palo-alto/client_spec.rb +1 -1
  33. data/spec/lib/palo-alto/common/base_api_spec.rb +2 -2
  34. data/spec/lib/palo-alto/helpers/rest_spec.rb +2 -2
  35. data/spec/lib/palo-alto/models/address_group_spec.rb +1 -1
  36. data/spec/lib/palo-alto/models/address_spec.rb +1 -1
  37. data/spec/lib/palo-alto/models/device_spec.rb +1 -1
  38. data/spec/lib/palo-alto/models/log_entry_spec.rb +86 -0
  39. data/spec/lib/palo-alto/models/rulebase_spec.rb +1 -1
  40. data/spec/lib/palo-alto/models/system_log_entry_spec.rb +18 -0
  41. data/spec/lib/palo-alto/models/traffic_log_entry_spec.rb +18 -0
  42. data/spec/lib/palo-alto/models/virtual_system_spec.rb +1 -1
  43. data/spec/lib/palo-alto/v6/address_api_spec.rb +2 -2
  44. data/spec/lib/palo-alto/v6/address_group_api_spec.rb +4 -4
  45. data/spec/lib/palo-alto/v6/api_spec.rb +1 -1
  46. data/spec/lib/palo-alto/v6/device_api_spec.rb +3 -3
  47. data/spec/lib/palo-alto/v6/log_api_spec.rb +218 -0
  48. data/spec/lib/palo-alto/v6/virtual_system_api_spec.rb +2 -2
  49. data/spec/spec_helper.rb +1 -0
  50. 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
@@ -1,5 +1,5 @@
1
- require "palo-alto/v6/virtual-system-api"
2
- require "palo-alto/helpers/rest"
1
+ require "palo_alto/v6/virtual_system_api"
2
+ require "palo_alto/helpers/rest"
3
3
  require "nokogiri"
4
4
 
5
5
  describe "PaloAlto::V6::VirtualSystemApi" do
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "fakeweb"
2
2
  require "simplecov"
3
+ require "nokogiri"
3
4
 
4
5
  SimpleCov.start do
5
6
  add_filter "/spec"
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.1
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-03-01 00:00:00.000000000 Z
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/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-group.rb
131
- - lib/palo-alto/models/address.rb
132
- - lib/palo-alto/models/device.rb
133
- - lib/palo-alto/models/rulebase.rb
134
- - lib/palo-alto/models/virtual-system.rb
135
- - lib/palo-alto/v6/address-api.rb
136
- - lib/palo-alto/v6/address-group-api.rb
137
- - lib/palo-alto/v6/api.rb
138
- - lib/palo-alto/v6/device-api.rb
139
- - lib/palo-alto/v6/virtual-system-api.rb
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