riot-gear 0.0.1 → 0.0.2
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/README.md +5 -3
- data/Rakefile +26 -0
- data/VERSION +1 -1
- data/lib/riot/gear/context/asserts_header.rb +6 -6
- data/lib/riot/gear/context/asserts_json.rb +6 -6
- data/lib/riot/gear/context/asserts_status.rb +6 -6
- data/lib/riot/gear/context/http.rb +6 -6
- data/lib/riot/gear/middleware/riotparty.rb +3 -2
- data/riot-gear.gemspec +12 -3
- data/test/helpers/json_path_test.rb +59 -0
- data/test/teststrap.rb +8 -0
- metadata +20 -5
data/README.md
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
|
3
3
|
Real HTTP-based smoke testing with a real testing framework; [Riot](http://thumblemonks.github.com/riot) + [HTTParty]().
|
4
4
|
|
5
|
-
require '
|
5
|
+
require 'teststrap'
|
6
6
|
|
7
7
|
context "Logging into Example.com as foo" do
|
8
8
|
base_uri "http://example.com"
|
9
|
-
|
9
|
+
get "/session/new?username=foo&password=password"
|
10
10
|
|
11
11
|
asserts_status.equals(200)
|
12
12
|
asserts_header("Content-Type").equals("application/json;charset=utf-8")
|
13
|
-
|
13
|
+
|
14
|
+
# ... more stuff
|
15
|
+
end
|
14
16
|
|
15
17
|
Lots lots more to come soon.
|
data/Rakefile
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
|
2
3
|
require 'rake'
|
4
|
+
require 'rake/testtask'
|
5
|
+
|
6
|
+
#
|
7
|
+
# Other rake tasks
|
8
|
+
|
9
|
+
Dir[File.dirname(__FILE__) + "/lib/tasks/*.rake"].each { |rake_task| load rake_task }
|
10
|
+
|
11
|
+
#
|
12
|
+
# Console!
|
13
|
+
|
14
|
+
task(:console) { exec "irb -r boot" }
|
15
|
+
|
16
|
+
#
|
17
|
+
# Testing
|
18
|
+
|
19
|
+
Rake::TestTask.new("test") do |t|
|
20
|
+
t.libs << "test"
|
21
|
+
t.pattern = "test/**/*_test.rb"
|
22
|
+
t.verbose = false
|
23
|
+
end
|
24
|
+
Rake::Task["test"].instance_variable_set(:@full_comment, nil) # Dumb dumb dumb
|
25
|
+
Rake::Task["test"].comment = "Run the tests!"
|
26
|
+
|
27
|
+
task :default => :test
|
3
28
|
|
4
29
|
#
|
5
30
|
# Some monks like diamonds. I like gems.
|
@@ -15,6 +40,7 @@ begin
|
|
15
40
|
gem.authors = ["Justin 'Gus' Knowlden"]
|
16
41
|
gem.add_dependency 'riot'
|
17
42
|
gem.add_dependency 'httparty'
|
43
|
+
gem.add_development_dependency 'webmock'
|
18
44
|
end
|
19
45
|
Jeweler::GemcutterTasks.new
|
20
46
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
|
3
|
-
module
|
4
|
-
module
|
3
|
+
module Riot
|
4
|
+
module Gear
|
5
5
|
module AssertsHeader
|
6
6
|
|
7
7
|
def asserts_header(header_key)
|
8
8
|
asserts("header variable #{header_key}") { response.headers[header_key] }
|
9
9
|
end
|
10
10
|
|
11
|
-
end #
|
12
|
-
end #
|
13
|
-
end #
|
11
|
+
end # AssertsHeader
|
12
|
+
end # Gear
|
13
|
+
end # Riot
|
14
14
|
|
15
|
-
Riot::Context.instance_eval { include
|
15
|
+
Riot::Context.instance_eval { include Riot::Gear::AssertsHeader }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
|
3
|
-
module
|
4
|
-
module
|
3
|
+
module Riot
|
4
|
+
module Gear
|
5
5
|
module AssertsJson
|
6
6
|
|
7
7
|
def asserts_json(json_path)
|
@@ -9,8 +9,8 @@ module SmokeMonster
|
|
9
9
|
json_path(response, json_path)
|
10
10
|
end
|
11
11
|
end
|
12
|
-
end #
|
13
|
-
end #
|
14
|
-
end #
|
12
|
+
end # AssertsJson
|
13
|
+
end # Gear
|
14
|
+
end # Riot
|
15
15
|
|
16
|
-
Riot::Context.instance_eval { include
|
16
|
+
Riot::Context.instance_eval { include Riot::Gear::AssertsJson }
|
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
|
3
|
-
module
|
4
|
-
module
|
3
|
+
module Riot
|
4
|
+
module Gear
|
5
5
|
module AssertsStatus
|
6
6
|
|
7
7
|
def asserts_status
|
8
8
|
asserts("status code") { response.code }
|
9
9
|
end
|
10
10
|
|
11
|
-
end #
|
12
|
-
end #
|
13
|
-
end #
|
11
|
+
end # AssertsStatus
|
12
|
+
end # Gear
|
13
|
+
end # Riot
|
14
14
|
|
15
|
-
Riot::Context.instance_eval { include
|
15
|
+
Riot::Context.instance_eval { include Riot::Gear::AssertsStatus }
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
require 'httparty'
|
3
3
|
|
4
|
-
module
|
5
|
-
module
|
4
|
+
module Riot
|
5
|
+
module Gear
|
6
6
|
module Http
|
7
7
|
|
8
8
|
# Setup the scenario via a GET requst to the provided path. Feel free to include a query string
|
@@ -15,8 +15,8 @@ module SmokeMonster
|
|
15
15
|
topic.cookies({cookie_name => cookie_values[cookie_name]})
|
16
16
|
end
|
17
17
|
end
|
18
|
-
end #
|
19
|
-
end #
|
20
|
-
end #
|
18
|
+
end # Http
|
19
|
+
end # Gear
|
20
|
+
end # Riot
|
21
21
|
|
22
|
-
Riot::Context.instance_eval { include
|
22
|
+
Riot::Context.instance_eval { include Riot::Gear::Http }
|
@@ -65,8 +65,9 @@ module Riot
|
|
65
65
|
# => "bar"
|
66
66
|
def helper_json_path(context)
|
67
67
|
context.helper(:json_path) do |dictionary, path|
|
68
|
-
path.
|
69
|
-
|
68
|
+
return nil if path.to_s.empty?
|
69
|
+
path.scan(/[^\[\].'"]+/).inject(dictionary) do |dict,key|
|
70
|
+
dict[key =~ /^\d+$/ ? key.to_i : key.strip]
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
data/riot-gear.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{riot-gear}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Justin 'Gus' Knowlden"]
|
12
|
-
s.date = %q{2010-06-
|
12
|
+
s.date = %q{2010-06-24}
|
13
13
|
s.description = %q{Riot + HTTParty smoke testing framework. You'd use it for integration testing with real HTTP requests and responses}
|
14
14
|
s.email = %q{gus@gusg.us}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,13 +28,19 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/riot/gear/context/http.rb",
|
29
29
|
"lib/riot/gear/middleware.rb",
|
30
30
|
"lib/riot/gear/middleware/riotparty.rb",
|
31
|
-
"riot-gear.gemspec"
|
31
|
+
"riot-gear.gemspec",
|
32
|
+
"test/helpers/json_path_test.rb",
|
33
|
+
"test/teststrap.rb"
|
32
34
|
]
|
33
35
|
s.homepage = %q{http://github.com/thumblemonks/riot-gear}
|
34
36
|
s.rdoc_options = ["--charset=UTF-8"]
|
35
37
|
s.require_paths = ["lib"]
|
36
38
|
s.rubygems_version = %q{1.3.6}
|
37
39
|
s.summary = %q{Riot + HTTParty smoke testing framework}
|
40
|
+
s.test_files = [
|
41
|
+
"test/helpers/json_path_test.rb",
|
42
|
+
"test/teststrap.rb"
|
43
|
+
]
|
38
44
|
|
39
45
|
if s.respond_to? :specification_version then
|
40
46
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -43,13 +49,16 @@ Gem::Specification.new do |s|
|
|
43
49
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
44
50
|
s.add_runtime_dependency(%q<riot>, [">= 0"])
|
45
51
|
s.add_runtime_dependency(%q<httparty>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<webmock>, [">= 0"])
|
46
53
|
else
|
47
54
|
s.add_dependency(%q<riot>, [">= 0"])
|
48
55
|
s.add_dependency(%q<httparty>, [">= 0"])
|
56
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
49
57
|
end
|
50
58
|
else
|
51
59
|
s.add_dependency(%q<riot>, [">= 0"])
|
52
60
|
s.add_dependency(%q<httparty>, [">= 0"])
|
61
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
53
62
|
end
|
54
63
|
end
|
55
64
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'teststrap'
|
2
|
+
|
3
|
+
context "The json_path helper" do
|
4
|
+
asserts("providing a nil path") { json_path({"a" => "foo"}, nil) }.nil
|
5
|
+
asserts("providing a blank path") { json_path({"a" => "foo"}, "") }.nil
|
6
|
+
asserts("providing a non-existent path") { json_path({"a" => "foo"}, "b") }.nil
|
7
|
+
|
8
|
+
asserts("path of existing 'a'") { json_path({"a" => "foo"}, "a") }.equals("foo")
|
9
|
+
asserts("path of non-existent 'a.b'") { json_path({"a" => "foo"}, "a.b") }.nil
|
10
|
+
|
11
|
+
asserts("path of existing 'a.b'") { json_path({"a" => {"b" => "bar"}}, "a.b") }.equals("bar")
|
12
|
+
asserts("path of existing 'a.b.c'") { json_path({"a" => {"b" => {"c" => "car"}}}, "a.b.c") }.equals("car")
|
13
|
+
|
14
|
+
context "for hash based-lookups" do
|
15
|
+
asserts("path of existing '[a]'") do
|
16
|
+
json_path({"a" => {"b" => "bar"}}, '["a"]')
|
17
|
+
end.equals({"b" => "bar"})
|
18
|
+
|
19
|
+
asserts("path of existing 'a[\"b\"]'") do
|
20
|
+
json_path({"a" => {"b" => "bar"}}, 'a["b"]')
|
21
|
+
end.equals("bar")
|
22
|
+
|
23
|
+
asserts("path of existing 'a['b']'") do
|
24
|
+
json_path({"a" => {"b" => "bar"}}, "a['b']")
|
25
|
+
end.equals("bar")
|
26
|
+
|
27
|
+
asserts("path of existing 'a[b]'") do
|
28
|
+
json_path({"a" => {"b" => "bar"}}, "a[b]")
|
29
|
+
end.equals("bar")
|
30
|
+
|
31
|
+
asserts("path of existing 'a[ b ]'") do
|
32
|
+
json_path({"a" => {"b" => "bar"}}, "a[ b ]")
|
33
|
+
end.equals("bar")
|
34
|
+
|
35
|
+
asserts("path of existing 'a[b-ar]'") do
|
36
|
+
json_path({"a" => {"b" => "bar"}}, "a[b-ar]")
|
37
|
+
end.nil
|
38
|
+
end # for hash based-lookups
|
39
|
+
|
40
|
+
context "for index based-lookups" do
|
41
|
+
asserts("path of existing '[0]'") do
|
42
|
+
json_path(["foo", "bar"], '[0]')
|
43
|
+
end.equals("foo")
|
44
|
+
|
45
|
+
asserts("path of existing '[\"0\"]'") do
|
46
|
+
json_path(["foo", "bar"], '["0"]')
|
47
|
+
end.equals("foo")
|
48
|
+
|
49
|
+
asserts("path of existing 'a[1]'") do
|
50
|
+
json_path({"a" => ["foo", "bar"]}, 'a[1]')
|
51
|
+
end.equals("bar")
|
52
|
+
end # for index based-lookups
|
53
|
+
|
54
|
+
context "for mix of dot, hash, index based-lookups" do
|
55
|
+
asserts("path of existing '[a][1].c[0]'") do
|
56
|
+
json_path({"a" => [ {"b" => "nil"}, {"c" => ["foo", "bar"]} ]}, '[a][1].c[0]')
|
57
|
+
end.equals("foo")
|
58
|
+
end # for mix of hash and index based-lookups
|
59
|
+
end # The json_path helper
|
data/test/teststrap.rb
ADDED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Justin 'Gus' Knowlden
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-24 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -41,6 +41,18 @@ dependencies:
|
|
41
41
|
version: "0"
|
42
42
|
type: :runtime
|
43
43
|
version_requirements: *id002
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: webmock
|
46
|
+
prerelease: false
|
47
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
type: :development
|
55
|
+
version_requirements: *id003
|
44
56
|
description: Riot + HTTParty smoke testing framework. You'd use it for integration testing with real HTTP requests and responses
|
45
57
|
email: gus@gusg.us
|
46
58
|
executables: []
|
@@ -63,6 +75,8 @@ files:
|
|
63
75
|
- lib/riot/gear/middleware.rb
|
64
76
|
- lib/riot/gear/middleware/riotparty.rb
|
65
77
|
- riot-gear.gemspec
|
78
|
+
- test/helpers/json_path_test.rb
|
79
|
+
- test/teststrap.rb
|
66
80
|
has_rdoc: true
|
67
81
|
homepage: http://github.com/thumblemonks/riot-gear
|
68
82
|
licenses: []
|
@@ -93,5 +107,6 @@ rubygems_version: 1.3.6
|
|
93
107
|
signing_key:
|
94
108
|
specification_version: 3
|
95
109
|
summary: Riot + HTTParty smoke testing framework
|
96
|
-
test_files:
|
97
|
-
|
110
|
+
test_files:
|
111
|
+
- test/helpers/json_path_test.rb
|
112
|
+
- test/teststrap.rb
|