skink 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
+ Dir[File.dirname(__FILE__) + "/../../../spec/support/**/*.rb"].each {|f| STDOUT.puts f; require f}
2
+
1
3
  require 'skink/dsl'
2
4
 
3
5
  RSpec.configure do |config|
data/lib/skink/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Skink
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -7,6 +7,12 @@ shared_examples "a REST API test language" do
7
7
  response.body.size.should == 0
8
8
  end
9
9
 
10
+ it "has a helpful failure message for have_status_code" do
11
+ head "/"
12
+ expect { response.should have_status_code 500 }.to raise_error("expected status code 500, but got 200")
13
+ expect { response.should_not have_status_code 200 }.to raise_error("expected status code would not be 200, but dang, it was")
14
+ end
15
+
10
16
  it "is able to test a GET" do
11
17
  get "/"
12
18
  response.should have_status_code 200
@@ -59,6 +65,12 @@ shared_examples "a REST API test language" do
59
65
  response.body.should == "Welcome, authenticated client."
60
66
  end
61
67
 
68
+ it "is able to test requests requiring basic auth with long usernames or passwords" do
69
+ with_basic_auth "xanthomata.loosish@shazbot.invalid", "super-super-super-super-super-super-dooper-secret"
70
+ get "/protected"
71
+ response.should have_status_code 200
72
+ end
73
+
62
74
  it "is able to test the presence of specified response headers" do
63
75
  with_accept_header "application/json"
64
76
  get "/json_doc"
@@ -89,6 +101,15 @@ shared_examples "a REST API test language" do
89
101
  response.should have_jsonpath "root.foo.foo", /ow/
90
102
  response.should_not have_jsonpath "root.foo.foo", /oo/
91
103
  end
104
+
105
+ it "gives a helpful error message when have_xpath fails" do
106
+ with_accept_header "application/xml"
107
+ get "/xml_doc"
108
+ expect {response.should have_xpath "//not/a/valid/xpath"}.to raise_error(/^expected xpath .* in .*$/)
109
+ expect {response.should have_xpath "//root/foo", /not there/}.to raise_error(%r{^expected xpath .* with value /not there/ in .*$})
110
+ expect {response.should_not have_xpath "//foo/foo"}.to raise_error(/^expected xpath .* would not be in .*/)
111
+ expect {response.should_not have_xpath "//root/foo", /Some/}.to raise_error(%r{^expected xpath .* with value /Some/ would not be in .*$})
112
+ end
92
113
  end
93
114
 
94
115
  describe Skink::DSL do
@@ -0,0 +1,27 @@
1
+ RSpec::Matchers.define :have_status_code do |expected|
2
+ match do |response|
3
+ response.has_status_code? expected
4
+ end
5
+
6
+ failure_message_for_should do |response|
7
+ "expected status code #{expected}, but got #{response.status_code}"
8
+ end
9
+
10
+ failure_message_for_should_not do |response|
11
+ "expected status code would not be #{expected}, but dang, it was"
12
+ end
13
+ end
14
+
15
+ RSpec::Matchers.define :have_xpath do |xpath, value|
16
+ match do |response|
17
+ response.has_xpath? xpath, value
18
+ end
19
+
20
+ failure_message_for_should do |response|
21
+ "expected xpath #{xpath}#{value ? " with value #{value.inspect}" : ""} in #{response.body}"
22
+ end
23
+
24
+ failure_message_for_should_not do |response|
25
+ "expected xpath #{xpath}#{value ? " with value #{value.inspect}" : ""} would not be in #{response.body}"
26
+ end
27
+ end
data/spec/test_server.rb CHANGED
@@ -10,7 +10,7 @@ helpers do
10
10
 
11
11
  def authorized?
12
12
  @auth ||= Rack::Auth::Basic::Request.new(request.env)
13
- @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', 'admin']
13
+ @auth.provided? && @auth.basic? && @auth.credentials && (@auth.credentials == ['admin', 'admin'] || @auth.credentials == ['xanthomata.loosish@shazbot.invalid', 'super-super-super-super-super-super-dooper-secret'])
14
14
  end
15
15
  end
16
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skink
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-25 00:00:00.000000000 Z
12
+ date: 2012-09-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack-test
@@ -134,6 +134,7 @@ files:
134
134
  - skink.gemspec
135
135
  - spec/skink_dsl_spec.rb
136
136
  - spec/spec_helper.rb
137
+ - spec/support/matchers/response_matchers.rb
137
138
  - spec/test_server.rb
138
139
  homepage: https://github.com/toddthomas/skink.git
139
140
  licenses: []
@@ -162,4 +163,5 @@ summary: Skink is Capybara's smaller, more primitive companion.
162
163
  test_files:
163
164
  - spec/skink_dsl_spec.rb
164
165
  - spec/spec_helper.rb
166
+ - spec/support/matchers/response_matchers.rb
165
167
  - spec/test_server.rb