agile-proxy-jruby 0.1.25-jruby

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 (112) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +10 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +36 -0
  6. data/.travis.yml +10 -0
  7. data/Gemfile +4 -0
  8. data/Guardfile +20 -0
  9. data/LICENSE +22 -0
  10. data/README.md +131 -0
  11. data/Rakefile +15 -0
  12. data/agile-proxy.gemspec +60 -0
  13. data/assets/index.html +39 -0
  14. data/assets/ui/app/AgileProxyApi.js +31 -0
  15. data/assets/ui/app/app.js +1 -0
  16. data/assets/ui/app/controller/Stubs.js +64 -0
  17. data/assets/ui/app/controller/main.js +12 -0
  18. data/assets/ui/app/directive/AppEnhancedFormElement.js +21 -0
  19. data/assets/ui/app/directive/AppFor.js +16 -0
  20. data/assets/ui/app/directive/AppResponseEditor.js +54 -0
  21. data/assets/ui/app/model/RequestSpec.js +6 -0
  22. data/assets/ui/app/routes.js +11 -0
  23. data/assets/ui/app/service/Dialog.js +49 -0
  24. data/assets/ui/app/service/DomId.js +10 -0
  25. data/assets/ui/app/service/Error.js +7 -0
  26. data/assets/ui/app/service/Stub.js +36 -0
  27. data/assets/ui/app/view/404.html +2 -0
  28. data/assets/ui/app/view/dialog/error.html +10 -0
  29. data/assets/ui/app/view/dialog/yesNo.html +8 -0
  30. data/assets/ui/app/view/responses/editForm.html +78 -0
  31. data/assets/ui/app/view/status.html +1 -0
  32. data/assets/ui/app/view/stubs.html +19 -0
  33. data/assets/ui/app/view/stubs/edit.html +58 -0
  34. data/assets/ui/css/main.css +3 -0
  35. data/bin/agile_proxy +4 -0
  36. data/bower.json +27 -0
  37. data/config.yml +6 -0
  38. data/db.yml +10 -0
  39. data/db/migrations/20140818110800_create_users.rb +9 -0
  40. data/db/migrations/20140818134700_create_applications.rb +10 -0
  41. data/db/migrations/20140818135200_create_request_specs.rb +13 -0
  42. data/db/migrations/20140821115300_create_responses.rb +14 -0
  43. data/db/migrations/20140823082900_add_method_to_request_specs.rb +7 -0
  44. data/db/migrations/20140823083900_rename_request_spec_columns.rb +8 -0
  45. data/db/migrations/20141031072100_add_url_type_to_request_specs.rb +8 -0
  46. data/db/migrations/20141105125600_add_conditions_to_request_specs.rb +7 -0
  47. data/db/migrations/20141106083100_add_username_and_password_to_applications.rb +8 -0
  48. data/db/migrations/20141119143800_add_record_to_applications.rb +7 -0
  49. data/db/migrations/20141119174300_create_recordings.rb +18 -0
  50. data/db/migrations/20150221152500_add_record_requests_to_request_specs.rb +7 -0
  51. data/db/schema.rb +78 -0
  52. data/db/seed.rb +26 -0
  53. data/echo_server.rb +19 -0
  54. data/examples/README.md +1 -0
  55. data/examples/facebook_api.html +59 -0
  56. data/examples/tumblr_api.html +22 -0
  57. data/lib/agile_proxy.rb +8 -0
  58. data/lib/agile_proxy/api/applications.rb +77 -0
  59. data/lib/agile_proxy/api/recordings.rb +52 -0
  60. data/lib/agile_proxy/api/request_spec_recordings.rb +52 -0
  61. data/lib/agile_proxy/api/request_specs.rb +86 -0
  62. data/lib/agile_proxy/api/root.rb +45 -0
  63. data/lib/agile_proxy/cli.rb +116 -0
  64. data/lib/agile_proxy/config.rb +66 -0
  65. data/lib/agile_proxy/handlers/handler.rb +43 -0
  66. data/lib/agile_proxy/handlers/proxy_handler.rb +111 -0
  67. data/lib/agile_proxy/handlers/request_handler.rb +75 -0
  68. data/lib/agile_proxy/handlers/stub_handler.rb +146 -0
  69. data/lib/agile_proxy/mitm.crt +22 -0
  70. data/lib/agile_proxy/mitm.key +27 -0
  71. data/lib/agile_proxy/model/application.rb +20 -0
  72. data/lib/agile_proxy/model/recording.rb +17 -0
  73. data/lib/agile_proxy/model/request_spec.rb +48 -0
  74. data/lib/agile_proxy/model/response.rb +51 -0
  75. data/lib/agile_proxy/model/user.rb +17 -0
  76. data/lib/agile_proxy/proxy_connection.rb +112 -0
  77. data/lib/agile_proxy/rack/get_only_cache.rb +30 -0
  78. data/lib/agile_proxy/route.rb +106 -0
  79. data/lib/agile_proxy/router.rb +99 -0
  80. data/lib/agile_proxy/server.rb +119 -0
  81. data/lib/agile_proxy/servers/api.rb +40 -0
  82. data/lib/agile_proxy/servers/request_spec.rb +40 -0
  83. data/lib/agile_proxy/servers/request_spec_direct.rb +35 -0
  84. data/lib/agile_proxy/version.rb +6 -0
  85. data/load_proxy.js +39 -0
  86. data/log/.gitkeep +0 -0
  87. data/spec/common_helper.rb +32 -0
  88. data/spec/fixtures/example_static_file.html +1 -0
  89. data/spec/fixtures/test-server.crt +15 -0
  90. data/spec/fixtures/test-server.key +15 -0
  91. data/spec/integration/helpers/request_spec_helper.rb +84 -0
  92. data/spec/integration/specs/lib/server_spec.rb +474 -0
  93. data/spec/integration_spec_helper.rb +16 -0
  94. data/spec/spec_helper.rb +39 -0
  95. data/spec/support/test_server.rb +105 -0
  96. data/spec/unit/agile_proxy/api/applications_spec.rb +102 -0
  97. data/spec/unit/agile_proxy/api/common_helper.rb +31 -0
  98. data/spec/unit/agile_proxy/api/recordings_spec.rb +115 -0
  99. data/spec/unit/agile_proxy/api/request_spec_recordings_spec.rb +119 -0
  100. data/spec/unit/agile_proxy/api/request_specs_spec.rb +159 -0
  101. data/spec/unit/agile_proxy/handlers/handler_spec.rb +8 -0
  102. data/spec/unit/agile_proxy/handlers/proxy_handler_spec.rb +138 -0
  103. data/spec/unit/agile_proxy/handlers/request_handler_spec.rb +76 -0
  104. data/spec/unit/agile_proxy/handlers/stub_handler_spec.rb +177 -0
  105. data/spec/unit/agile_proxy/model/recording_spec.rb +0 -0
  106. data/spec/unit/agile_proxy/model/request_spec_spec.rb +45 -0
  107. data/spec/unit/agile_proxy/model/response_spec.rb +38 -0
  108. data/spec/unit/agile_proxy/server_spec.rb +91 -0
  109. data/spec/unit/agile_proxy/servers/api_spec.rb +35 -0
  110. data/spec/unit/agile_proxy/servers/request_spec_direct_spec.rb +51 -0
  111. data/spec/unit/agile_proxy/servers/request_spec_spec.rb +35 -0
  112. metadata +736 -0
