ronin-exploits 1.0.0.beta2 → 1.0.0.beta3

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -0
  3. data/README.md +4 -0
  4. data/gemspec.yml +3 -1
  5. data/lib/ronin/exploits/cli/commands/run.rb +55 -5
  6. data/lib/ronin/exploits/version.rb +1 -1
  7. data/ronin-exploits.gemspec +2 -1
  8. metadata +10 -115
  9. data/spec/advisory_spec.rb +0 -71
  10. data/spec/cli/exploit_command_spec.rb +0 -68
  11. data/spec/cli/exploit_methods_spec.rb +0 -208
  12. data/spec/cli/ruby_shell_spec.rb +0 -14
  13. data/spec/client_side_web_vuln_spec.rb +0 -117
  14. data/spec/exploit_spec.rb +0 -538
  15. data/spec/exploits_spec.rb +0 -8
  16. data/spec/heap_overflow_spec.rb +0 -14
  17. data/spec/lfi_spec.rb +0 -162
  18. data/spec/loot/file_spec.rb +0 -131
  19. data/spec/loot_spec.rb +0 -138
  20. data/spec/memory_corruption_spec.rb +0 -22
  21. data/spec/metadata/arch_spec.rb +0 -82
  22. data/spec/metadata/cookie_param_spec.rb +0 -67
  23. data/spec/metadata/default_filename_spec.rb +0 -62
  24. data/spec/metadata/default_port_spec.rb +0 -62
  25. data/spec/metadata/header_name_spec.rb +0 -67
  26. data/spec/metadata/os_spec.rb +0 -164
  27. data/spec/metadata/shouts_spec.rb +0 -100
  28. data/spec/metadata/url_path_spec.rb +0 -67
  29. data/spec/metadata/url_query_param_spec.rb +0 -67
  30. data/spec/mixins/binary_spec.rb +0 -129
  31. data/spec/mixins/build_dir.rb +0 -66
  32. data/spec/mixins/file_builder_spec.rb +0 -67
  33. data/spec/mixins/format_string_spec.rb +0 -44
  34. data/spec/mixins/has_payload_spec.rb +0 -333
  35. data/spec/mixins/has_targets_spec.rb +0 -434
  36. data/spec/mixins/html_spec.rb +0 -772
  37. data/spec/mixins/http_spec.rb +0 -1227
  38. data/spec/mixins/loot_spec.rb +0 -20
  39. data/spec/mixins/nops_spec.rb +0 -165
  40. data/spec/mixins/remote_tcp_spec.rb +0 -217
  41. data/spec/mixins/remote_udp_spec.rb +0 -217
  42. data/spec/mixins/seh_spec.rb +0 -89
  43. data/spec/mixins/stack_overflow_spec.rb +0 -87
  44. data/spec/mixins/text_spec.rb +0 -43
  45. data/spec/open_redirect_spec.rb +0 -71
  46. data/spec/params/base_url_spec.rb +0 -71
  47. data/spec/params/bind_host_spec.rb +0 -34
  48. data/spec/params/bind_port_spec.rb +0 -35
  49. data/spec/params/filename_spec.rb +0 -77
  50. data/spec/params/host_spec.rb +0 -34
  51. data/spec/params/port_spec.rb +0 -77
  52. data/spec/rfi_spec.rb +0 -107
  53. data/spec/seh_overflow_spec.rb +0 -18
  54. data/spec/spec_helper.rb +0 -8
  55. data/spec/sqli_spec.rb +0 -306
  56. data/spec/ssti_spec.rb +0 -121
  57. data/spec/stack_overflow_spec.rb +0 -18
  58. data/spec/target_spec.rb +0 -92
  59. data/spec/test_result_spec.rb +0 -32
  60. data/spec/use_after_free_spec.rb +0 -14
  61. data/spec/web_spec.rb +0 -12
  62. data/spec/web_vuln_spec.rb +0 -854
  63. data/spec/xss_spec.rb +0 -69
