wsdsl 0.5.1 → 0.5.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/VERSION +1 -1
- data/lib/json_response_verification.rb +1 -1
- data/lib/response.rb +1 -1
- data/spec/json_response_verification_spec.rb +28 -13
- data/wsdsl.gemspec +2 -2
- metadata +10 -10
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.2
|
@@ -56,7 +56,7 @@ module JSONResponseVerification
|
|
56
56
|
end
|
57
57
|
else
|
58
58
|
node.properties.each do |prop|
|
59
|
-
if !array_item && !subhash.has_key?(prop.name.to_s)
|
59
|
+
if !array_item && !subhash.has_key?(prop.name.to_s) && (prop.opts && prop.respond_to?(:opts) && !prop.opts[:null])
|
60
60
|
errors << json_response_error(prop, subhash)
|
61
61
|
end
|
62
62
|
errors << json_response_error(prop, subhash, true) unless valid_hash_type?(subhash, prop)
|
data/lib/response.rb
CHANGED
@@ -360,7 +360,7 @@ class WSDSL
|
|
360
360
|
end
|
361
361
|
output << "<ul>"
|
362
362
|
properties.each do |prop|
|
363
|
-
output << "<li><span class='label notice'>#{prop.name}</span> of type <span class='label success'>#{prop.type}</span> "
|
363
|
+
output << "<li><span class='label notice'>#{prop.name}</span> of type <span class='label success'>#{prop.type}</span> #{'(Can be blank or missing) ' if prop.opts && prop.opts.respond_to?(:[]) && prop.opts[:null]} "
|
364
364
|
output << prop.doc unless prop.doc.blank?
|
365
365
|
output << "</li>"
|
366
366
|
end
|
@@ -63,9 +63,19 @@ describe "JSON response verification" do
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
@optional_prop_service = describe_service "opt_prop_service" do |service|
|
67
|
+
service.response do |response|
|
68
|
+
response.object do |obj|
|
69
|
+
obj.string :email, :null => true
|
70
|
+
obj.integer :city_id, :null => true
|
71
|
+
obj.string :full_name, :null => true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
66
75
|
|
67
76
|
end
|
68
77
|
|
78
|
+
|
69
79
|
def valid_response(namespaced=true)
|
70
80
|
response = {
|
71
81
|
"id" => 1,
|
@@ -148,23 +158,22 @@ describe "JSON response verification" do
|
|
148
158
|
|
149
159
|
it "should detect that a string attribute value is nil [bug]" do
|
150
160
|
response = valid_response
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
errors.first.should match(/wrong type/)
|
161
|
+
response["user"]["name"] = nil
|
162
|
+
valid, errors = @service.validate_hash_response(response)
|
163
|
+
valid.should be_false
|
164
|
+
errors.should_not be_empty
|
165
|
+
errors.first.should match(/name/)
|
166
|
+
errors.first.should match(/wrong type/)
|
158
167
|
end
|
159
168
|
|
160
169
|
|
161
170
|
it "should detect that a nested object is missing" do
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
171
|
+
response = valid_response
|
172
|
+
response["user"].delete("creds")
|
173
|
+
valid, errors = @service.validate_hash_response(response)
|
174
|
+
valid.should be_false
|
175
|
+
errors.first.should match(/creds/)
|
176
|
+
errors.first.should match(/missing/)
|
168
177
|
end
|
169
178
|
|
170
179
|
it "should validate non namespaced responses" do
|
@@ -207,4 +216,10 @@ describe "JSON response verification" do
|
|
207
216
|
end
|
208
217
|
|
209
218
|
|
219
|
+
it "should respect optional properties" do
|
220
|
+
valid, errors = @optional_prop_service.validate_hash_response({})
|
221
|
+
valid.should be_true
|
222
|
+
end
|
223
|
+
|
224
|
+
|
210
225
|
end
|
data/wsdsl.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "wsdsl"
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matt Aimonetti"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-02-25"
|
13
13
|
s.description = "A Ruby DSL describing Web Services without implementation details."
|
14
14
|
s.email = "mattaimonetti@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wsdsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jeweler
|
16
|
-
requirement: &
|
16
|
+
requirement: &70096349076000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70096349076000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70096349075520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70096349075520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rack-test
|
38
|
-
requirement: &
|
38
|
+
requirement: &70096349075040 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70096349075040
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sinatra
|
49
|
-
requirement: &
|
49
|
+
requirement: &70096349074560 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70096349074560
|
58
58
|
description: A Ruby DSL describing Web Services without implementation details.
|
59
59
|
email: mattaimonetti@gmail.com
|
60
60
|
executables: []
|