capybara-webmock 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e69719cce4e91cc7ba4729e4531ac628b7916d79
4
- data.tar.gz: 7e51a0fb77fabe0980eb7e8171d82b7f91e1860e
3
+ metadata.gz: 8e3c7f9c6e246d77b34e9f947b4af84a8531343f
4
+ data.tar.gz: d98c50cb3ee6dee0b686cafe14c3c71f636ab249
5
5
  SHA512:
6
- metadata.gz: 5430fdcf65dd0879d6cb6b82fc71bd21a1bb8e0dc65c97cc664f03d04f42104928da56189cc9dcc8fdbebee08d3de31114554aae91fe80585c585345a4fb656f
7
- data.tar.gz: d94effcf2a2534060a5f1ccc3de4cb325798400cc91efd6e6baeb31aa3e5e4170358917d77e7be082097658831edccc5d40262dd9204987dc6b195f5589ea759
6
+ metadata.gz: ef2b93c7683ed2b0b367c2d09f2c92ba4ac01148e1540b622eede9ed0dbb38fafcf114ddeb7aac7dcc6a6ab3ae61edbcbb1a20525d78cbf3582ff1401fbd3d88
7
+ data.tar.gz: cc9d48994dac4a77e5822f81cfde0bab5725c4909ede6eef26d4aa7e921d2f0b60bc941953d86aa71c98d5238fc9df69e30a154f6c007f29661da51e50605d62
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ *.gem
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Capybara::Webmock
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/capybara/webmock`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ > Mock external requests for Capybara Firefox & Chrome drivers
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ This gem currently supports Ruby on Rails applications with an RSpec test
6
+ suite.
6
7
 
7
8
  ## Installation
8
9
 
@@ -14,28 +15,74 @@ gem 'capybara-webmock'
14
15
 
15
16
  And then execute:
16
17
 
17
- $ bundle
18
+ ```
19
+ $ bundle
20
+ ```
18
21
 
19
22
  Or install it yourself as:
20
23
 
21
- $ gem install capybara-webmock
24
+ ```
25
+ $ gem install capybara-webmock
26
+ ```
22
27
 
23
28
  ## Usage
24
29
 
25
- TODO: Write usage instructions here
30
+ In your `spec/rails_helper.rb`, add the following:
31
+
32
+ ```ruby
33
+ require 'capybara/webmock'
34
+ ```
35
+
36
+ Then in your RSpec configuration:
37
+
38
+ ```ruby
39
+ RSpec.configure do |config|
40
+ config.before(:suite) do
41
+ Capybara::Webmock.start
42
+ end
43
+
44
+ config.after(:suite) do
45
+ Capybara::Webmock.stop
46
+ end
47
+ end
48
+ ```
49
+
50
+ Then use the capybara-webmock JavaScript driver:
51
+
52
+ ```ruby
53
+ Capybara.javascript_driver = :capybara_webmock
54
+ ```
26
55
 
27
56
  ## Development
28
57
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
58
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
59
+ `rake spec` to run the tests. You can also run `bin/console` for an interactive
60
+ prompt that will allow you to experiment.
30
61
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
62
+ To install this gem onto your local machine, run `bundle exec rake install`. To
63
+ release a new version, update the version number in `version.rb`, and then run
64
+ `bundle exec rake release`, which will create a git tag for the version, push
65
+ git commits and tags, and push the `.gem` file to
66
+ [rubygems.org](https://rubygems.org).
32
67
 
33
68
  ## Contributing
34
69
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/capybara-webmock. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
-
70
+ Bug reports and pull requests are welcome on GitHub at
71
+ https://github.com/[USERNAME]/capybara-webmock. This project is intended to be
72
+ a safe, welcoming space for collaboration, and contributors are expected to
73
+ adhere to the [Contributor Covenant](http://contributor-covenant.org) code of
74
+ conduct.
37
75
 
38
76
  ## License
39
77
 
40
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
78
+ The gem is available as open source under the terms of the [MIT
79
+ License](http://opensource.org/licenses/MIT).
80
+
81
+ ## About
82
+
83
+ [![Hashrocket logo](https://hashrocket.com/hashrocket_logo.svg)](https://hashrocket.com)
41
84
 
85
+ Capybara::Webmock is supported by the team at [Hashrocket, a multidisciplinary
86
+ design and development consultancy](https://hashrocket.com). If you'd like to
87
+ [work with us](https://hashrocket.com/contact-us/hire-us) or [join our
88
+ team](https://hashrocket.com/contact-us/jobs), don't hesitate to get in touch.
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Jake Worth', 'Dillon Hafer']
10
10
  spec.email = ['dev@hashrocket.com']
11
11
 
12
- spec.summary = %q{Mock external requests for Capybara Firefox & Chrome drivers}
12
+ spec.summary = %q{Mock external requests}
13
13
  spec.description = %q{Mock external requests for Capybara Firefox & Chrome drivers}
14
14
  spec.homepage = 'https://github.com/hashrocket/capybara-webmock'
15
15
  spec.license = 'MIT'
@@ -21,6 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "capybara", "~> 2.4"
25
+ spec.add_dependency "rack", "~> 1.4"
26
+ spec.add_dependency "rack-proxy", "0.6.0"
27
+
24
28
  spec.add_development_dependency "bundler", "~> 1.13"
25
29
  spec.add_development_dependency "rake", "~> 10.0"
26
30
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -1,7 +1,34 @@
1
- require "capybara/webmock/version"
1
+ require 'capybara'
2
+ require 'capybara/webmock/version'
3
+ require 'capybara/webmock/proxy'
2
4
 
3
5
  module Capybara
4
6
  module Webmock
5
- # Your code goes here...
7
+
8
+ class << self
9
+
10
+ def start
11
+ log_file = File.join('log', 'test.log')
12
+ gem_path = File.dirname(__FILE__)
13
+ proxy_file = File.join(gem_path, 'webmock', 'config.ru')
14
+ IO.popen("rackup #{proxy_file} >> #{log_file} 2>&1")
15
+ end
16
+
17
+ def stop
18
+ if File.exists?(Capybara::Webmock::Proxy::PID_FILE)
19
+ rack_pid = File.read(Capybara::Webmock::Proxy::PID_FILE).to_i
20
+ Process.kill('HUP', rack_pid)
21
+ end
22
+ end
23
+
24
+ end
6
25
  end
7
26
  end
27
+
28
+ Capybara.register_driver :capybara_webmock do |app|
29
+ profile = Selenium::WebDriver::Firefox::Profile.new
30
+ profile["network.proxy.type"] = 1
31
+ profile["network.proxy.http"] = '127.0.0.1'
32
+ profile["network.proxy.http_port"] = 9292
33
+ Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile)
34
+ end
@@ -0,0 +1,12 @@
1
+ require 'rack'
2
+ require 'capybara/webmock/proxy'
3
+
4
+ at_exit { Capybara::Webmock::Proxy.remove_pid }
5
+
6
+ trap('SIGHUP') {
7
+ Capybara::Webmock::Proxy.remove_pid
8
+ exit!
9
+ }
10
+
11
+ app = Capybara::Webmock::Proxy.new(Process.pid)
12
+ Rack::Handler::WEBrick.run app, { Port: 9292 }
@@ -0,0 +1,28 @@
1
+ require 'rack/proxy'
2
+
3
+ class Capybara::Webmock::Proxy < Rack::Proxy
4
+ PID_FILE = File.join('tmp', 'pids', 'capybara_webmock_proxy.pid')
5
+
6
+ def initialize(pid)
7
+ write_pid(pid)
8
+ end
9
+
10
+ def perform_request(env)
11
+ request = Rack::Request.new(env)
12
+ if request.host =~ %r{.*\.lvh.me}
13
+ super(env)
14
+ else
15
+ ['200', {'Content-Type' => 'text/html'}, ['ok']]
16
+ end
17
+ end
18
+
19
+ def self.remove_pid
20
+ File.delete(PID_FILE) if File.exists?(PID_FILE)
21
+ end
22
+
23
+ private
24
+
25
+ def write_pid(pid)
26
+ File.write(PID_FILE, pid)
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module Webmock
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-webmock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Worth
@@ -11,6 +11,48 @@ bindir: exe
11
11
  cert_chain: []
12
12
  date: 2016-10-07 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: capybara
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.4'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '2.4'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rack
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.4'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.4'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rack-proxy
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '='
47
+ - !ruby/object:Gem::Version
48
+ version: 0.6.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.6.0
14
56
  - !ruby/object:Gem::Dependency
15
57
  name: bundler
16
58
  requirement: !ruby/object:Gem::Requirement
@@ -71,6 +113,8 @@ files:
71
113
  - bin/setup
72
114
  - capybara-webmock.gemspec
73
115
  - lib/capybara/webmock.rb
116
+ - lib/capybara/webmock/config.ru
117
+ - lib/capybara/webmock/proxy.rb
74
118
  - lib/capybara/webmock/version.rb
75
119
  homepage: https://github.com/hashrocket/capybara-webmock
76
120
  licenses:
@@ -95,5 +139,5 @@ rubyforge_project:
95
139
  rubygems_version: 2.5.1
96
140
  signing_key:
97
141
  specification_version: 4
98
- summary: Mock external requests for Capybara Firefox & Chrome drivers
142
+ summary: Mock external requests
99
143
  test_files: []