itesttool 0.0.2 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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 'rspec-parameterized'
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
- ## asser HTTP response
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 ItestHelpers
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
- h.map{ |k, v| URI.encode(k) + "=" + URI.encode(v.to_s) }.join("&")
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
- res = Net::HTTP.start(url_obj.host, url_obj.port) {|http|
47
- queries = []
48
- queries.push(query) unless query.empty?
49
- queries.push(url_obj.query) unless url_obj.query.nil?
50
- path_with_query =
51
- if queries.empty?
52
- url_obj.path
53
- else
54
- url_obj.path + "?" + queries.join("&")
55
- end
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.start(url_obj.host, url_obj.port) {|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.start(url_obj.host, url_obj.port) {|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.start(url_obj.host, url_obj.port) {|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
- module_function :get, :post, :add_headers, :decorate_response
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 ItestHelpers
153
+ c.include Itesttool
155
154
  end
156
155
 
@@ -1,3 +1,3 @@
1
1
  module Itesttool
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.1"
3
3
  end
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.0.2
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-01-26 00:00:00.000000000 Z
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: 1.8.23
159
+ rubygems_version: 2.0.14
184
160
  signing_key:
185
- specification_version: 3
161
+ specification_version: 4
186
162
  summary: End-to-End Test tool for web api.
187
163
  test_files: []