chemistrykit 3.9.0.rc1 → 3.9.0.rc2
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.
- data/.gitignore +2 -0
- data/CHANGELOG.md +3 -0
- data/README.md +10 -2
- data/chemistrykit.gemspec +2 -2
- data/features/basic_auth.feature +49 -0
- data/lib/chemistrykit/cli/cli.rb +16 -0
- data/lib/chemistrykit/configuration.rb +3 -1
- metadata +6 -4
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#ChemistryKit 3.9.0-rc.
|
|
1
|
+
#ChemistryKit 3.9.0-rc.2 (2013-08-14)
|
|
2
2
|
|
|
3
3
|
[](http://badge.fury.io/rb/chemistrykit) [](https://travis-ci.org/jrobertfox/chef-broiler-platter) [](https://codeclimate.com/github/arrgyle/chemistrykit) [](https://coveralls.io/r/arrgyle/chemistrykit?branch=develop)
|
|
4
4
|
|
|
@@ -123,7 +123,7 @@ Note that because the `Chemist` is set after the instantiation of your formula b
|
|
|
123
123
|
describe "my beaker", :depth => 'shallow' do
|
|
124
124
|
let(:my_formula) { @formula_lab.using('my_formula').with('admin1').mix }
|
|
125
125
|
# or
|
|
126
|
-
let(:my_other_formula) { @formula_lab.
|
|
126
|
+
let(:my_other_formula) { @formula_lab.mix('my_other_formula') }
|
|
127
127
|
...
|
|
128
128
|
end
|
|
129
129
|
```
|
|
@@ -187,6 +187,14 @@ ChemistryKit is configured by default with a `config.yaml` file that is created
|
|
|
187
187
|
|
|
188
188
|
`screenshot_on_fail` By default false, set to true to download a screenshot of the failure (supported by sauce labs for now.)
|
|
189
189
|
|
|
190
|
+
`basic_auth: username:` The username to access your site with basic HTTP authentication
|
|
191
|
+
|
|
192
|
+
`basic_auth: password:` The password to access your site with basic HTTP authentication
|
|
193
|
+
|
|
194
|
+
`basic_auth: http_path:` An HTTP end-point loaded before each test run to cache the credentials for the test run
|
|
195
|
+
|
|
196
|
+
`basic_auth: https_path:` An HTTPS end-point loaded before each test run to cache the credentials for the test run
|
|
197
|
+
|
|
190
198
|
###new
|
|
191
199
|
Creates a new ChemistryKit project.
|
|
192
200
|
|
data/chemistrykit.gemspec
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = 'chemistrykit'
|
|
5
|
-
s.version = '3.9.0.
|
|
5
|
+
s.version = '3.9.0.rc2'
|
|
6
6
|
s.platform = Gem::Platform::RUBY
|
|
7
7
|
s.authors = ['Dave Haeffner', 'Jason Fox']
|
|
8
8
|
s.email = ['dave@arrgyle.com', 'jason@arrgyle.com']
|
|
9
9
|
s.homepage = 'https://github.com/arrgyle/chemistrykit'
|
|
10
10
|
s.summary = 'A simple and opinionated web testing framework for Selenium that follows convention over configuration.'
|
|
11
|
-
s.description = 'Added
|
|
11
|
+
s.description = 'Added basic http authentication support'
|
|
12
12
|
s.license = 'MIT'
|
|
13
13
|
|
|
14
14
|
s.files = `git ls-files`.split($/)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
Feature: Basic Authentication
|
|
2
|
+
|
|
3
|
+
Selenium 2 does not allow header injection. So in order to support basic auth, we will pre-load HTTP and HTTPS URLs with get actions before each test execution in order for the browser to cache this information.
|
|
4
|
+
|
|
5
|
+
This way tests will be able to execute without being prompted by a modal dialog box.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given I run `ckit new basic_auth_harness`
|
|
10
|
+
And I cd to "basic_auth_harness"
|
|
11
|
+
And a file named "beakers/basic_auth_1_beaker.rb" with:
|
|
12
|
+
"""
|
|
13
|
+
describe "Basic Auth", :depth => 'shallow' do
|
|
14
|
+
it "works without providing credentials in the URL" do
|
|
15
|
+
@driver.get ENV['BASE_URL']
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
Scenario: Pre-load HTTP before each test
|
|
21
|
+
And a file named "config.yaml" with:
|
|
22
|
+
"""
|
|
23
|
+
base_url: 'http://the-internet.herokuapp.com/basic_auth'
|
|
24
|
+
basic_auth:
|
|
25
|
+
username: 'admin'
|
|
26
|
+
password: 'admin'
|
|
27
|
+
http_path: '/'
|
|
28
|
+
"""
|
|
29
|
+
When I run `ckit brew`
|
|
30
|
+
Then the stdout should contain "1 example, 0 failures"
|
|
31
|
+
|
|
32
|
+
Scenario: Pre-load HTTP before each test without the http_path set
|
|
33
|
+
And a file named "config.yaml" with:
|
|
34
|
+
"""
|
|
35
|
+
base_url: 'http://the-internet.herokuapp.com/basic_auth'
|
|
36
|
+
basic_auth:
|
|
37
|
+
username: 'admin'
|
|
38
|
+
password: 'admin'
|
|
39
|
+
"""
|
|
40
|
+
When I run `ckit brew`
|
|
41
|
+
Then the stdout should contain "1 example, 0 failures"
|
|
42
|
+
|
|
43
|
+
Scenario: Works without Basic Auth
|
|
44
|
+
And a file named "config.yaml" with:
|
|
45
|
+
"""
|
|
46
|
+
base_url: 'http://google.com'
|
|
47
|
+
"""
|
|
48
|
+
When I run `ckit brew`
|
|
49
|
+
Then the stdout should contain "1 example, 0 failures"
|
data/lib/chemistrykit/cli/cli.rb
CHANGED
|
@@ -210,6 +210,22 @@ module ChemistryKit
|
|
|
210
210
|
|
|
211
211
|
example.run
|
|
212
212
|
end
|
|
213
|
+
c.before(:each) do
|
|
214
|
+
# basic auth caching
|
|
215
|
+
if config.basic_auth[:username]
|
|
216
|
+
if config.basic_auth[:http_path]
|
|
217
|
+
basic_auth_http_url = config.base_url.gsub(%r{http://}, "http:\/\/#{config.basic_auth[:username]}:#{config.basic_auth[:password]}@") + config.basic_auth[:http_path]
|
|
218
|
+
@driver.get basic_auth_http_url
|
|
219
|
+
else
|
|
220
|
+
basic_auth_http_url = config.base_url.gsub(%r{http://}, "http:\/\/#{config.basic_auth[:username]}:#{config.basic_auth[:password]}@")
|
|
221
|
+
@driver.get basic_auth_http_url
|
|
222
|
+
end
|
|
223
|
+
if config.basic_auth[:https_path]
|
|
224
|
+
basic_auth_https_url = config.base_url.gsub(%r{http://}, "https:\/\/#{config.basic_auth[:username]}:#{config.basic_auth[:password]}@") + config.basic_auth[:https_path]
|
|
225
|
+
@driver.get basic_auth_https_url
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
213
229
|
c.after(:each) do
|
|
214
230
|
if example.exception != nil
|
|
215
231
|
@job.finish failed: true, failshot: @config.screenshot_on_fail
|
|
@@ -10,7 +10,8 @@ module ChemistryKit
|
|
|
10
10
|
attr_accessor :base_url,
|
|
11
11
|
:concurrency,
|
|
12
12
|
:screenshot_on_fail,
|
|
13
|
-
:retries_on_failure
|
|
13
|
+
:retries_on_failure,
|
|
14
|
+
:basic_auth
|
|
14
15
|
|
|
15
16
|
attr_reader :log
|
|
16
17
|
|
|
@@ -26,6 +27,7 @@ module ChemistryKit
|
|
|
26
27
|
@log.path = 'evidence'
|
|
27
28
|
@log.results_file = 'results_junit.xml'
|
|
28
29
|
@log.format = 'ChemistryKit::RSpec::JUnitFormatter'
|
|
30
|
+
@basic_auth = {}
|
|
29
31
|
|
|
30
32
|
# overide with argument
|
|
31
33
|
populate_with_hash hash
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chemistrykit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.9.0.
|
|
4
|
+
version: 3.9.0.rc2
|
|
5
5
|
prerelease: 6
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2013-08-
|
|
13
|
+
date: 2013-08-14 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: thor
|
|
@@ -204,7 +204,7 @@ dependencies:
|
|
|
204
204
|
- - ~>
|
|
205
205
|
- !ruby/object:Gem::Version
|
|
206
206
|
version: 0.5.2
|
|
207
|
-
description: Added
|
|
207
|
+
description: Added basic http authentication support
|
|
208
208
|
email:
|
|
209
209
|
- dave@arrgyle.com
|
|
210
210
|
- jason@arrgyle.com
|
|
@@ -231,6 +231,7 @@ files:
|
|
|
231
231
|
- bin/ckit
|
|
232
232
|
- chemistrykit.gemspec
|
|
233
233
|
- exceptions.reek
|
|
234
|
+
- features/basic_auth.feature
|
|
234
235
|
- features/brew.feature
|
|
235
236
|
- features/catalyst.feature
|
|
236
237
|
- features/chemists.feature
|
|
@@ -341,12 +342,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
341
342
|
version: 1.3.1
|
|
342
343
|
requirements: []
|
|
343
344
|
rubyforge_project:
|
|
344
|
-
rubygems_version: 1.8.
|
|
345
|
+
rubygems_version: 1.8.24
|
|
345
346
|
signing_key:
|
|
346
347
|
specification_version: 3
|
|
347
348
|
summary: A simple and opinionated web testing framework for Selenium that follows
|
|
348
349
|
convention over configuration.
|
|
349
350
|
test_files:
|
|
351
|
+
- features/basic_auth.feature
|
|
350
352
|
- features/brew.feature
|
|
351
353
|
- features/catalyst.feature
|
|
352
354
|
- features/chemists.feature
|