itesttool 0.0.2 → 0.1.1
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.
- checksums.yaml +7 -0
- data/README.md +4 -4
- data/lib/itesttool.rb +37 -38
- data/lib/itesttool/version.rb +1 -1
- metadata +10 -34
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 14920484d88852f8b7c1bc5592a3b4d98af23cdf
|
4
|
+
data.tar.gz: e1cd94ec83d0d827d25e02f13bfa88417e00fa5e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e357a00e1c4fdb8921b333b749d32a5bb2d8ad3f2941239b9b591addb74ca08bd0d1a489cea65af04a8a5c643fe07735ffe1b4c28a23713745d3fdef9de78e09
|
7
|
+
data.tar.gz: 8b7307fb4b842fc049a69c35fcee2b645fb7314226ff87fd44d0f74fe49800ad75acb3fafa8e10fc5a85d0d36fb475ccefe08b8c6608caf23ef8f513f412f37d
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ itesttool is Web API end-to-end test tool in RSpec.
|
|
7
7
|
```ruby
|
8
8
|
describe 'send GET request' do
|
9
9
|
_given {
|
10
|
-
headers 'referer' => 'http://local.example.com'
|
10
|
+
headers 'referer' => 'http://local.example.com'
|
11
11
|
}
|
12
12
|
_when { get 'http://localhost:4567/index', as_json }
|
13
13
|
_then {
|
@@ -23,7 +23,7 @@ end
|
|
23
23
|
Add this line to your application's Gemfile
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
gem '
|
26
|
+
gem 'itesttool'
|
27
27
|
```
|
28
28
|
|
29
29
|
And then execute
|
@@ -48,7 +48,7 @@ require 'itesttool'
|
|
48
48
|
```ruby
|
49
49
|
describe 'send GET request' do
|
50
50
|
_given {
|
51
|
-
headers 'referer' => 'http://local.example.com'
|
51
|
+
headers 'referer' => 'http://local.example.com'
|
52
52
|
}
|
53
53
|
_when { get 'http://localhost:4567/index' }
|
54
54
|
_then {
|
@@ -58,7 +58,7 @@ end
|
|
58
58
|
```
|
59
59
|
|
60
60
|
|
61
|
-
##
|
61
|
+
## assert HTTP response
|
62
62
|
assert status code:
|
63
63
|
```ruby
|
64
64
|
res.code.should eq '200'
|
data/lib/itesttool.rb
CHANGED
@@ -8,11 +8,13 @@ require 'nokogiri'
|
|
8
8
|
require "itesttool/version"
|
9
9
|
require "itesttool/custom_matchers"
|
10
10
|
|
11
|
+
def feature(s, &b) describe(s, &b) end
|
12
|
+
def scenario(s, &b) describe(s, &b) end
|
11
13
|
def _given(&b) before(:each, &b) end
|
12
14
|
def _when(&b) let(:res, &b) end
|
13
15
|
def _then(&b) it(&b) end
|
14
16
|
|
15
|
-
module
|
17
|
+
module Itesttool
|
16
18
|
|
17
19
|
def as_text() "text" end
|
18
20
|
def as_json() "json" end
|
@@ -28,7 +30,15 @@ module ItestHelpers
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def query(h = {})
|
31
|
-
|
33
|
+
q = []
|
34
|
+
h.each do |k, v|
|
35
|
+
if v.is_a? Array
|
36
|
+
q.concat( v.map { | p | URI.encode(k.to_s) + "=" + URI.encode(p.to_s) } )
|
37
|
+
else
|
38
|
+
q << URI.encode(k.to_s) + "=" + URI.encode(v.to_s)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
q.join("&")
|
32
42
|
end
|
33
43
|
|
34
44
|
def body(data = "")
|
@@ -41,61 +51,41 @@ module ItestHelpers
|
|
41
51
|
{:json => data}
|
42
52
|
end
|
43
53
|
|
54
|
+
|
44
55
|
def get(url, res_format="text", query="")
|
45
56
|
url_obj = URI.parse(url)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
request = Net::HTTP::Get.new(path_with_query)
|
57
|
-
add_headers(request)
|
58
|
-
http.request(request)
|
59
|
-
}
|
57
|
+
queries = []
|
58
|
+
queries.push(query) unless query.empty?
|
59
|
+
queries.push(url_obj.query) unless url_obj.query.nil?
|
60
|
+
path_with_query =
|
61
|
+
if queries.empty?
|
62
|
+
url_obj.path
|
63
|
+
else
|
64
|
+
url_obj.path + "?" + queries.join("&")
|
65
|
+
end
|
66
|
+
res = execute_request(url_obj, nil){Net::HTTP::Get.new(path_with_query)}
|
60
67
|
decorate_response(res, "GET", url, res_format)
|
61
68
|
end
|
62
69
|
|
63
70
|
def post(url, data, res_format)
|
64
71
|
url_obj = URI.parse(url)
|
65
|
-
res = Net::HTTP.
|
66
|
-
request = Net::HTTP::Post.new(url_obj.path)
|
67
|
-
setup(request, data)
|
68
|
-
http.request(request)
|
69
|
-
}
|
72
|
+
res = execute_request(url_obj, data){Net::HTTP::Post.new(url_obj.path)}
|
70
73
|
decorate_response(res, "POST", url, res_format)
|
71
74
|
end
|
72
75
|
|
73
76
|
def put(url, data, res_format)
|
74
77
|
url_obj = URI.parse(url)
|
75
|
-
res = Net::HTTP.
|
76
|
-
request = Net::HTTP::Put.new(url_obj.path)
|
77
|
-
setup(request, data)
|
78
|
-
http.request(request)
|
79
|
-
}
|
78
|
+
res = execute_request(url_obj, data){Net::HTTP::Put.new(url_obj.path)}
|
80
79
|
decorate_response(res, "PUT", url, res_format)
|
81
80
|
end
|
82
81
|
|
83
82
|
def delete(url, data, res_format)
|
84
83
|
url_obj = URI.parse(url)
|
85
|
-
res = Net::HTTP.
|
86
|
-
request = Net::HTTP::DELETE.new(url_obj.path)
|
87
|
-
setup(request, data)
|
88
|
-
http.request(request)
|
89
|
-
}
|
84
|
+
res = execute_request(url_obj, data){Net::HTTP::DELETE.new(url_obj.path)}
|
90
85
|
decorate_response(res, "DELETE", url, res_format)
|
91
86
|
end
|
92
87
|
|
93
88
|
private
|
94
|
-
def setup(request, data)
|
95
|
-
set_body(request, data)
|
96
|
-
add_headers(request)
|
97
|
-
end
|
98
|
-
|
99
89
|
def add_headers(request)
|
100
90
|
if @headers then @headers.each{|k, v| request.add_field k, v} end
|
101
91
|
end
|
@@ -147,10 +137,19 @@ private
|
|
147
137
|
res
|
148
138
|
end
|
149
139
|
|
150
|
-
|
140
|
+
def execute_request(url_obj, data, &block)
|
141
|
+
Net::HTTP.start(url_obj.host, url_obj.port, :use_ssl => /https/ === url_obj.scheme) {|http|
|
142
|
+
request = block.call
|
143
|
+
set_body(request, data) unless data.nil?
|
144
|
+
add_headers(request)
|
145
|
+
http.request(request)
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
149
|
+
module_function :get, :post, :add_headers, :decorate_response, :execute_request
|
151
150
|
end
|
152
151
|
|
153
152
|
RSpec.configure do |c|
|
154
|
-
c.include
|
153
|
+
c.include Itesttool
|
155
154
|
end
|
156
155
|
|
data/lib/itesttool/version.rb
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itesttool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- bati11
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: json-schema
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - '='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - '='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: jsonpath
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: nokogiri
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: sinatra
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,7 +97,6 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: bundler
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,17 +111,15 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: rake
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
description: End-to-End Test tool for web api.
|
@@ -147,8 +130,8 @@ extensions: []
|
|
147
130
|
extra_rdoc_files: []
|
148
131
|
files:
|
149
132
|
- lib/itesttool.rb
|
150
|
-
- lib/itesttool/version.rb
|
151
133
|
- lib/itesttool/custom_matchers.rb
|
134
|
+
- lib/itesttool/version.rb
|
152
135
|
- Rakefile
|
153
136
|
- Gemfile
|
154
137
|
- README.md
|
@@ -156,32 +139,25 @@ files:
|
|
156
139
|
homepage: ''
|
157
140
|
licenses:
|
158
141
|
- MIT
|
142
|
+
metadata: {}
|
159
143
|
post_install_message:
|
160
144
|
rdoc_options: []
|
161
145
|
require_paths:
|
162
146
|
- lib
|
163
147
|
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
-
none: false
|
165
148
|
requirements:
|
166
|
-
- -
|
149
|
+
- - '>='
|
167
150
|
- !ruby/object:Gem::Version
|
168
151
|
version: '0'
|
169
|
-
segments:
|
170
|
-
- 0
|
171
|
-
hash: -2774708177748211322
|
172
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
153
|
requirements:
|
175
|
-
- -
|
154
|
+
- - '>='
|
176
155
|
- !ruby/object:Gem::Version
|
177
156
|
version: '0'
|
178
|
-
segments:
|
179
|
-
- 0
|
180
|
-
hash: -2774708177748211322
|
181
157
|
requirements: []
|
182
158
|
rubyforge_project:
|
183
|
-
rubygems_version:
|
159
|
+
rubygems_version: 2.0.14
|
184
160
|
signing_key:
|
185
|
-
specification_version:
|
161
|
+
specification_version: 4
|
186
162
|
summary: End-to-End Test tool for web api.
|
187
163
|
test_files: []
|