@@ -1,1227 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/exploits/mixins/http'
3
- require 'ronin/exploits/exploit'
4
-
5
- describe Ronin::Exploits::Mixins::HTTP do
6
- module TestMixinsHTTP
7
- class TestExploit < Ronin::Exploits::Exploit
8
- include Ronin::Exploits::Mixins::HTTP
9
- end
10
-
11
- class TestExploitWithDefaultHeaders < Ronin::Exploits::Exploit
12
- include Ronin::Exploits::Mixins::HTTP
13
-
14
- def http_headers
15
- {'X-Foo' => 'bar'}
16
- end
17
- end
18
- end
19
-
20
- let(:test_class) { TestMixinsHTTP::TestExploit }
21
-
22
- describe ".included" do
23
- subject { test_class }
24
-
25
- it "must define a 'http_proxy' param" do
26
- expect(subject.params[:http_proxy]).to_not be_nil
27
- expect(subject.params[:http_proxy].desc).to eq("The HTTP proxy to use")
28
- end
29
-
30
- it "must define a 'user_agent' param" do
31
- expect(subject.params[:user_agent]).to_not be_nil
32
- expect(subject.params[:user_agent].type).to be_kind_of(Ronin::Core::Params::Types::Enum)
33
- expect(subject.params[:user_agent].type.values).to eq(
34
- [
35
- :random,
36
- :chrome,
37
- :firefox,
38
- :safari,
39
- :linux,
40
- :macos,
41
- :windows,
42
- :iphone,
43
- :ipad,
44
- :android
45
- ] + Ronin::Support::Network::HTTP::UserAgents::ALIASES.keys
46
- )
47
- expect(subject.params[:user_agent].desc).to eq("The HTTP User-Agent to select")
48
- end
49
-
50
- it "must define a 'raw_user_agent' param" do
51
- expect(subject.params[:raw_user_agent]).to_not be_nil
52
- expect(subject.params[:raw_user_agent].desc).to eq("The raw HTTP User-Agent string to use")
53
- end
54
- end
55
-
56
- let(:base_url) { URI.parse("https://www.example.com/base") }
57
-
58
- subject do
59
- test_class.new(params: {base_url: base_url})
60
- end
61
-
62
- describe "#http_proxy" do
63
- let(:proxy) { 'http://example.com:8080' }
64
-
65
- subject do
66
- test_class.new(params: {base_url: base_url, http_proxy: proxy})
67
- end
68
-
69
- it "must return params[:http_proxy]" do
70
- expect(subject.http_proxy).to be(subject.params[:http_proxy])
71
- end
72
- end
73
-
74
- describe "#http_headers" do
75
- it "must return an empty Hash by default" do
76
- expect(subject.http_headers).to eq({})
77
- end
78
- end
79
-
80
- describe "#http_user_agent" do
81
- context "when params[:user_agent] is set" do
82
- let(:user_agent) { :random }
83
-
84
- subject do
85
- test_class.new(
86
- params: {
87
- base_url: base_url,
88
- user_agent: user_agent
89
- }
90
- )
91
- end
92
-
93
- it "must return params[:user_agent]" do
94
- expect(subject.http_user_agent).to be(subject.params[:user_agent])
95
- end
96
- end
97
-
98
- context "when params[:raw_user_agent] is set" do
99
- let(:raw_user_agent) { 'Mozilla/5.0 Foo Bar' }
100
-
101
- subject do
102
- test_class.new(
103
- params: {
104
- base_url: base_url,
105
- raw_user_agent: raw_user_agent
106
- }
107
- )
108
- end
109
-
110
- it "must return params[:raw_user_agent]" do
111
- expect(subject.http_user_agent).to be(
112
- subject.params[:raw_user_agent]
113
- )
114
- end
115
- end
116
-
117
- context "when both params[:user_agent] and params[:raw_user_agent] are set" do
118
- let(:user_agent) { :random }
119
- let(:raw_user_agent) { 'Mozilla/5.0 Foo Bar' }
120
-
121
- subject do
122
- test_class.new(
123
- params: {
124
- base_url: base_url,
125
- user_agent: user_agent,
126
- raw_user_agent: raw_user_agent
127
- }
128
- )
129
- end
130
-
131
- it "must return params[:raw_user_agent]" do
132
- expect(subject.http_user_agent).to be(
133
- subject.params[:raw_user_agent]
134
- )
135
- end
136
- end
137
- end
138
-
139
- describe "#http_cookie" do
140
- context "when the http_cookie param is set" do
141
- let(:cookie) { "foo=1; bar=2" }
142
-
143
- subject do
144
- test_class.new(
145
- params: {
146
- base_url: base_url,
147
- http_cookie: cookie
148
- }
149
- )
150
- end
151
-
152
- it "must return params[:http_cookie]" do
153
- expect(subject.http_cookie).to eq(cookie)
154
- end
155
- end
156
- end
157
-
158
- let(:proxy) { URI('https://proxy.example.com:8080') }
159
- let(:raw_user_agent) { 'Mozilla/5.0 Foo Bar' }
160
- let(:cookie) { "foo=1; bar=2" }
161
- let(:user) { 'bob' }
162
- let(:password) { 'secret' }
163
-
164
- subject do
165
- test_class.new(
166
- params: {
167
- base_url: base_url,
168
- http_proxy: proxy,
169
- raw_user_agent: raw_user_agent,
170
- http_cookie: cookie,
171
- http_user: user,
172
- http_password: password
173
- }
174
- )
175
- end
176
-
177
- describe "#http" do
178
- it "must call Ronin::Support::Network::HTTP.connect_uri with #params[:base_url], proxy: #http_proxy, headers: #http_headers, user_agent: #http_user_agent, cookie: #http_cookie, user: #http_user, password: #http_password" do
179
- expect(Ronin::Support::Network::HTTP).to receive(:connect_uri).with(
180
- subject.params[:base_url], proxy: subject.http_proxy,
181
- headers: subject.http_headers,
182
- user_agent: subject.http_user_agent,
183
- cookie: subject.http_cookie,
184
- user: subject.http_user,
185
- password: subject.http_password
186
- )
187
-
188
- subject.http
189
- end
190
-
191
- it "must return a Ronin::Support::Network::HTTP instance" do
192
- expect(subject.http).to be_kind_of(Ronin::Support::Network::HTTP)
193
- end
194
-
195
- it "must return the same instance each time" do
196
- expect(subject.http).to be(subject.http)
197
- end
198
-
199
- context "when #http_headers is overriden" do
200
- let(:test_class) { TestMixinsHTTP::TestExploitWithDefaultHeaders }
201
-
202
- it "must initialize #http.headers to the value of #http_headers" do
203
- expect(subject.http.headers).to eq(subject.http_headers)
204
- end
205
- end
206
- end
207
-
208
- describe "#http_request" do
209
- context "when given a request method and a path" do
210
- let(:request_method) { :get }
211
- let(:path) { '/foo' }
212
-
213
- it "must call #http.request with the request method and path" do
214
- expect(subject.http).to receive(:request).with(request_method,path)
215
-
216
- subject.http_request(request_method,path)
217
- end
218
-
219
- context "when debug messages are enabled" do
220
- before { Ronin::Support::CLI::Printing.debug = true }
221
-
222
- it "must print a debugging message" do
223
- url = subject.url_for(path)
224
-
225
- allow(subject.http).to receive(:request).with(
226
- request_method, path
227
- )
228
-
229
- expect(subject).to receive(:print_debug).with(
230
- "Sending #{request_method.upcase} request to #{url} ..."
231
- )
232
-
233
- subject.http_request(request_method,path)
234
- end
235
-
236
- after { Ronin::Support::CLI::Printing.debug = false }
237
- end
238
- end
239
- end
240
-
241
- describe "#http_response_status" do
242
- context "when given a request method and a path" do
243
- let(:request_method) { :get }
244
- let(:path) { '/foo' }
245
-
246
- it "must call #http.response_status with the request method and path" do
247
- expect(subject.http).to receive(:response_status).with(
248
- request_method, path
249
- )
250
-
251
- subject.http_response_status(request_method,path)
252
- end
253
-
254
- context "when debug messages are enabled" do
255
- before { Ronin::Support::CLI::Printing.debug = true }
256
-
257
- it "must print a debugging message" do
258
- url = subject.url_for(path)
259
-
260
- allow(subject.http).to receive(:response_status).with(
261
- request_method, path
262
- )
263
-
264
- expect(subject).to receive(:print_debug).with(
265
- "Checking response status for #{request_method.upcase} #{url} ..."
266
- )
267
-
268
- subject.http_response_status(request_method,path)
269
- end
270
-
271
- after { Ronin::Support::CLI::Printing.debug = false }
272
- end
273
- end
274
- end
275
-
276
- describe "#http_ok?" do
277
- context "when given a path" do
278
- let(:path) { '/foo' }
279
-
280
- it "must call #http.ok? with :head and the path" do
281
- expect(subject.http).to receive(:ok?).with(:head,path)
282
-
283
- subject.http_ok?(path)
284
- end
285
-
286
- context "when debug messages are enabled" do
287
- before { Ronin::Support::CLI::Printing.debug = true }
288
-
289
- it "must print a debugging message" do
290
- url = subject.url_for(path)
291
-
292
- allow(subject.http).to receive(:ok?).with(:head,path)
293
-
294
- expect(subject).to receive(:print_debug).with(
295
- "Checking if response status for HEAD #{url} is 200 ..."
296
- )
297
-
298
- subject.http_ok?(path)
299
- end
300
-
301
- after { Ronin::Support::CLI::Printing.debug = false }
302
- end
303
- end
304
-
305
- context "when given a request method and a path" do
306
- let(:request_method) { :get }
307
- let(:path) { '/foo' }
308
-
309
- it "must call #http.ok? with the request method and the path" do
310
- expect(subject.http).to receive(:ok?).with(request_method,path)
311
-
312
- subject.http_ok?(request_method,path)
313
- end
314
-
315
- context "when debug messages are enabled" do
316
- before { Ronin::Support::CLI::Printing.debug = true }
317
-
318
- it "must print a debugging message" do
319
- url = subject.url_for(path)
320
-
321
- allow(subject.http).to receive(:ok?).with(request_method,path)
322
-
323
- expect(subject).to receive(:print_debug).with(
324
- "Checking if response status for #{request_method.upcase} #{url} is 200 ..."
325
- )
326
-
327
- subject.http_ok?(request_method,path)
328
- end
329
-
330
- after { Ronin::Support::CLI::Printing.debug = false }
331
- end
332
- end
333
- end
334
-
335
- describe "#http_response_headers" do
336
- context "when given a path" do
337
- let(:request_method) { :get }
338
- let(:path) { '/foo' }
339
-
340
- it "must call #http.ok? with :head and the path" do
341
- expect(subject.http).to receive(:response_headers).with(:head,path)
342
-
343
- subject.http_response_headers(path)
344
- end
345
-
346
- context "when debug messages are enabled" do
347
- before { Ronin::Support::CLI::Printing.debug = true }
348
-
349
- it "must print a debugging message" do
350
- url = subject.url_for(path)
351
-
352
- allow(subject.http).to receive(:response_headers).with(:head,path)
353
-
354
- expect(subject).to receive(:print_debug).with(
355
- "Requesting response headers for HEAD #{url} ..."
356
- )
357
-
358
- subject.http_response_headers(path)
359
- end
360
-
361
- after { Ronin::Support::CLI::Printing.debug = false }
362
- end
363
- end
364
-
365
- context "when given a request method and a path" do
366
- let(:request_method) { :get }
367
- let(:path) { '/foo' }
368
-
369
- it "must call #http.ok? with the request method and the path" do
370
- expect(subject.http).to receive(:response_headers).with(
371
- request_method, path
372
- )
373
-
374
- subject.http_response_headers(request_method,path)
375
- end
376
-
377
- context "when debug messages are enabled" do
378
- before { Ronin::Support::CLI::Printing.debug = true }
379
-
380
- it "must print a debugging message" do
381
- url = subject.url_for(path)
382
-
383
- allow(subject.http).to receive(:response_headers).with(
384
- request_method, path
385
- )
386
-
387
- expect(subject).to receive(:print_debug).with(
388
- "Requesting response headers for #{request_method.upcase} #{url} ..."
389
- )
390
-
391
- subject.http_response_headers(request_method,path)
392
- end
393
-
394
- after { Ronin::Support::CLI::Printing.debug = false }
395
- end
396
- end
397
- end
398
-
399
- describe "#http_server_header" do
400
- context "when given a path" do
401
- let(:path) { '/foo' }
402
-
403
- it "must call #http.server_header with the path and method: :head" do
404
- expect(subject.http).to receive(:server_header).with(
405
- path, method: :head
406
- )
407
-
408
- subject.http_server_header(path)
409
- end
410
-
411
- context "when debug messages are enabled" do
412
- before { Ronin::Support::CLI::Printing.debug = true }
413
-
414
- it "must print a debugging message" do
415
- url = subject.url_for(path)
416
-
417
- allow(subject.http).to receive(:server_header).with(
418
- path, method: :head
419
- )
420
-
421
- expect(subject).to receive(:print_debug).with(
422
- "Requesting the 'Server' header for HEAD #{url} ..."
423
- )
424
-
425
- subject.http_server_header(path)
426
- end
427
-
428
- after { Ronin::Support::CLI::Printing.debug = false }
429
- end
430
- end
431
-
432
- context "when given a path and the method: keyword argument" do
433
- let(:request_method) { :get }
434
- let(:path) { '/foo' }
435
-
436
- it "must call #http.server_header with the path and the method: keyword argument" do
437
- expect(subject.http).to receive(:server_header).with(
438
- path, method: request_method
439
- )
440
-
441
- subject.http_server_header(path, method: request_method)
442
- end
443
-
444
- context "when debug messages are enabled" do
445
- before { Ronin::Support::CLI::Printing.debug = true }
446
-
447
- it "must print a debugging message" do
448
- url = subject.url_for(path)
449
-
450
- allow(subject.http).to receive(:server_header).with(
451
- path, method: request_method
452
- )
453
-
454
- expect(subject).to receive(:print_debug).with(
455
- "Requesting the 'Server' header for #{request_method.upcase} #{url} ..."
456
- )
457
-
458
- subject.http_server_header(path, method: request_method)
459
- end
460
-
461
- after { Ronin::Support::CLI::Printing.debug = false }
462
- end
463
- end
464
- end
465
-
466
- describe "#http_powered_by_header" do
467
- context "when given a path" do
468
- let(:path) { '/foo' }
469
-
470
- it "must call #http.powered_by_header with the path and method: :head" do
471
- expect(subject.http).to receive(:powered_by_header).with(
472
- path, method: :head
473
- )
474
-
475
- subject.http_powered_by_header(path)
476
- end
477
-
478
- context "when debug messages are enabled" do
479
- before { Ronin::Support::CLI::Printing.debug = true }
480
-
481
- it "must print a debugging message" do
482
- url = subject.url_for(path)
483
-
484
- allow(subject.http).to receive(:powered_by_header).with(
485
- path, method: :head
486
- )
487
-
488
- expect(subject).to receive(:print_debug).with(
489
- "Requesting the 'X-Powered-By' header for HEAD #{url} ..."
490
- )
491
-
492
- subject.http_powered_by_header(path)
493
- end
494
-
495
- after { Ronin::Support::CLI::Printing.debug = false }
496
- end
497
- end
498
-
499
- context "when given a path and a method: keyword argument" do
500
- let(:request_method) { :get }
501
- let(:path) { '/foo' }
502
-
503
- it "must call #http.powered_by_header with the path and the method: keyword argument" do
504
- expect(subject.http).to receive(:powered_by_header).with(
505
- path, method: request_method,
506
- )
507
-
508
- subject.http_powered_by_header(path, method: request_method)
509
- end
510
-
511
- context "when debug messages are enabled" do
512
- before { Ronin::Support::CLI::Printing.debug = true }
513
-
514
- it "must print a debugging message" do
515
- url = subject.url_for(path)
516
-
517
- allow(subject.http).to receive(:powered_by_header).with(
518
- path, method: request_method
519
- )
520
-
521
- expect(subject).to receive(:print_debug).with(
522
- "Requesting the 'X-Powered-By' header for #{request_method.upcase} #{url} ..."
523
- )
524
-
525
- subject.http_powered_by_header(path, method: request_method)
526
- end
527
-
528
- after { Ronin::Support::CLI::Printing.debug = false }
529
- end
530
- end
531
- end
532
-
533
- describe "#http_response_body" do
534
- context "when given a path" do
535
- let(:path) { '/foo' }
536
-
537
- it "must call #http.response_body with :head and the path" do
538
- expect(subject.http).to receive(:response_body).with(:get,path)
539
-
540
- subject.http_response_body(path)
541
- end
542
-
543
- context "when debug messages are enabled" do
544
- before { Ronin::Support::CLI::Printing.debug = true }
545
-
546
- it "must print a debugging message" do
547
- url = subject.url_for(path)
548
-
549
- allow(subject.http).to receive(:response_body).with(
550
- :get, path
551
- )
552
-
553
- expect(subject).to receive(:print_debug).with(
554
- "Requesting response body for GET #{url} ..."
555
- )
556
-
557
- subject.http_response_body(path)
558
- end
559
-
560
- after { Ronin::Support::CLI::Printing.debug = false }
561
- end
562
- end
563
-
564
- context "when given a request method and a path" do
565
- let(:request_method) { :head }
566
- let(:path) { '/foo' }
567
-
568
- it "must call #http.response_body with request method and the path" do
569
- expect(subject.http).to receive(:response_body).with(
570
- request_method, path
571
- )
572
-
573
- subject.http_response_body(request_method,path)
574
- end
575
-
576
- context "when debug messages are enabled" do
577
- before { Ronin::Support::CLI::Printing.debug = true }
578
-
579
- it "must print a debugging message" do
580
- url = subject.url_for(path)
581
-
582
- allow(subject.http).to receive(:response_body).with(
583
- request_method, path
584
- )
585
-
586
- expect(subject).to receive(:print_debug).with(
587
- "Requesting response body for #{request_method.upcase} #{url} ..."
588
- )
589
-
590
- subject.http_response_body(request_method,path)
591
- end
592
-
593
- after { Ronin::Support::CLI::Printing.debug = false }
594
- end
595
- end
596
- end
597
-
598
- describe "#http_copy" do
599
- context "when given a path" do
600
- let(:path) { '/foo' }
601
-
602
- it "must call #http.copy with the path" do
603
- expect(subject.http).to receive(:copy).with(path)
604
-
605
- subject.http_copy(path)
606
- end
607
-
608
- context "when debug messages are enabled" do
609
- before { Ronin::Support::CLI::Printing.debug = true }
610
-
611
- it "must print a debugging message" do
612
- url = subject.url_for(path)
613
-
614
- allow(subject.http).to receive(:copy).with(path)
615
-
616
- expect(subject).to receive(:print_debug).with(
617
- "Requesting COPY #{url} ..."
618
- )
619
-
620
- subject.http_copy(path)
621
- end
622
-
623
- after { Ronin::Support::CLI::Printing.debug = false }
624
- end
625
- end
626
- end
627
-
628
- describe "#http_delete" do
629
- context "when given a path" do
630
- let(:path) { '/foo' }
631
-
632
- it "must call #http.delete with the path" do
633
- expect(subject.http).to receive(:delete).with(path)
634
-
635
- subject.http_delete(path)
636
- end
637
-
638
- context "when debug messages are enabled" do
639
- before { Ronin::Support::CLI::Printing.debug = true }
640
-
641
- it "must print a debugging message" do
642
- url = subject.url_for(path)
643
-
644
- allow(subject.http).to receive(:delete).with(path)
645
-
646
- expect(subject).to receive(:print_debug).with(
647
- "Requesting DELETE #{url} ..."
648
- )
649
-
650
- subject.http_delete(path)
651
- end
652
-
653
- after { Ronin::Support::CLI::Printing.debug = false }
654
- end
655
- end
656
- end
657
-
658
- describe "#http_get" do
659
- context "when given a path" do
660
- let(:path) { '/foo' }
661
-
662
- it "must call #http.get with the path" do
663
- expect(subject.http).to receive(:get).with(path)
664
-
665
- subject.http_get(path)
666
- end
667
-
668
- context "when debug messages are enabled" do
669
- before { Ronin::Support::CLI::Printing.debug = true }
670
-
671
- it "must print a debugging message" do
672
- url = subject.url_for(path)
673
-
674
- allow(subject.http).to receive(:get).with(path)
675
-
676
- expect(subject).to receive(:print_debug).with(
677
- "Requesting GET #{url} ..."
678
- )
679
-
680
- subject.http_get(path)
681
- end
682
-
683
- after { Ronin::Support::CLI::Printing.debug = false }
684
- end
685
- end
686
- end
687
-
688
- describe "#http_get_headers" do
689
- context "when given a path" do
690
- let(:path) { '/foo' }
691
-
692
- it "must call #http.get_headers with the path" do
693
- expect(subject.http).to receive(:get_headers).with(path)
694
-
695
- subject.http_get_headers(path)
696
- end
697
-
698
- context "when debug messages are enabled" do
699
- before { Ronin::Support::CLI::Printing.debug = true }
700
-
701
- it "must print a debugging message" do
702
- url = subject.url_for(path)
703
-
704
- allow(subject.http).to receive(:get_headers).with(path)
705
-
706
- expect(subject).to receive(:print_debug).with(
707
- "Requesting headers for GET #{url} ..."
708
- )
709
-
710
- subject.http_get_headers(path)
711
- end
712
-
713
- after { Ronin::Support::CLI::Printing.debug = false }
714
- end
715
- end
716
- end
717
-
718
- describe "#http_get_cookies" do
719
- context "when given a path" do
720
- let(:path) { '/foo' }
721
-
722
- it "must call #http.get_cookies with the path" do
723
- expect(subject.http).to receive(:get_cookies).with(path)
724
-
725
- subject.http_get_cookies(path)
726
- end
727
-
728
- context "when debug messages are enabled" do
729
- before { Ronin::Support::CLI::Printing.debug = true }
730
-
731
- it "must print a debugging message" do
732
- url = subject.url_for(path)
733
-
734
- allow(subject.http).to receive(:get_cookies).with(path)
735
-
736
- expect(subject).to receive(:print_debug).with(
737
- "Getting cookies for #{url} ..."
738
- )
739
-
740
- subject.http_get_cookies(path)
741
- end
742
-
743
- after { Ronin::Support::CLI::Printing.debug = false }
744
- end
745
- end
746
- end
747
-
748
- describe "#http_get_body" do
749
- context "when given a path" do
750
- let(:path) { '/foo' }
751
-
752
- it "must call #http.get_body with the path" do
753
- expect(subject.http).to receive(:get_body).with(path)
754
-
755
- subject.http_get_body(path)
756
- end
757
-
758
- context "when debug messages are enabled" do
759
- before { Ronin::Support::CLI::Printing.debug = true }
760
-
761
- it "must print a debugging message" do
762
- url = subject.url_for(path)
763
-
764
- allow(subject.http).to receive(:get_body).with(path)
765
-
766
- expect(subject).to receive(:print_debug).with(
767
- "Requesting body for GET #{url} ..."
768
- )
769
-
770
- subject.http_get_body(path)
771
- end
772
-
773
- after { Ronin::Support::CLI::Printing.debug = false }
774
- end
775
- end
776
- end
777
-
778
- describe "#http_head" do
779
- context "when given a path" do
780
- let(:path) { '/foo' }
781
-
782
- it "must call #http.head with the path" do
783
- expect(subject.http).to receive(:head).with(path)
784
-
785
- subject.http_head(path)
786
- end
787
-
788
- context "when debug messages are enabled" do
789
- before { Ronin::Support::CLI::Printing.debug = true }
790
-
791
- it "must print a debugging message" do
792
- url = subject.url_for(path)
793
-
794
- allow(subject.http).to receive(:head).with(path)
795
-
796
- expect(subject).to receive(:print_debug).with(
797
- "Requesting HEAD #{url} ..."
798
- )
799
-
800
- subject.http_head(path)
801
- end
802
-
803
- after { Ronin::Support::CLI::Printing.debug = false }
804
- end
805
- end
806
- end
807
-
808
- describe "#http_lock" do
809
- context "when given a path" do
810
- let(:path) { '/foo' }
811
-
812
- it "must call #http.lock with the path" do
813
- expect(subject.http).to receive(:lock).with(path)
814
-
815
- subject.http_lock(path)
816
- end
817
-
818
- context "when debug messages are enabled" do
819
- before { Ronin::Support::CLI::Printing.debug = true }
820
-
821
- it "must print a debugging message" do
822
- url = subject.url_for(path)
823
-
824
- allow(subject.http).to receive(:lock).with(path)
825
-
826
- expect(subject).to receive(:print_debug).with(
827
- "Requesting LOCK #{url} ..."
828
- )
829
-
830
- subject.http_lock(path)
831
- end
832
-
833
- after { Ronin::Support::CLI::Printing.debug = false }
834
- end
835
- end
836
- end
837
-
838
- describe "#http_mkcol" do
839
- context "when given a path" do
840
- let(:path) { '/foo' }
841
-
842
- it "must call #http.mkcol with the path" do
843
- expect(subject.http).to receive(:mkcol).with(path)
844
-
845
- subject.http_mkcol(path)
846
- end
847
-
848
- context "when debug messages are enabled" do
849
- before { Ronin::Support::CLI::Printing.debug = true }
850
-
851
- it "must print a debugging message" do
852
- url = subject.url_for(path)
853
-
854
- allow(subject.http).to receive(:mkcol).with(path)
855
-
856
- expect(subject).to receive(:print_debug).with(
857
- "Requesting MKCOL #{url} ..."
858
- )
859
-
860
- subject.http_mkcol(path)
861
- end
862
-
863
- after { Ronin::Support::CLI::Printing.debug = false }
864
- end
865
- end
866
- end
867
-
868
- describe "#http_move" do
869
- context "when given a path" do
870
- let(:path) { '/foo' }
871
-
872
- it "must call #http.move with the path" do
873
- expect(subject.http).to receive(:move).with(path)
874
-
875
- subject.http_move(path)
876
- end
877
-
878
- context "when debug messages are enabled" do
879
- before { Ronin::Support::CLI::Printing.debug = true }
880
-
881
- it "must print a debugging message" do
882
- url = subject.url_for(path)
883
-
884
- allow(subject.http).to receive(:move).with(path)
885
-
886
- expect(subject).to receive(:print_debug).with(
887
- "Requesting MOVE #{url} ..."
888
- )
889
-
890
- subject.http_move(path)
891
- end
892
-
893
- after { Ronin::Support::CLI::Printing.debug = false }
894
- end
895
- end
896
- end
897
-
898
- describe "#http_options" do
899
- context "when given a path" do
900
- let(:path) { '/foo' }
901
-
902
- it "must call #http.options with the path" do
903
- expect(subject.http).to receive(:options).with(path)
904
-
905
- subject.http_options(path)
906
- end
907
-
908
- context "when debug messages are enabled" do
909
- before { Ronin::Support::CLI::Printing.debug = true }
910
-
911
- it "must print a debugging message" do
912
- url = subject.url_for(path)
913
-
914
- allow(subject.http).to receive(:options).with(path)
915
-
916
- expect(subject).to receive(:print_debug).with(
917
- "Requesting OPTIONS #{url} ..."
918
- )
919
-
920
- subject.http_options(path)
921
- end
922
-
923
- after { Ronin::Support::CLI::Printing.debug = false }
924
- end
925
- end
926
- end
927
-
928
- describe "#http_allowed_methods" do
929
- context "when given a path" do
930
- let(:path) { '/foo' }
931
-
932
- it "must call #http.allowed_methods with the path" do
933
- expect(subject.http).to receive(:allowed_methods).with(path)
934
-
935
- subject.http_allowed_methods(path)
936
- end
937
-
938
- context "when debug messages are enabled" do
939
- before { Ronin::Support::CLI::Printing.debug = true }
940
-
941
- it "must print a debugging message" do
942
- url = subject.url_for(path)
943
-
944
- allow(subject.http).to receive(:allowed_methods).with(path)
945
-
946
- expect(subject).to receive(:print_debug).with(
947
- "Checking allowed HTTP methods for #{url} ..."
948
- )
949
-
950
- subject.http_allowed_methods(path)
951
- end
952
-
953
- after { Ronin::Support::CLI::Printing.debug = false }
954
- end
955
- end
956
- end
957
-
958
- describe "#http_patch" do
959
- context "when given a path" do
960
- let(:path) { '/foo' }
961
-
962
- it "must call #http.patch with the path" do
963
- expect(subject.http).to receive(:patch).with(path)
964
-
965
- subject.http_patch(path)
966
- end
967
-
968
- context "when debug messages are enabled" do
969
- before { Ronin::Support::CLI::Printing.debug = true }
970
-
971
- it "must print a debugging message" do
972
- url = subject.url_for(path)
973
-
974
- allow(subject.http).to receive(:patch).with(path)
975
-
976
- expect(subject).to receive(:print_debug).with(
977
- "Requesting PATCH #{url} ..."
978
- )
979
-
980
- subject.http_patch(path)
981
- end
982
-
983
- after { Ronin::Support::CLI::Printing.debug = false }
984
- end
985
- end
986
- end
987
-
988
- describe "#http_post" do
989
- context "when given a path" do
990
- let(:path) { '/foo' }
991
-
992
- it "must call #http.post with the path" do
993
- expect(subject.http).to receive(:post).with(path)
994
-
995
- subject.http_post(path)
996
- end
997
-
998
- context "when debug messages are enabled" do
999
- before { Ronin::Support::CLI::Printing.debug = true }
1000
-
1001
- it "must print a debugging message" do
1002
- url = subject.url_for(path)
1003
-
1004
- allow(subject.http).to receive(:post).with(path)
1005
-
1006
- expect(subject).to receive(:print_debug).with(
1007
- "Requesting POST #{url} ..."
1008
- )
1009
-
1010
- subject.http_post(path)
1011
- end
1012
-
1013
- after { Ronin::Support::CLI::Printing.debug = false }
1014
- end
1015
- end
1016
- end
1017
-
1018
- describe "#http_post_headers" do
1019
- context "when given a path" do
1020
- let(:path) { '/foo' }
1021
-
1022
- it "must call #http.post_headers with the path" do
1023
- expect(subject.http).to receive(:post_headers).with(path)
1024
-
1025
- subject.http_post_headers(path)
1026
- end
1027
-
1028
- context "when debug messages are enabled" do
1029
- before { Ronin::Support::CLI::Printing.debug = true }
1030
-
1031
- it "must print a debugging message" do
1032
- url = subject.url_for(path)
1033
-
1034
- allow(subject.http).to receive(:post_headers).with(path)
1035
-
1036
- expect(subject).to receive(:print_debug).with(
1037
- "Requesting response headers for POST #{url} ..."
1038
- )
1039
-
1040
- subject.http_post_headers(path)
1041
- end
1042
-
1043
- after { Ronin::Support::CLI::Printing.debug = false }
1044
- end
1045
- end
1046
- end
1047
-
1048
- describe "#http_post_body" do
1049
- context "when given a path" do
1050
- let(:path) { '/foo' }
1051
-
1052
- it "must call #http.post_body with the path" do
1053
- expect(subject.http).to receive(:post_body).with(path)
1054
-
1055
- subject.http_post_body(path)
1056
- end
1057
-
1058
- context "when debug messages are enabled" do
1059
- before { Ronin::Support::CLI::Printing.debug = true }
1060
-
1061
- it "must print a debugging message" do
1062
- url = subject.url_for(path)
1063
-
1064
- allow(subject.http).to receive(:post_body).with(path)
1065
-
1066
- expect(subject).to receive(:print_debug).with(
1067
- "Requesting response body for POST #{url} ..."
1068
- )
1069
-
1070
- subject.http_post_body(path)
1071
- end
1072
-
1073
- after { Ronin::Support::CLI::Printing.debug = false }
1074
- end
1075
- end
1076
- end
1077
-
1078
- describe "#http_propfind" do
1079
- context "when given a path" do
1080
- let(:path) { '/foo' }
1081
-
1082
- it "must call #http.propfind with the path" do
1083
- expect(subject.http).to receive(:propfind).with(path)
1084
-
1085
- subject.http_propfind(path)
1086
- end
1087
-
1088
- context "when debug messages are enabled" do
1089
- before { Ronin::Support::CLI::Printing.debug = true }
1090
-
1091
- it "must print a debugging message" do
1092
- url = subject.url_for(path)
1093
-
1094
- allow(subject.http).to receive(:propfind).with(path)
1095
-
1096
- expect(subject).to receive(:print_debug).with(
1097
- "Requesting PROPFIND #{url} ..."
1098
- )
1099
-
1100
- subject.http_propfind(path)
1101
- end
1102
-
1103
- after { Ronin::Support::CLI::Printing.debug = false }
1104
- end
1105
- end
1106
- end
1107
-
1108
- describe "#http_proppatch" do
1109
- context "when given a path" do
1110
- let(:path) { '/foo' }
1111
-
1112
- it "must call #http.proppatch with the path" do
1113
- expect(subject.http).to receive(:proppatch).with(path)
1114
-
1115
- subject.http_proppatch(path)
1116
- end
1117
-
1118
- context "when debug messages are enabled" do
1119
- before { Ronin::Support::CLI::Printing.debug = true }
1120
-
1121
- it "must print a debugging message" do
1122
- url = subject.url_for(path)
1123
-
1124
- expect(subject.http).to receive(:proppatch).with(path)
1125
-
1126
- expect(subject).to receive(:print_debug).with(
1127
- "Requesting PROPPATCH #{url} ..."
1128
- )
1129
-
1130
- subject.http_proppatch(path)
1131
- end
1132
-
1133
- after { Ronin::Support::CLI::Printing.debug = false }
1134
- end
1135
- end
1136
- end
1137
-
1138
- describe "#http_put" do
1139
- context "when given a path" do
1140
- let(:path) { '/foo' }
1141
-
1142
- it "must call #http.put with the path" do
1143
- expect(subject.http).to receive(:put).with(path)
1144
-
1145
- subject.http_put(path)
1146
- end
1147
-
1148
- context "when debug messages are enabled" do
1149
- before { Ronin::Support::CLI::Printing.debug = true }
1150
-
1151
- it "must print a debugging message" do
1152
- url = subject.url_for(path)
1153
-
1154
- allow(subject.http).to receive(:put).with(path)
1155
-
1156
- expect(subject).to receive(:print_debug).with(
1157
- "Requesting PUT #{url} ..."
1158
- )
1159
-
1160
- subject.http_put(path)
1161
- end
1162
-
1163
- after { Ronin::Support::CLI::Printing.debug = false }
1164
- end
1165
- end
1166
- end
1167
-
1168
- describe "#http_trace" do
1169
- context "when given a path" do
1170
- let(:path) { '/foo' }
1171
-
1172
- it "must call #http.trace with the path" do
1173
- expect(subject.http).to receive(:trace).with(path)
1174
-
1175
- subject.http_trace(path)
1176
- end
1177
-
1178
- context "when debug messages are enabled" do
1179
- before { Ronin::Support::CLI::Printing.debug = true }
1180
-
1181
- it "must print a debugging message" do
1182
- url = subject.url_for(path)
1183
-
1184
- allow(subject.http).to receive(:trace).with(path)
1185
-
1186
- expect(subject).to receive(:print_debug).with(
1187
- "Requesting TRACE #{url} ..."
1188
- )
1189
-
1190
- subject.http_trace(path)
1191
- end
1192
-
1193
- after { Ronin::Support::CLI::Printing.debug = false }
1194
- end
1195
- end
1196
- end
1197
-
1198
- describe "#http_unlock" do
1199
- context "when given a path" do
1200
- let(:path) { '/foo' }
1201
-
1202
- it "must call #http.unlock with the path" do
1203
- expect(subject.http).to receive(:unlock).with(path)
1204
-
1205
- subject.http_unlock(path)
1206
- end
1207
-
1208
- context "when debug messages are enabled" do
1209
- before { Ronin::Support::CLI::Printing.debug = true }
1210
-
1211
- it "must print a debugging message" do
1212
- url = subject.url_for(path)
1213
-
1214
- allow(subject.http).to receive(:unlock).with(path)
1215
-
1216
- expect(subject).to receive(:print_debug).with(
1217
- "Requesting UNLOCK #{url} ..."
1218
- )
1219
-
1220
- subject.http_unlock(path)
1221
- end
1222
-
1223
- after { Ronin::Support::CLI::Printing.debug = false }
1224
- end
1225
- end
1226
- end
1227
- end