@@ -0,0 +1,45 @@
1
+ require 'agile_proxy/model/request_spec'
2
+ describe AgileProxy::RequestSpec do
3
+ let(:response_class) do
4
+ Class.new do
5
+ def initialize(config = {})
6
+ @config = config
7
+ end
8
+ attr_accessor :config
9
+
10
+ end
11
+ end
12
+ let(:mock_response) { response_class.new }
13
+ before :each do
14
+ stub_const('AgileProxy::Response', response_class)
15
+ end
16
+ it 'Should allow a nested response' do
17
+ subject.should accept_nested_attributes_for(:response)
18
+ end
19
+ it 'Should belong to a user' do
20
+ expect(subject).to belong_to(:user)
21
+ end
22
+ it 'Should belong to an application' do
23
+ expect(subject).to belong_to(:application)
24
+ end
25
+ it 'Should belong to a response' do
26
+ expect(subject).to belong_to(:response)
27
+ end
28
+
29
+ describe 'Interface for the stub handler' do
30
+ context '#call (without #and_return)' do
31
+ let(:subject) { AgileProxy::RequestSpec.new(url: 'url') }
32
+ it 'returns a 204 empty response' do
33
+ expect(subject).to receive(:response).and_return nil
34
+ expect(subject.call({}, {}, nil)).to eql [204, { 'Content-Type' => 'text/plain' }, '']
35
+ end
36
+ end
37
+ context '#call With conditions' do
38
+ let(:subject) { AgileProxy::RequestSpec.new(url: 'url', conditions: '{"a": 1, "b": 2}') }
39
+ it 'returns a the correct json' do
40
+ expect(subject.conditions_json).to eql('a' => 1, 'b' => 2)
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,38 @@
1
+ require 'em-synchrony'
2
+ require 'spec_helper'
3
+ describe AgileProxy::Response do
4
+ it 'Should have many requests ' do
5
+ expect(subject).to have_many(:request_specs)
6
+ end
7
+ it 'Should serialize the headers in json format' do
8
+ expect(subject).to serialize(:headers)
9
+ end
10
+ describe 'With a configured delay' do
11
+ before :each do
12
+ subject.delay = 0.5
13
+ subject.content = 'Test'
14
+ subject.content_type = 'text/plain'
15
+ end
16
+ it 'Should respond with a delay using the Em::Synchrony.sleep method' do
17
+ expect(EventMachine::Synchrony).to receive(:sleep).with(0.5)
18
+ expect(subject.to_rack({}, {}, '')).to eql([200, { 'Content-Type' => 'text/plain', 'Cache-Control' => 'no-store' }, ['Test']])
19
+ end
20
+
21
+ end
22
+ describe 'Using templates' do
23
+ describe 'Using text' do
24
+ before :each do
25
+ subject.is_template = true
26
+ subject.content = 'Hello {{name}}'
27
+ subject.content_type = 'text/plain'
28
+ end
29
+ it 'Should pass the params to the template and the output should be correct' do
30
+ expect(subject.to_rack({ name: 'World' }, {}, '')).to eql([200, { 'Content-Type' => 'text/plain', 'Cache-Control' => 'no-store' }, ['Hello World']])
31
+ end
32
+ it 'Should deal with if a parameter is missing' do
33
+ expect(subject.to_rack({}, {}, '')).to eql([200, { 'Content-Type' => 'text/plain', 'Cache-Control' => 'no-store' }, ["Hello "]])
34
+ end
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ describe AgileProxy::Server do
4
+ let(:subject) { AgileProxy::Server.new }
5
+ let(:active_record_base_class) do
6
+ Class.new do
7
+ def self.establish_connection(_options)
8
+ end
9
+ class << self
10
+ attr_accessor :configurations
11
+ end
12
+ end
13
+ end
14
+ let(:request_spec_server_class) { Class.new }
15
+ let(:request_spec_direct_server_class) { Class.new }
16
+ let(:api_server_class) { Class.new }
17
+ let(:em_class) { Class.new }
18
+ let(:socket_class) { Class.new }
19
+ before :each do
20
+ stub_const('ActiveRecord::Base', active_record_base_class)
21
+ stub_const('::EM', em_class)
22
+ stub_const('AgileProxy::Servers::Api', api_server_class)
23
+ stub_const('AgileProxy::Servers::RequestSpec', request_spec_server_class)
24
+ stub_const('AgileProxy::Servers::RequestSpecDirect', request_spec_direct_server_class)
25
+ end
26
+ context 'Initialization' do
27
+ context 'In test environment' do
28
+ before :each do
29
+ expect(AgileProxy.config).to receive(:environment).and_return 'test'
30
+ expect(active_record_base_class).to receive(:establish_connection).with('adapter' => 'sqlite3', 'database' => 'db/test.db')
31
+ end
32
+ it 'Should establish the correct active record connection according to the environment' do
33
+ subject
34
+
35
+ end
36
+ end
37
+ context 'In development environment' do
38
+ before :each do
39
+ expect(AgileProxy.config).to receive(:environment).and_return 'development'
40
+ expect(active_record_base_class).to receive(:establish_connection).with('adapter' => 'sqlite3', 'database' => 'db/development.db')
41
+ end
42
+ it 'Should establish the correct active record connection according to the environment' do
43
+ subject
44
+
45
+ end
46
+ end
47
+ end
48
+ context 'Starting the servers' do
49
+ it 'Should alias start to main_loop' do
50
+ expect(subject).to receive(:main_loop)
51
+ subject.start
52
+ end
53
+ end
54
+ context 'Within Main Loop' do
55
+
56
+ # Note that we are not really testing the main loop here - it is better tested using integration tests which exercise it properly
57
+ inner_loop = nil
58
+ error_handler = nil
59
+ before :each do
60
+ expect(em_class).to receive(:error_handler) do |&blk|
61
+ error_handler = blk
62
+ end
63
+ expect(api_server_class).to receive(:start).with('localhost', 3020)
64
+ expect_any_instance_of(request_spec_server_class).to receive(:port).at_least(:once).and_return '3100'
65
+ expect(em_class).to receive(:run) do |&blk|
66
+ inner_loop = blk
67
+ end
68
+ expect(request_spec_server_class).to receive(:start).and_return request_spec_server_class.new
69
+ expect(request_spec_direct_server_class).to receive(:start).and_return request_spec_direct_server_class.new
70
+ subject.start
71
+ inner_loop.call
72
+ end
73
+ context 'Server accessors' do
74
+ it 'Should return something from url' do
75
+ expect(subject.url).to eql 'http://localhost:3100'
76
+ end
77
+ it 'Should return something from webserver_host' do
78
+ expect(subject.webserver_host).to eql 'localhost'
79
+ end
80
+ end
81
+ context 'Error handler' do
82
+ let(:exception) { StandardError.new('This is a test error') }
83
+ it 'Should output the errors to stdout' do
84
+ expect(subject).to receive(:puts).at_least(:once)
85
+ expect(exception).to receive(:backtrace).and_return %w(line1 line2)
86
+ error_handler.call(exception)
87
+ end
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+ describe AgileProxy::Servers::Api do
3
+ let(:subject) { AgileProxy::Servers::Api }
4
+ let(:rack_builder_class) { Class.new }
5
+ let(:goliath_runner_class) { Class.new }
6
+ let(:rack_static_class) { Class.new }
7
+ let(:api_root_class) { Class.new }
8
+ before :each do
9
+ stub_const('Goliath::Rack::Builder', rack_builder_class)
10
+ stub_const('Rack::Static', rack_static_class)
11
+ stub_const('Goliath::Runner', goliath_runner_class)
12
+ stub_const('AgileProxy::Api::Root', api_root_class)
13
+ end
14
+ it 'Should start a goliath server when the start method is called' do
15
+ builder_block = nil
16
+ expect(rack_builder_class).to receive(:app) do |&blk|
17
+ builder_block = blk
18
+ rack_builder_class.new.instance_eval(&blk)
19
+ end
20
+ expect_any_instance_of(rack_builder_class).to receive(:use).with(rack_static_class, root: instance_of(String), urls: ['/ui'], index: 'index.html')
21
+ expect_any_instance_of(rack_builder_class).to receive(:map) do |_instance, path, &blk|
22
+ expect(path).to eql '/api'
23
+ expect_any_instance_of(rack_builder_class).to receive(:run).with(kind_of(api_root_class))
24
+ rack_builder_class.new.instance_eval(&blk)
25
+
26
+ end
27
+ expect_any_instance_of(goliath_runner_class).to receive(:run)
28
+ expect_any_instance_of(goliath_runner_class).to receive(:initialize).with([], nil)
29
+ expect_any_instance_of(goliath_runner_class).to receive(:address=).with('localhost')
30
+ expect_any_instance_of(goliath_runner_class).to receive(:port=).with('3020')
31
+ expect_any_instance_of(goliath_runner_class).to receive(:app=)
32
+ subject.start('localhost', '3020')
33
+
34
+ end
35
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ describe AgileProxy::Servers::RequestSpecDirect do
3
+ let(:subject) { AgileProxy::Servers::RequestSpecDirect }
4
+ let(:rack_builder_class) { Class.new }
5
+ let(:goliath_runner_class) { Class.new }
6
+ let(:rack_static_class) { Class.new }
7
+ let(:rack_cascade_class) { Class.new }
8
+ let(:stub_handler_class) { Class.new }
9
+ before :each do
10
+ stub_const('Goliath::Rack::Builder', rack_builder_class)
11
+ stub_const('Rack::Static', rack_static_class)
12
+ stub_const('Rack::Cascade', rack_cascade_class)
13
+ stub_const('Goliath::Runner', goliath_runner_class)
14
+ stub_const('AgileProxy::StubHandler', stub_handler_class)
15
+ end
16
+ it 'Should start a rack server with a static handler when the start method is called' do
17
+ builder_block = nil
18
+ expect(rack_builder_class).to receive(:app) do |&blk|
19
+ builder_block = blk
20
+ rack_builder_class.new.instance_eval(&blk)
21
+ end
22
+ expect_any_instance_of(rack_builder_class).to receive(:map) do |_instance, path, &blk|
23
+ expect(path).to eql '/'
24
+ end
25
+ expect_any_instance_of(goliath_runner_class).to receive(:run)
26
+ expect_any_instance_of(goliath_runner_class).to receive(:initialize).with([], nil)
27
+ expect_any_instance_of(goliath_runner_class).to receive(:address=).with('localhost')
28
+ expect_any_instance_of(goliath_runner_class).to receive(:port=).with('3030')
29
+ expect_any_instance_of(goliath_runner_class).to receive(:app=)
30
+ subject.start('localhost', '3030', ['/ui', '/images'])
31
+
32
+ end
33
+ it 'Should start a rack server with no static handler if the start method is called with 2 params' do
34
+ builder_block = nil
35
+ expect(rack_builder_class).to receive(:app) do |&blk|
36
+ builder_block = blk
37
+ rack_builder_class.new.instance_eval(&blk)
38
+ end
39
+ expect_any_instance_of(rack_builder_class).not_to receive(:use)
40
+ expect_any_instance_of(rack_builder_class).to receive(:map) do |_instance, path, &blk|
41
+ expect(path).to eql '/'
42
+ end
43
+ expect_any_instance_of(goliath_runner_class).to receive(:run)
44
+ expect_any_instance_of(goliath_runner_class).to receive(:initialize).with([], nil)
45
+ expect_any_instance_of(goliath_runner_class).to receive(:address=).with('localhost')
46
+ expect_any_instance_of(goliath_runner_class).to receive(:port=).with('3030')
47
+ expect_any_instance_of(goliath_runner_class).to receive(:app=)
48
+ subject.start('localhost', '3030')
49
+
50
+ end
51
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+ describe AgileProxy::Servers::RequestSpec do
3
+ let(:subject) { AgileProxy::Servers::RequestSpec }
4
+ let(:rack_builder_class) { Class.new }
5
+ let(:goliath_runner_class) { Class.new }
6
+ let(:rack_static_class) { Class.new }
7
+ let(:request_handler_class) { Class.new }
8
+ let(:config_class) {Class.new}
9
+ before :each do
10
+ stub_const('Goliath::Rack::Builder', rack_builder_class)
11
+ stub_const('Rack::Static', rack_static_class)
12
+ stub_const('Goliath::Proxy::Runner', goliath_runner_class)
13
+ stub_const('AgileProxy::RequestHandler', request_handler_class)
14
+ stub_const('AgileProxy::Config', config_class)
15
+ end
16
+ context 'With started server' do
17
+ before :each do
18
+ expect_any_instance_of(goliath_runner_class).to receive(:run)
19
+ expect_any_instance_of(goliath_runner_class).to receive(:initialize).with([], nil)
20
+ expect_any_instance_of(goliath_runner_class).to receive(:address=).with('127.0.0.1')
21
+ expect_any_instance_of(goliath_runner_class).to receive(:port=).with('3100')
22
+ expect_any_instance_of(goliath_runner_class).to receive(:app=).with(instance_of(request_handler_class))
23
+ expect(AgileProxy).to receive(:config).at_least(:once).and_return config_class.new
24
+ expect_any_instance_of(config_class).to receive(:proxy_port).at_least(:once).and_return '3100'
25
+ allow_any_instance_of(config_class).to receive(:reset)
26
+ end
27
+ it 'Should start the server and return the instance' do
28
+ expect(subject.start).to be_a_kind_of(subject)
29
+ end
30
+ it 'Should return the port it is running on' do
31
+ expect(subject.start.port).to eql '3100'
32
+
33
+ end
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,736 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: agile-proxy-jruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.25
5
+ platform: jruby
6
+ authors:
7
+ - Gary Taylor
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: '0'
25
+ prerelease: false
26
+ type: :development
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '3.1'
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: 3.1.0
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '3.1'
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 3.1.0
45
+ prerelease: false
46
+ type: :development
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec-mocks
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '3.1'
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: 3.1.3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.1'
62
+ - - '>='
63
+ - !ruby/object:Gem::Version
64
+ version: 3.1.3
65
+ prerelease: false
66
+ type: :development
67
+ - !ruby/object:Gem::Dependency
68
+ name: faraday
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '0.9'
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 0.9.0
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: '0.9'
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: 0.9.0
85
+ prerelease: false
86
+ type: :development
87
+ - !ruby/object:Gem::Dependency
88
+ name: poltergeist
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.5'
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.5.1
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '1.5'
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: 1.5.1
105
+ prerelease: false
106
+ type: :development
107
+ - !ruby/object:Gem::Dependency
108
+ name: selenium-webdriver
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ~>
112
+ - !ruby/object:Gem::Version
113
+ version: '2.43'
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: 2.43.0
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ~>
120
+ - !ruby/object:Gem::Version
121
+ version: '2.43'
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.43.0
125
+ prerelease: false
126
+ type: :development
127
+ - !ruby/object:Gem::Dependency
128
+ name: guard
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '2.6'
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: 2.6.1
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: '2.6'
142
+ - - '>='
143
+ - !ruby/object:Gem::Version
144
+ version: 2.6.1
145
+ prerelease: false
146
+ type: :development
147
+ - !ruby/object:Gem::Dependency
148
+ name: rb-inotify
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: '0.9'
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: 0.9.5
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ~>
160
+ - !ruby/object:Gem::Version
161
+ version: '0.9'
162
+ - - '>='
163
+ - !ruby/object:Gem::Version
164
+ version: 0.9.5
165
+ prerelease: false
166
+ type: :development
167
+ - !ruby/object:Gem::Dependency
168
+ name: cucumber
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '1.3'
174
+ - - '>='
175
+ - !ruby/object:Gem::Version
176
+ version: 1.3.17
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '1.3'
182
+ - - '>='
183
+ - !ruby/object:Gem::Version
184
+ version: 1.3.17
185
+ prerelease: false
186
+ type: :development
187
+ - !ruby/object:Gem::Dependency
188
+ name: rest-client
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ~>
192
+ - !ruby/object:Gem::Version
193
+ version: '1.7'
194
+ - - '>='
195
+ - !ruby/object:Gem::Version
196
+ version: 1.7.2
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ~>
200
+ - !ruby/object:Gem::Version
201
+ version: '1.7'
202
+ - - '>='
203
+ - !ruby/object:Gem::Version
204
+ version: 1.7.2
205
+ prerelease: false
206
+ type: :development
207
+ - !ruby/object:Gem::Dependency
208
+ name: require_all
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ~>
212
+ - !ruby/object:Gem::Version
213
+ version: '1.3'
214
+ - - '>='
215
+ - !ruby/object:Gem::Version
216
+ version: 1.3.2
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ~>
220
+ - !ruby/object:Gem::Version
221
+ version: '1.3'
222
+ - - '>='
223
+ - !ruby/object:Gem::Version
224
+ version: 1.3.2
225
+ prerelease: false
226
+ type: :development
227
+ - !ruby/object:Gem::Dependency
228
+ name: faker
229
+ version_requirements: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ~>
232
+ - !ruby/object:Gem::Version
233
+ version: '1.2'
234
+ - - '>='
235
+ - !ruby/object:Gem::Version
236
+ version: 1.2.0
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ~>
240
+ - !ruby/object:Gem::Version
241
+ version: '1.2'
242
+ - - '>='
243
+ - !ruby/object:Gem::Version
244
+ version: 1.2.0
245
+ prerelease: false
246
+ type: :development
247
+ - !ruby/object:Gem::Dependency
248
+ name: yard
249
+ version_requirements: !ruby/object:Gem::Requirement
250
+ requirements:
251
+ - - ~>
252
+ - !ruby/object:Gem::Version
253
+ version: '0.8'
254
+ - - '>='
255
+ - !ruby/object:Gem::Version
256
+ version: '0.8'
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ~>
260
+ - !ruby/object:Gem::Version
261
+ version: '0.8'
262
+ - - '>='
263
+ - !ruby/object:Gem::Version
264
+ version: '0.8'
265
+ prerelease: false
266
+ type: :development
267
+ - !ruby/object:Gem::Dependency
268
+ name: simplecov
269
+ version_requirements: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ~>
272
+ - !ruby/object:Gem::Version
273
+ version: '0.9'
274
+ - - '>='
275
+ - !ruby/object:Gem::Version
276
+ version: 0.9.1
277
+ requirement: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ~>
280
+ - !ruby/object:Gem::Version
281
+ version: '0.9'
282
+ - - '>='
283
+ - !ruby/object:Gem::Version
284
+ version: 0.9.1
285
+ prerelease: false
286
+ type: :development
287
+ - !ruby/object:Gem::Dependency
288
+ name: travis
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ~>
292
+ - !ruby/object:Gem::Version
293
+ version: '1.7'
294
+ - - '>='
295
+ - !ruby/object:Gem::Version
296
+ version: 1.7.5
297
+ requirement: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - ~>
300
+ - !ruby/object:Gem::Version
301
+ version: '1.7'
302
+ - - '>='
303
+ - !ruby/object:Gem::Version
304
+ version: 1.7.5
305
+ prerelease: false
306
+ type: :development
307
+ - !ruby/object:Gem::Dependency
308
+ name: eventmachine
309
+ version_requirements: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ~>
312
+ - !ruby/object:Gem::Version
313
+ version: '1.0'
314
+ - - '>='
315
+ - !ruby/object:Gem::Version
316
+ version: 1.0.3
317
+ requirement: !ruby/object:Gem::Requirement
318
+ requirements:
319
+ - - ~>
320
+ - !ruby/object:Gem::Version
321
+ version: '1.0'
322
+ - - '>='
323
+ - !ruby/object:Gem::Version
324
+ version: 1.0.3
325
+ prerelease: false
326
+ type: :runtime
327
+ - !ruby/object:Gem::Dependency
328
+ name: em-synchrony
329
+ version_requirements: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - ~>
332
+ - !ruby/object:Gem::Version
333
+ version: '1.0'
334
+ - - '>='
335
+ - !ruby/object:Gem::Version
336
+ version: 1.0.3
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ~>
340
+ - !ruby/object:Gem::Version
341
+ version: '1.0'
342
+ - - '>='
343
+ - !ruby/object:Gem::Version
344
+ version: 1.0.3
345
+ prerelease: false
346
+ type: :runtime
347
+ - !ruby/object:Gem::Dependency
348
+ name: em-http-request
349
+ version_requirements: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - ~>
352
+ - !ruby/object:Gem::Version
353
+ version: '1.1'
354
+ - - '>='
355
+ - !ruby/object:Gem::Version
356
+ version: 1.1.2
357
+ requirement: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - ~>
360
+ - !ruby/object:Gem::Version
361
+ version: '1.1'
362
+ - - '>='
363
+ - !ruby/object:Gem::Version
364
+ version: 1.1.2
365
+ prerelease: false
366
+ type: :runtime
367
+ - !ruby/object:Gem::Dependency
368
+ name: grape
369
+ version_requirements: !ruby/object:Gem::Requirement
370
+ requirements:
371
+ - - ~>
372
+ - !ruby/object:Gem::Version
373
+ version: '0.10'
374
+ - - '>='
375
+ - !ruby/object:Gem::Version
376
+ version: 0.10.1
377
+ requirement: !ruby/object:Gem::Requirement
378
+ requirements:
379
+ - - ~>
380
+ - !ruby/object:Gem::Version
381
+ version: '0.10'
382
+ - - '>='
383
+ - !ruby/object:Gem::Version
384
+ version: 0.10.1
385
+ prerelease: false
386
+ type: :runtime
387
+ - !ruby/object:Gem::Dependency
388
+ name: activerecord
389
+ version_requirements: !ruby/object:Gem::Requirement
390
+ requirements:
391
+ - - ~>
392
+ - !ruby/object:Gem::Version
393
+ version: '4.2'
394
+ - - '>='
395
+ - !ruby/object:Gem::Version
396
+ version: 4.2.0
397
+ requirement: !ruby/object:Gem::Requirement
398
+ requirements:
399
+ - - ~>
400
+ - !ruby/object:Gem::Version
401
+ version: '4.2'
402
+ - - '>='
403
+ - !ruby/object:Gem::Version
404
+ version: 4.2.0
405
+ prerelease: false
406
+ type: :runtime
407
+ - !ruby/object:Gem::Dependency
408
+ name: activerecord-jdbc-adapter
409
+ version_requirements: !ruby/object:Gem::Requirement
410
+ requirements:
411
+ - - '>='
412
+ - !ruby/object:Gem::Version
413
+ version: '0'
414
+ requirement: !ruby/object:Gem::Requirement
415
+ requirements:
416
+ - - '>='
417
+ - !ruby/object:Gem::Version
418
+ version: '0'
419
+ prerelease: false
420
+ type: :runtime
421
+ - !ruby/object:Gem::Dependency
422
+ name: activerecord-jdbcsqlite3-adapter
423
+ version_requirements: !ruby/object:Gem::Requirement
424
+ requirements:
425
+ - - '>='
426
+ - !ruby/object:Gem::Version
427
+ version: '0'
428
+ requirement: !ruby/object:Gem::Requirement
429
+ requirements:
430
+ - - '>='
431
+ - !ruby/object:Gem::Version
432
+ version: '0'
433
+ prerelease: false
434
+ type: :runtime
435
+ - !ruby/object:Gem::Dependency
436
+ name: grape-kaminari
437
+ version_requirements: !ruby/object:Gem::Requirement
438
+ requirements:
439
+ - - ~>
440
+ - !ruby/object:Gem::Version
441
+ version: '0.1'
442
+ - - '>='
443
+ - !ruby/object:Gem::Version
444
+ version: 0.1.7
445
+ requirement: !ruby/object:Gem::Requirement
446
+ requirements:
447
+ - - ~>
448
+ - !ruby/object:Gem::Version
449
+ version: '0.1'
450
+ - - '>='
451
+ - !ruby/object:Gem::Version
452
+ version: 0.1.7
453
+ prerelease: false
454
+ type: :runtime
455
+ - !ruby/object:Gem::Dependency
456
+ name: shoulda-matchers
457
+ version_requirements: !ruby/object:Gem::Requirement
458
+ requirements:
459
+ - - '='
460
+ - !ruby/object:Gem::Version
461
+ version: 2.8.0.rc2
462
+ requirement: !ruby/object:Gem::Requirement
463
+ requirements:
464
+ - - '='
465
+ - !ruby/object:Gem::Version
466
+ version: 2.8.0.rc2
467
+ prerelease: false
468
+ type: :runtime
469
+ - !ruby/object:Gem::Dependency
470
+ name: flavour_saver
471
+ version_requirements: !ruby/object:Gem::Requirement
472
+ requirements:
473
+ - - ~>
474
+ - !ruby/object:Gem::Version
475
+ version: '0.3'
476
+ - - '>='
477
+ - !ruby/object:Gem::Version
478
+ version: 0.3.4
479
+ requirement: !ruby/object:Gem::Requirement
480
+ requirements:
481
+ - - ~>
482
+ - !ruby/object:Gem::Version
483
+ version: '0.3'
484
+ - - '>='
485
+ - !ruby/object:Gem::Version
486
+ version: 0.3.4
487
+ prerelease: false
488
+ type: :runtime
489
+ - !ruby/object:Gem::Dependency
490
+ name: thor
491
+ version_requirements: !ruby/object:Gem::Requirement
492
+ requirements:
493
+ - - ~>
494
+ - !ruby/object:Gem::Version
495
+ version: '0.19'
496
+ - - '>='
497
+ - !ruby/object:Gem::Version
498
+ version: 0.19.1
499
+ requirement: !ruby/object:Gem::Requirement
500
+ requirements:
501
+ - - ~>
502
+ - !ruby/object:Gem::Version
503
+ version: '0.19'
504
+ - - '>='
505
+ - !ruby/object:Gem::Version
506
+ version: 0.19.1
507
+ prerelease: false
508
+ type: :runtime
509
+ - !ruby/object:Gem::Dependency
510
+ name: goliath
511
+ version_requirements: !ruby/object:Gem::Requirement
512
+ requirements:
513
+ - - ~>
514
+ - !ruby/object:Gem::Version
515
+ version: '1.0'
516
+ - - '>='
517
+ - !ruby/object:Gem::Version
518
+ version: 1.0.4
519
+ requirement: !ruby/object:Gem::Requirement
520
+ requirements:
521
+ - - ~>
522
+ - !ruby/object:Gem::Version
523
+ version: '1.0'
524
+ - - '>='
525
+ - !ruby/object:Gem::Version
526
+ version: 1.0.4
527
+ prerelease: false
528
+ type: :runtime
529
+ - !ruby/object:Gem::Dependency
530
+ name: rack-cache
531
+ version_requirements: !ruby/object:Gem::Requirement
532
+ requirements:
533
+ - - ~>
534
+ - !ruby/object:Gem::Version
535
+ version: '1.2'
536
+ - - '>='
537
+ - !ruby/object:Gem::Version
538
+ version: '1.2'
539
+ requirement: !ruby/object:Gem::Requirement
540
+ requirements:
541
+ - - ~>
542
+ - !ruby/object:Gem::Version
543
+ version: '1.2'
544
+ - - '>='
545
+ - !ruby/object:Gem::Version
546
+ version: '1.2'
547
+ prerelease: false
548
+ type: :runtime
549
+ - !ruby/object:Gem::Dependency
550
+ name: goliath-proxy
551
+ version_requirements: !ruby/object:Gem::Requirement
552
+ requirements:
553
+ - - ~>
554
+ - !ruby/object:Gem::Version
555
+ version: '0.0'
556
+ - - '>='
557
+ - !ruby/object:Gem::Version
558
+ version: 0.0.1
559
+ requirement: !ruby/object:Gem::Requirement
560
+ requirements:
561
+ - - ~>
562
+ - !ruby/object:Gem::Version
563
+ version: '0.0'
564
+ - - '>='
565
+ - !ruby/object:Gem::Version
566
+ version: 0.0.1
567
+ prerelease: false
568
+ type: :runtime
569
+ description: An agile, programmable, controllable proxy server for use standalone or as part of an integration test suite with clients for many languages
570
+ email:
571
+ - gary.taylor@hismessages.com
572
+ executables:
573
+ - agile_proxy
574
+ extensions: []
575
+ extra_rdoc_files: []
576
+ files:
577
+ - .bowerrc
578
+ - .gitignore
579
+ - .rspec
580
+ - .rubocop.yml
581
+ - .travis.yml
582
+ - Gemfile
583
+ - Guardfile
584
+ - LICENSE
585
+ - README.md
586
+ - Rakefile
587
+ - agile-proxy.gemspec
588
+ - assets/index.html
589
+ - assets/ui/app/AgileProxyApi.js
590
+ - assets/ui/app/app.js
591
+ - assets/ui/app/controller/Stubs.js
592
+ - assets/ui/app/controller/main.js
593
+ - assets/ui/app/directive/AppEnhancedFormElement.js
594
+ - assets/ui/app/directive/AppFor.js
595
+ - assets/ui/app/directive/AppResponseEditor.js
596
+ - assets/ui/app/model/RequestSpec.js
597
+ - assets/ui/app/routes.js
598
+ - assets/ui/app/service/Dialog.js
599
+ - assets/ui/app/service/DomId.js
600
+ - assets/ui/app/service/Error.js
601
+ - assets/ui/app/service/Stub.js
602
+ - assets/ui/app/view/404.html
603
+ - assets/ui/app/view/dialog/error.html
604
+ - assets/ui/app/view/dialog/yesNo.html
605
+ - assets/ui/app/view/responses/editForm.html
606
+ - assets/ui/app/view/status.html
607
+ - assets/ui/app/view/stubs.html
608
+ - assets/ui/app/view/stubs/edit.html
609
+ - assets/ui/css/main.css
610
+ - bin/agile_proxy
611
+ - bower.json
612
+ - config.yml
613
+ - db.yml
614
+ - db/migrations/20140818110800_create_users.rb
615
+ - db/migrations/20140818134700_create_applications.rb
616
+ - db/migrations/20140818135200_create_request_specs.rb
617
+ - db/migrations/20140821115300_create_responses.rb
618
+ - db/migrations/20140823082900_add_method_to_request_specs.rb
619
+ - db/migrations/20140823083900_rename_request_spec_columns.rb
620
+ - db/migrations/20141031072100_add_url_type_to_request_specs.rb
621
+ - db/migrations/20141105125600_add_conditions_to_request_specs.rb
622
+ - db/migrations/20141106083100_add_username_and_password_to_applications.rb
623
+ - db/migrations/20141119143800_add_record_to_applications.rb
624
+ - db/migrations/20141119174300_create_recordings.rb
625
+ - db/migrations/20150221152500_add_record_requests_to_request_specs.rb
626
+ - db/schema.rb
627
+ - db/seed.rb
628
+ - echo_server.rb
629
+ - examples/README.md
630
+ - examples/facebook_api.html
631
+ - examples/tumblr_api.html
632
+ - lib/agile_proxy.rb
633
+ - lib/agile_proxy/api/applications.rb
634
+ - lib/agile_proxy/api/recordings.rb
635
+ - lib/agile_proxy/api/request_spec_recordings.rb
636
+ - lib/agile_proxy/api/request_specs.rb
637
+ - lib/agile_proxy/api/root.rb
638
+ - lib/agile_proxy/cli.rb
639
+ - lib/agile_proxy/config.rb
640
+ - lib/agile_proxy/handlers/handler.rb
641
+ - lib/agile_proxy/handlers/proxy_handler.rb
642
+ - lib/agile_proxy/handlers/request_handler.rb
643
+ - lib/agile_proxy/handlers/stub_handler.rb
644
+ - lib/agile_proxy/mitm.crt
645
+ - lib/agile_proxy/mitm.key
646
+ - lib/agile_proxy/model/application.rb
647
+ - lib/agile_proxy/model/recording.rb
648
+ - lib/agile_proxy/model/request_spec.rb
649
+ - lib/agile_proxy/model/response.rb
650
+ - lib/agile_proxy/model/user.rb
651
+ - lib/agile_proxy/proxy_connection.rb
652
+ - lib/agile_proxy/rack/get_only_cache.rb
653
+ - lib/agile_proxy/route.rb
654
+ - lib/agile_proxy/router.rb
655
+ - lib/agile_proxy/server.rb
656
+ - lib/agile_proxy/servers/api.rb
657
+ - lib/agile_proxy/servers/request_spec.rb
658
+ - lib/agile_proxy/servers/request_spec_direct.rb
659
+ - lib/agile_proxy/version.rb
660
+ - load_proxy.js
661
+ - log/.gitkeep
662
+ - spec/common_helper.rb
663
+ - spec/fixtures/example_static_file.html
664
+ - spec/fixtures/test-server.crt
665
+ - spec/fixtures/test-server.key
666
+ - spec/integration/helpers/request_spec_helper.rb
667
+ - spec/integration/specs/lib/server_spec.rb
668
+ - spec/integration_spec_helper.rb
669
+ - spec/spec_helper.rb
670
+ - spec/support/test_server.rb
671
+ - spec/unit/agile_proxy/api/applications_spec.rb
672
+ - spec/unit/agile_proxy/api/common_helper.rb
673
+ - spec/unit/agile_proxy/api/recordings_spec.rb
674
+ - spec/unit/agile_proxy/api/request_spec_recordings_spec.rb
675
+ - spec/unit/agile_proxy/api/request_specs_spec.rb
676
+ - spec/unit/agile_proxy/handlers/handler_spec.rb
677
+ - spec/unit/agile_proxy/handlers/proxy_handler_spec.rb
678
+ - spec/unit/agile_proxy/handlers/request_handler_spec.rb
679
+ - spec/unit/agile_proxy/handlers/stub_handler_spec.rb
680
+ - spec/unit/agile_proxy/model/recording_spec.rb
681
+ - spec/unit/agile_proxy/model/request_spec_spec.rb
682
+ - spec/unit/agile_proxy/model/response_spec.rb
683
+ - spec/unit/agile_proxy/server_spec.rb
684
+ - spec/unit/agile_proxy/servers/api_spec.rb
685
+ - spec/unit/agile_proxy/servers/request_spec_direct_spec.rb
686
+ - spec/unit/agile_proxy/servers/request_spec_spec.rb
687
+ homepage: https://github.com/garytaylor/agileproxy
688
+ licenses: []
689
+ metadata: {}
690
+ post_install_message:
691
+ rdoc_options: []
692
+ require_paths:
693
+ - lib
694
+ required_ruby_version: !ruby/object:Gem::Requirement
695
+ requirements:
696
+ - - '>='
697
+ - !ruby/object:Gem::Version
698
+ version: '0'
699
+ required_rubygems_version: !ruby/object:Gem::Requirement
700
+ requirements:
701
+ - - '>='
702
+ - !ruby/object:Gem::Version
703
+ version: '0'
704
+ requirements: []
705
+ rubyforge_project:
706
+ rubygems_version: 2.4.5
707
+ signing_key:
708
+ specification_version: 4
709
+ summary: An agile, programmable, controllable flexible proxy server for development or test use
710
+ test_files:
711
+ - spec/common_helper.rb
712
+ - spec/fixtures/example_static_file.html
713
+ - spec/fixtures/test-server.crt
714
+ - spec/fixtures/test-server.key
715
+ - spec/integration/helpers/request_spec_helper.rb
716
+ - spec/integration/specs/lib/server_spec.rb
717
+ - spec/integration_spec_helper.rb
718
+ - spec/spec_helper.rb
719
+ - spec/support/test_server.rb
720
+ - spec/unit/agile_proxy/api/applications_spec.rb
721
+ - spec/unit/agile_proxy/api/common_helper.rb
722
+ - spec/unit/agile_proxy/api/recordings_spec.rb
723
+ - spec/unit/agile_proxy/api/request_spec_recordings_spec.rb
724
+ - spec/unit/agile_proxy/api/request_specs_spec.rb
725
+ - spec/unit/agile_proxy/handlers/handler_spec.rb
726
+ - spec/unit/agile_proxy/handlers/proxy_handler_spec.rb
727
+ - spec/unit/agile_proxy/handlers/request_handler_spec.rb
728
+ - spec/unit/agile_proxy/handlers/stub_handler_spec.rb
729
+ - spec/unit/agile_proxy/model/recording_spec.rb
730
+ - spec/unit/agile_proxy/model/request_spec_spec.rb
731
+ - spec/unit/agile_proxy/model/response_spec.rb
732
+ - spec/unit/agile_proxy/server_spec.rb
733
+ - spec/unit/agile_proxy/servers/api_spec.rb
734
+ - spec/unit/agile_proxy/servers/request_spec_direct_spec.rb
735
+ - spec/unit/agile_proxy/servers/request_spec_spec.rb
736
+ has_rdoc: