client-api 0.3.3 → 0.3.4
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 +4 -4
- data/lib/client-api/validator.rb +121 -117
- data/lib/client-api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2e9cdee9c77e69f0b74fba761bd250516ac0d08f7cf8f1ad62486f74dac57ab
|
4
|
+
data.tar.gz: b57b1ef0522cf9bc785a01f422b7c032639cb386e09b10bec3eceef4ecc35ef9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4513c7768af1d60ee8186716b0dd3599e97c5af909eedeebf9b4b7a492e3cbd820d565318f00fb2b39ca1d5a7cd1821dd4ea530f546e83b956b3a15c36fc5973
|
7
|
+
data.tar.gz: 6010df3cc068384700d77017ec106458edbcf16ea20da01f91ca4a1ac76744d8f2718554fb5e976cc943d4b599d4c8382e8ca96dda0d6b1e0ee9ca9efb6647c0
|
data/lib/client-api/validator.rb
CHANGED
@@ -3,13 +3,14 @@ require "json-schema"
|
|
3
3
|
module ClientApi
|
4
4
|
|
5
5
|
def validate(res, *options)
|
6
|
+
|
7
|
+
# noinspection RubyScope
|
6
8
|
options.map do |data|
|
7
9
|
raise('"key": ""'.green + ' field is missing'.red) if data[:key].nil?
|
8
|
-
raise('
|
9
|
-
raise('"value":'.green + ' or'.red + ' "size":'.green + ' or'.red + ' "type":'.green + ' field is not given!'.red) if data[:value].nil? && data[:type].nil? && data[:size].nil? if data[:operator] != nil
|
10
|
+
raise('Need at least one field to validate'.green) if data[:value].nil? && data[:type].nil? && data[:size].nil? && data[:empty].nil? && data[:has_key].nil?
|
10
11
|
|
11
12
|
value ||= data[:value]
|
12
|
-
operator ||= data[:operator]
|
13
|
+
operator ||= (data[:operator] || '==').downcase
|
13
14
|
type ||= data[:type]
|
14
15
|
size ||= data[:size]
|
15
16
|
empty ||= data[:empty]
|
@@ -18,159 +19,162 @@ module ClientApi
|
|
18
19
|
@resp = JSON.parse(res.to_json)
|
19
20
|
key = data[:key].split("->")
|
20
21
|
|
22
|
+
@err_method = []
|
23
|
+
|
21
24
|
key.map do |method|
|
22
25
|
method = method.to_i if is_num?(method)
|
26
|
+
@err_method = @err_method << method
|
27
|
+
|
23
28
|
begin
|
29
|
+
if method.is_a? Integer
|
30
|
+
raise %[key: ]+ %[#{@err_method.join('->')}].green + %[ does not exist! please check the key once again].red if ((@resp.class != Array) || (method.to_i >= @resp.count)) && data[:has_key].nil?
|
31
|
+
else
|
32
|
+
raise %[key: ]+ %[#{@err_method.join('->')}].green + %[ does not exist! please check the key once again].red if !@resp.include?(method) && data[:has_key].nil?
|
33
|
+
end
|
24
34
|
@resp = @resp.send(:[], method)
|
25
35
|
rescue NoMethodError
|
26
|
-
raise
|
36
|
+
raise %[key: ]+ %[#{@err_method.join('->')}].green + %[ does not exist! please check the key once again].red if data[:has_key].nil?
|
27
37
|
end
|
28
38
|
end
|
29
39
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
expect(value).to eq(@resp), lambda {"[key]: \"#{data[:key]}\"".blue + "\n didn't match \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
35
|
-
|
36
|
-
# datatype validation
|
37
|
-
if (type == 'boolean') || (type == 'bool')
|
38
|
-
expect(%w[TrueClass, FalseClass].any? {|bool| bool.include? @resp.class.to_s}).to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
39
|
-
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
40
|
-
expect(datatype(type, value)).to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
41
|
-
end
|
40
|
+
case operator
|
41
|
+
when '=', '==', 'eql', 'eql?', 'equal', 'equal?'
|
42
|
+
# has key validation
|
43
|
+
validate_key(has_key, data) if has_key != nil
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
+
# value validation
|
46
|
+
expect(value).to eq(@resp), lambda {"[key]: \"#{data[:key]}\"".blue + "\n didn't match \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
+
# datatype validation
|
49
|
+
if (type == 'boolean') || (type == 'bool')
|
50
|
+
expect(%w[TrueClass, FalseClass].any? {|bool| bool.include? @resp.class.to_s}).to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
51
|
+
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
52
|
+
expect(datatype(type, value)).to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
53
|
+
end
|
48
54
|
|
49
|
-
|
50
|
-
|
55
|
+
# size validation
|
56
|
+
validate_size(size, data) if size != nil
|
51
57
|
|
52
|
-
|
53
|
-
|
54
|
-
expect(value).not_to eq(@resp), lambda {"[key]: \"#{data[:key]}\"".blue + "\n didn't match \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
58
|
+
# is empty validation
|
59
|
+
validate_empty(empty, data) if empty != nil
|
55
60
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
60
|
-
expect(datatype(type, value)).not_to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
61
|
-
end
|
61
|
+
when '!', '!=', '!eql', '!eql?', 'not eql', 'not equal', '!equal?'
|
62
|
+
# has key validation
|
63
|
+
validate_key(has_key, data) if has_key != nil
|
62
64
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
# value validation
|
66
|
+
expect(value).not_to eq(@resp), lambda {"[key]: \"#{data[:key]}\"".blue + "\n didn't match \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
67
|
+
|
68
|
+
# datatype validation
|
69
|
+
if (type == 'boolean') || (type == 'bool')
|
70
|
+
expect(%w[TrueClass, FalseClass].any? {|bool| bool.include? @resp.class.to_s}).not_to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
71
|
+
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
72
|
+
expect(datatype(type, value)).not_to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
73
|
+
end
|
74
|
+
|
75
|
+
# size validation
|
76
|
+
if size != nil
|
77
|
+
begin
|
78
|
+
expect(size).not_to eq(@resp.count), lambda {"[key]: \"#{data[:key]}\"".blue + "\n" + "size shouldn't match" + "\n\n" + "[ actual size ]: #{@resp.count}" + "\n" + "[size not expected]: #{size}".green}
|
79
|
+
rescue NoMethodError
|
80
|
+
expect(size).not_to eq(0), lambda {"[key]: \"#{data[:key]}\"".blue + "\n" + "size shouldn't match" + "\n\n" + "[ actual size ]: 0" + "\n" + "[size not expected]: #{size}".green}
|
81
|
+
rescue ArgumentError
|
82
|
+
expect(size).not_to eq(0), lambda {"[key]: \"#{data[:key]}\"".blue + "\n" + "size shouldn't match" + "\n\n" + "[ actual size ]: 0" + "\n" + "[size not expected]: #{size}".green}
|
72
83
|
end
|
84
|
+
end
|
73
85
|
|
74
|
-
|
75
|
-
|
86
|
+
# is empty validation
|
87
|
+
validate_empty(empty, data) if empty != nil
|
76
88
|
|
77
|
-
|
78
|
-
|
89
|
+
when '>', '>=', '<', '<=', 'greater than', 'greater than or equal to', 'less than', 'less than or equal to', 'lesser than', 'lesser than or equal to'
|
90
|
+
message = 'is not greater than (or) equal to' if operator == '>=' || operator == 'greater than or equal to'
|
91
|
+
message = 'is not greater than' if operator == '>' || operator == 'greater than'
|
92
|
+
message = 'is not lesser than (or) equal to' if operator == '<=' || operator == 'less than or equal to'
|
93
|
+
message = 'is not lesser than' if operator == '<' || operator == 'less than' || operator == 'lesser than'
|
79
94
|
|
80
|
-
|
81
|
-
|
82
|
-
message = 'is not greater than' if operator == '>' || operator == 'greater than'
|
83
|
-
message = 'is not lesser than (or) equal to' if operator == '<=' || operator == 'less than or equal to'
|
84
|
-
message = 'is not lesser than' if operator == '<' || operator == 'less than' || operator == 'lesser than'
|
95
|
+
# has key validation
|
96
|
+
validate_key(has_key, data) if has_key != nil
|
85
97
|
|
86
|
-
|
87
|
-
|
98
|
+
# value validation
|
99
|
+
expect(@resp.to_i.public_send(operator, value)).to eq(true), "[key]: \"#{data[:key]}\"".blue + "\n #{message} \n[value]: \"#{data[:value]}\"\n" if value != nil
|
88
100
|
|
89
|
-
|
90
|
-
|
101
|
+
# datatype validation
|
102
|
+
expect(datatype(type, value)).to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"} if type != nil
|
91
103
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
end
|
104
|
+
# size validation
|
105
|
+
if size != nil
|
106
|
+
begin
|
107
|
+
expect(@resp.count.to_i.public_send(operator, size)).to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n" + "#{message} #{size}" + "\n\n" + "[ actual size ]: #{@resp.count}" + "\n" + "expected size to be #{operator} #{size}".green}
|
108
|
+
rescue NoMethodError
|
109
|
+
expect(0.public_send(operator, size)).to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n" + "#{message} #{size}" + "\n\n" + "[ actual size ]: 0" + "\n" + "expected size to be #{operator} #{size}".green}
|
110
|
+
rescue ArgumentError
|
111
|
+
expect(0.public_send(operator, size)).to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n" + "#{message} #{size}" + "\n\n" + "[ actual size ]: 0" + "\n" + "expected size to be #{operator} #{size}".green}
|
101
112
|
end
|
113
|
+
end
|
102
114
|
|
103
|
-
|
104
|
-
|
115
|
+
# is empty validation
|
116
|
+
validate_empty(empty, data) if empty != nil
|
105
117
|
|
106
|
-
|
107
|
-
|
118
|
+
when 'contains', 'has', 'contains?', 'has?', 'include', 'include?'
|
119
|
+
# has key validation
|
120
|
+
validate_key(has_key, data) if has_key != nil
|
108
121
|
|
109
|
-
|
110
|
-
|
111
|
-
expect(@resp.to_s).to include(value.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n not contains \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
122
|
+
# value validation
|
123
|
+
expect(@resp.to_s).to include(value.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n not contains \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
112
124
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
125
|
+
# datatype validation
|
126
|
+
if (type == 'boolean') || (type == 'bool')
|
127
|
+
expect(%w[TrueClass, FalseClass].any? {|bool| bool.include? @resp.class.to_s}).to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
128
|
+
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
129
|
+
expect(datatype(type, value)).to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
130
|
+
end
|
119
131
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
end
|
132
|
+
# size validation
|
133
|
+
if size != nil
|
134
|
+
begin
|
135
|
+
expect(@resp.count.to_s).to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size not contains #{size}"+ "\n\n" + "[ actual size ]: #{@resp.count}" + "\n" + "expected size to contain: #{size}".green}
|
136
|
+
rescue NoMethodError
|
137
|
+
expect(0.to_s).to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size not contains #{size}"+ "\n\n" + "[ actual size ]: 0" + "\n" + "expected size to contain: #{size}".green}
|
138
|
+
rescue ArgumentError
|
139
|
+
expect(0.to_s).to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size not contains #{size}"+ "\n\n" + "[ actual size ]: 0" + "\n" + "expected size to contain: #{size}".green}
|
129
140
|
end
|
141
|
+
end
|
130
142
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
when 'not contains', '!contains', 'not include', '!include'
|
135
|
-
# value validation
|
136
|
-
expect(@resp.to_s).not_to include(value.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n should not contain \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
137
|
-
|
138
|
-
# datatype validation
|
139
|
-
if (type == 'boolean') || (type == 'bool')
|
140
|
-
expect(%w[TrueClass, FalseClass].any? {|bool| bool.include? @resp.class.to_s}).not_to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
141
|
-
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
142
|
-
expect(datatype(type, value)).not_to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
143
|
-
end
|
143
|
+
# is empty validation
|
144
|
+
validate_empty(empty, data) if empty != nil
|
144
145
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
expect(@resp.count.to_s).not_to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size should not contain #{size}"+ "\n\n" + "[ actual size ]: #{@resp.count}" + "\n" + "expected size not to contain: #{size}".green}
|
149
|
-
rescue NoMethodError
|
150
|
-
expect(0.to_s).not_to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size should not contain #{size}"+ "\n\n" + "[ actual size ]: 0" + "\n" + "expected size not to contain: #{size}".green}
|
151
|
-
rescue ArgumentError
|
152
|
-
expect(0.to_s).not_to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size should not contain #{size}"+ "\n\n" + "[ actual size ]: 0" + "\n" + "expected size not to contain: #{size}".green}
|
153
|
-
end
|
154
|
-
end
|
146
|
+
when 'not contains', '!contains', 'not include', '!include'
|
147
|
+
# has key validation
|
148
|
+
validate_key(has_key, data) if has_key != nil
|
155
149
|
|
156
|
-
|
157
|
-
|
150
|
+
# value validation
|
151
|
+
expect(@resp.to_s).not_to include(value.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n should not contain \n[value]: \"#{data[:value]}\"\n"} if value != nil
|
158
152
|
|
159
|
-
|
160
|
-
|
153
|
+
# datatype validation
|
154
|
+
if (type == 'boolean') || (type == 'bool')
|
155
|
+
expect(%w[TrueClass, FalseClass].any? {|bool| bool.include? @resp.class.to_s}).not_to eq(true), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
156
|
+
elsif ((type != 'boolean') || (type != 'bool')) && (type != nil)
|
157
|
+
expect(datatype(type, value)).not_to eq(@resp.class), lambda {"[key]: \"#{data[:key]}\"".blue + "\n datatype shouldn't be \n[type]: \"#{data[:type]}\"\n"}
|
158
|
+
end
|
161
159
|
|
162
|
-
|
163
|
-
|
160
|
+
# size validation
|
161
|
+
if size != nil
|
162
|
+
begin
|
163
|
+
expect(@resp.count.to_s).not_to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size should not contain #{size}"+ "\n\n" + "[ actual size ]: #{@resp.count}" + "\n" + "expected size not to contain: #{size}".green}
|
164
|
+
rescue NoMethodError
|
165
|
+
expect(0.to_s).not_to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size should not contain #{size}"+ "\n\n" + "[ actual size ]: 0" + "\n" + "expected size not to contain: #{size}".green}
|
166
|
+
rescue ArgumentError
|
167
|
+
expect(0.to_s).not_to include(size.to_s), lambda {"[key]: \"#{data[:key]} => #{@resp}\"".blue + "\n"+ "size should not contain #{size}"+ "\n\n" + "[ actual size ]: 0" + "\n" + "expected size not to contain: #{size}".green}
|
168
|
+
end
|
164
169
|
end
|
165
170
|
|
166
|
-
|
171
|
+
# is empty validation
|
167
172
|
validate_empty(empty, data) if empty != nil
|
168
|
-
validate_size(size, data) if size != nil
|
169
|
-
validate_key(has_key, data) if has_key != nil
|
170
173
|
|
171
174
|
else
|
172
|
-
raise('
|
175
|
+
raise('operator not matching')
|
173
176
|
end
|
177
|
+
|
174
178
|
end
|
175
179
|
|
176
180
|
end
|
data/lib/client-api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: client-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Prashanth Sams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|