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 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: []