rsmp_schemer 0.3.2 → 0.4.0
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/Gemfile.lock +9 -8
- data/lib/rsmp_schemer/version.rb +1 -1
- data/schemas/core_3.1.5/.gitignore +1 -0
- data/schemas/core_3.1.5/schema/core/alarm.json +36 -40
- data/schemas/core_3.1.5/schema/core/alarm_issue.json +44 -0
- data/schemas/core_3.1.5/schema/core/alarm_suspend_resume.json +3 -0
- data/schemas/core_3.1.5/schema/core/alarm_suspended_resumed.json +44 -0
- data/schemas/core_3.1.5/schema/core/command_response.json +1 -1
- data/schemas/core_3.1.5/schema/core/status_response.json +1 -1
- data/schemas/core_3.1.5/schema/core/status_update.json +1 -1
- data/schemas/core_3.1.5/spec/core/alarm_issue_spec.rb +299 -0
- data/schemas/core_3.1.5/spec/core/alarm_resume_spec.rb +93 -0
- data/schemas/core_3.1.5/spec/core/alarm_resumed_spec.rb +277 -0
- data/schemas/core_3.1.5/spec/core/alarm_suspend_spec.rb +93 -0
- data/schemas/core_3.1.5/spec/core/alarm_suspended_spec.rb +277 -0
- data/schemas/core_3.1.5/spec/core/version_spec.rb +3 -2
- metadata +12 -6
- data/schemas/core_3.1.5/examples/validate.rb +0 -35
- data/schemas/core_3.1.5/spec/core/alarm_request_spec.rb +0 -72
- data/schemas/core_3.1.5/spec/core/alarm_spec.rb +0 -298
@@ -0,0 +1,277 @@
|
|
1
|
+
RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
|
2
|
+
describe 'Alarm Issue' do
|
3
|
+
let(:message) {{
|
4
|
+
"mType" => "rSMsg",
|
5
|
+
"type" => "Alarm",
|
6
|
+
"mId" => "2ea7edfc-8e3a-4765-85e7-db844c4702a0",
|
7
|
+
"ntsOId" => "",
|
8
|
+
"xNId" => "",
|
9
|
+
"cId" => "AB+84001=860VA001",
|
10
|
+
"aCId" => "A0004",
|
11
|
+
"xACId" => "",
|
12
|
+
"xNACId" => "",
|
13
|
+
"aSp" => "Suspend",
|
14
|
+
"ack" => "Acknowledged",
|
15
|
+
"aS" => "Active",
|
16
|
+
"sS" => "notSuspended",
|
17
|
+
"aTs" => "2015-05-29T08:56:25.390Z",
|
18
|
+
"cat" => "D",
|
19
|
+
"pri" => "3",
|
20
|
+
"rvs" => [
|
21
|
+
{
|
22
|
+
"n" => "Temp",
|
23
|
+
"v" => "-18.5"
|
24
|
+
}
|
25
|
+
]
|
26
|
+
}}
|
27
|
+
|
28
|
+
it 'accepts valid alarm suspended' do
|
29
|
+
expect( validate(message) ).to be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'catches missing component id' do
|
33
|
+
invalid = message.dup
|
34
|
+
invalid.delete 'cId'
|
35
|
+
expect( validate(invalid) ).to eq([
|
36
|
+
["", "required", {"missing_keys"=>["cId"]}]
|
37
|
+
])
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'catches missing alarm code id' do
|
41
|
+
invalid = message.dup
|
42
|
+
invalid.delete 'aCId'
|
43
|
+
expect( validate(invalid) ).to eq([
|
44
|
+
["", "required", {"missing_keys"=>["aCId"]}]
|
45
|
+
])
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'catches bad alarm code id' do
|
49
|
+
invalid = message.dup
|
50
|
+
invalid['aCId'] = "001"
|
51
|
+
expect( validate(invalid) ).to eq([
|
52
|
+
["/aCId", "pattern"]
|
53
|
+
])
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'catches wrong alarm code id type' do
|
57
|
+
invalid = message.dup
|
58
|
+
invalid['aCId'] = 123
|
59
|
+
expect( validate(invalid) ).to eq([
|
60
|
+
["/aCId", "string"]
|
61
|
+
])
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'catches missing extended alarm code id' do
|
65
|
+
invalid = message.dup
|
66
|
+
invalid.delete 'xACId'
|
67
|
+
expect( validate(invalid) ).to eq([
|
68
|
+
["", "required", {"missing_keys"=>["xACId"]}]
|
69
|
+
])
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'catches wrong extended alarm code id type' do
|
73
|
+
invalid = message.dup
|
74
|
+
invalid['xACId'] = 123
|
75
|
+
expect( validate(invalid) ).to eq([
|
76
|
+
["/xACId", "string"]
|
77
|
+
])
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'catches missing specialization' do
|
81
|
+
invalid = message.dup
|
82
|
+
invalid.delete 'aSp'
|
83
|
+
expect( validate(invalid) ).to eq([
|
84
|
+
["", "required", {"missing_keys"=>["aSp"]}]
|
85
|
+
])
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'catches bad specialization' do
|
89
|
+
invalid = message.dup
|
90
|
+
invalid['aSp'] = "Bad"
|
91
|
+
expect( validate(invalid) ).to eq([
|
92
|
+
["/aSp", "enum"]
|
93
|
+
])
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'catches wrong specialization type' do
|
97
|
+
invalid = message.dup
|
98
|
+
invalid['aSp'] = 123
|
99
|
+
expect( validate(invalid) ).to eq([
|
100
|
+
["/aSp", "enum"],
|
101
|
+
["/aSp", "string"]
|
102
|
+
])
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'catches missing alarm active status' do
|
106
|
+
invalid = message.dup
|
107
|
+
invalid.delete 'aS'
|
108
|
+
expect( validate(invalid) ).to eq([
|
109
|
+
["", "required", {"missing_keys"=>["aS"]}]
|
110
|
+
])
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'catches bad alarm active status' do
|
114
|
+
invalid = message.dup
|
115
|
+
invalid['aS'] = "Bad"
|
116
|
+
expect( validate(invalid) ).to eq([
|
117
|
+
["/aS", "enum"]
|
118
|
+
])
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'catches wrong alarm active status' do
|
122
|
+
invalid = message.dup
|
123
|
+
invalid['aS'] = 123
|
124
|
+
expect( validate(invalid) ).to eq([
|
125
|
+
["/aS", "enum"],
|
126
|
+
["/aS", "string"]
|
127
|
+
])
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'catches missing alarm acknowledged status' do
|
131
|
+
invalid = message.dup
|
132
|
+
invalid.delete 'ack'
|
133
|
+
expect( validate(invalid) ).to eq([
|
134
|
+
["", "required", {"missing_keys"=>["ack"]}]
|
135
|
+
])
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'catches bad alarm acknowledged status' do
|
139
|
+
invalid = message.dup
|
140
|
+
invalid['ack'] = "Bad"
|
141
|
+
expect( validate(invalid) ).to eq([
|
142
|
+
["/ack", "enum"]
|
143
|
+
])
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'catches wrong alarm acknowledged status type' do
|
147
|
+
invalid = message.dup
|
148
|
+
invalid['ack'] = 123
|
149
|
+
expect( validate(invalid) ).to eq([
|
150
|
+
["/ack", "enum"],
|
151
|
+
["/ack", "string"]
|
152
|
+
])
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'catches missing category' do
|
156
|
+
invalid = message.dup
|
157
|
+
invalid.delete 'cat'
|
158
|
+
expect( validate(invalid) ).to eq([
|
159
|
+
["", "required", {"missing_keys"=>["cat"]}]
|
160
|
+
])
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'catches bad category' do
|
164
|
+
invalid = message.dup
|
165
|
+
invalid['cat'] = "A"
|
166
|
+
expect( validate(invalid) ).to eq([
|
167
|
+
["/cat", "enum"]
|
168
|
+
])
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'catches wrong category' do
|
172
|
+
invalid = message.dup
|
173
|
+
invalid['cat'] = 123
|
174
|
+
expect( validate(invalid) ).to eq([
|
175
|
+
["/cat", "enum"],
|
176
|
+
["/cat", "string"]
|
177
|
+
])
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'catches missing priority' do
|
181
|
+
invalid = message.dup
|
182
|
+
invalid.delete 'pri'
|
183
|
+
expect( validate(invalid) ).to eq([
|
184
|
+
["", "required", {"missing_keys"=>["pri"]}]
|
185
|
+
])
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'catches bad priority' do
|
189
|
+
invalid = message.dup
|
190
|
+
invalid['pri'] = "4"
|
191
|
+
expect( validate(invalid) ).to eq([
|
192
|
+
["/pri", "enum"]
|
193
|
+
])
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'catches wrong priority' do
|
197
|
+
invalid = message.dup
|
198
|
+
invalid['pri'] = 1
|
199
|
+
expect( validate(invalid) ).to eq([
|
200
|
+
["/pri", "enum"],
|
201
|
+
["/pri", "string"]
|
202
|
+
])
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'catches missing timestamp' do
|
206
|
+
invalid = message.dup
|
207
|
+
invalid.delete 'aTs'
|
208
|
+
expect( validate(invalid) ).to eq([
|
209
|
+
["", "required", {"missing_keys"=>["aTs"]}]
|
210
|
+
])
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'catches bad timestamp' do
|
214
|
+
invalid = message.dup
|
215
|
+
invalid['aTs'] = "yesterday"
|
216
|
+
expect( validate(invalid) ).to eq([
|
217
|
+
["/aTs", "pattern"]
|
218
|
+
])
|
219
|
+
end
|
220
|
+
|
221
|
+
it 'catches wrong timestamp type' do
|
222
|
+
invalid = message.dup
|
223
|
+
invalid['aTs'] = 123
|
224
|
+
expect( validate(invalid) ).to eq([
|
225
|
+
["/aTs", "string"]
|
226
|
+
])
|
227
|
+
end
|
228
|
+
|
229
|
+
it 'catches missing rvs' do
|
230
|
+
invalid = message.dup
|
231
|
+
invalid.delete 'rvs'
|
232
|
+
expect( validate(invalid) ).to eq([
|
233
|
+
["", "required", {"missing_keys"=>["rvs"]}]
|
234
|
+
])
|
235
|
+
end
|
236
|
+
|
237
|
+
it 'catches bad rvs type' do
|
238
|
+
invalid = message.dup
|
239
|
+
invalid["rvs"] = {}
|
240
|
+
expect( validate(invalid) ).to eq([
|
241
|
+
["/rvs", "array"]
|
242
|
+
])
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'catches missing alarm name' do
|
246
|
+
invalid = message.dup
|
247
|
+
invalid["rvs"].first.delete 'n'
|
248
|
+
expect( validate(invalid) ).to eq([
|
249
|
+
["/rvs/0", "required", {"missing_keys"=>["n"]}]
|
250
|
+
])
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'catches bad alarm name' do
|
254
|
+
invalid = message.dup
|
255
|
+
invalid["rvs"].first['n'] = 3
|
256
|
+
expect( validate(invalid) ).to eq([
|
257
|
+
["/rvs/0/n", "string"]
|
258
|
+
])
|
259
|
+
end
|
260
|
+
|
261
|
+
it 'catches missing alarm value' do
|
262
|
+
invalid = message.dup
|
263
|
+
invalid["rvs"].first.delete 'v'
|
264
|
+
expect( validate(invalid) ).to eq([
|
265
|
+
["/rvs/0", "required", {"missing_keys"=>["v"]}]
|
266
|
+
])
|
267
|
+
end
|
268
|
+
|
269
|
+
it 'catches bad alarm value' do
|
270
|
+
invalid = message.dup
|
271
|
+
invalid["rvs"].first['v'] = 3
|
272
|
+
expect( validate(invalid) ).to eq([
|
273
|
+
["/rvs/0/v", "string"]
|
274
|
+
])
|
275
|
+
end
|
276
|
+
end
|
277
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
|
2
|
+
describe 'Alarm Suspend' do
|
3
|
+
let(:message) {{
|
4
|
+
"mType" => "rSMsg",
|
5
|
+
"type" => "Alarm",
|
6
|
+
"mId" => "2a744145-403a-423f-ba80-f38e283a778e",
|
7
|
+
"ntsOId" => "",
|
8
|
+
"xNId" => "",
|
9
|
+
"cId" => "AB+84001=860VA001",
|
10
|
+
"aCId" => "A0004",
|
11
|
+
"xACId" => "",
|
12
|
+
"xNACId" => "",
|
13
|
+
"aSp" => "Suspend"
|
14
|
+
}}
|
15
|
+
|
16
|
+
it 'accepts valid alarm suspend' do
|
17
|
+
expect( validate(message) ).to be_nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'catches missing component id' do
|
21
|
+
invalid = message.dup
|
22
|
+
invalid.delete 'cId'
|
23
|
+
expect( validate(invalid) ).to eq([
|
24
|
+
["", "required", {"missing_keys"=>["cId"]}]
|
25
|
+
])
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'catches missing alarm code id' do
|
29
|
+
invalid = message.dup
|
30
|
+
invalid.delete 'aCId'
|
31
|
+
expect( validate(invalid) ).to eq([
|
32
|
+
["", "required", {"missing_keys"=>["aCId"]}]
|
33
|
+
])
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'catches bad alarm code id' do
|
37
|
+
invalid = message.dup
|
38
|
+
invalid['aCId'] = "001"
|
39
|
+
expect( validate(invalid) ).to eq([
|
40
|
+
["/aCId", "pattern"]
|
41
|
+
])
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'catches wrong alarm code id type' do
|
45
|
+
invalid = message.dup
|
46
|
+
invalid['aCId'] = 123
|
47
|
+
expect( validate(invalid) ).to eq([
|
48
|
+
["/aCId", "string"]
|
49
|
+
])
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'catches missing extended alarm code id' do
|
53
|
+
invalid = message.dup
|
54
|
+
invalid.delete 'xACId'
|
55
|
+
expect( validate(invalid) ).to eq([
|
56
|
+
["", "required", {"missing_keys"=>["xACId"]}]
|
57
|
+
])
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'catches wrong extended alarm code id type' do
|
61
|
+
invalid = message.dup
|
62
|
+
invalid['xACId'] = 123
|
63
|
+
expect( validate(invalid) ).to eq([
|
64
|
+
["/xACId", "string"]
|
65
|
+
])
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'catches missing specialization' do
|
69
|
+
invalid = message.dup
|
70
|
+
invalid.delete 'aSp'
|
71
|
+
expect( validate(invalid) ).to eq([
|
72
|
+
["", "required", {"missing_keys"=>["aSp"]}]
|
73
|
+
])
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'catches bad specialization' do
|
77
|
+
invalid = message.dup
|
78
|
+
invalid['aSp'] = "Bad"
|
79
|
+
expect( validate(invalid) ).to eq([
|
80
|
+
["/aSp", "enum"]
|
81
|
+
])
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'catches wrong specialization type' do
|
85
|
+
invalid = message.dup
|
86
|
+
invalid['aSp'] = 123
|
87
|
+
expect( validate(invalid) ).to eq([
|
88
|
+
["/aSp", "enum"],
|
89
|
+
["/aSp", "string"]
|
90
|
+
])
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,277 @@
|
|
1
|
+
RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
|
2
|
+
describe 'Alarm Issue' do
|
3
|
+
let(:message) {{
|
4
|
+
"mType" => "rSMsg",
|
5
|
+
"type" => "Alarm",
|
6
|
+
"mId" => "2ea7edfc-8e3a-4765-85e7-db844c4702a0",
|
7
|
+
"ntsOId" => "",
|
8
|
+
"xNId" => "",
|
9
|
+
"cId" => "AB+84001=860VA001",
|
10
|
+
"aCId" => "A0004",
|
11
|
+
"xACId" => "",
|
12
|
+
"xNACId" => "",
|
13
|
+
"aSp" => "Suspend",
|
14
|
+
"ack" => "Acknowledged",
|
15
|
+
"aS" => "Active",
|
16
|
+
"sS" => "suspended",
|
17
|
+
"aTs" => "2015-05-29T08:56:25.390Z",
|
18
|
+
"cat" => "D",
|
19
|
+
"pri" => "3",
|
20
|
+
"rvs" => [
|
21
|
+
{
|
22
|
+
"n" => "Temp",
|
23
|
+
"v" => "-18.5"
|
24
|
+
}
|
25
|
+
]
|
26
|
+
}}
|
27
|
+
|
28
|
+
it 'accepts valid alarm suspended' do
|
29
|
+
expect( validate(message) ).to be_nil
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'catches missing component id' do
|
33
|
+
invalid = message.dup
|
34
|
+
invalid.delete 'cId'
|
35
|
+
expect( validate(invalid) ).to eq([
|
36
|
+
["", "required", {"missing_keys"=>["cId"]}]
|
37
|
+
])
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'catches missing alarm code id' do
|
41
|
+
invalid = message.dup
|
42
|
+
invalid.delete 'aCId'
|
43
|
+
expect( validate(invalid) ).to eq([
|
44
|
+
["", "required", {"missing_keys"=>["aCId"]}]
|
45
|
+
])
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'catches bad alarm code id' do
|
49
|
+
invalid = message.dup
|
50
|
+
invalid['aCId'] = "001"
|
51
|
+
expect( validate(invalid) ).to eq([
|
52
|
+
["/aCId", "pattern"]
|
53
|
+
])
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'catches wrong alarm code id type' do
|
57
|
+
invalid = message.dup
|
58
|
+
invalid['aCId'] = 123
|
59
|
+
expect( validate(invalid) ).to eq([
|
60
|
+
["/aCId", "string"]
|
61
|
+
])
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'catches missing extended alarm code id' do
|
65
|
+
invalid = message.dup
|
66
|
+
invalid.delete 'xACId'
|
67
|
+
expect( validate(invalid) ).to eq([
|
68
|
+
["", "required", {"missing_keys"=>["xACId"]}]
|
69
|
+
])
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'catches wrong extended alarm code id type' do
|
73
|
+
invalid = message.dup
|
74
|
+
invalid['xACId'] = 123
|
75
|
+
expect( validate(invalid) ).to eq([
|
76
|
+
["/xACId", "string"]
|
77
|
+
])
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'catches missing specialization' do
|
81
|
+
invalid = message.dup
|
82
|
+
invalid.delete 'aSp'
|
83
|
+
expect( validate(invalid) ).to eq([
|
84
|
+
["", "required", {"missing_keys"=>["aSp"]}]
|
85
|
+
])
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'catches bad specialization' do
|
89
|
+
invalid = message.dup
|
90
|
+
invalid['aSp'] = "Bad"
|
91
|
+
expect( validate(invalid) ).to eq([
|
92
|
+
["/aSp", "enum"]
|
93
|
+
])
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'catches wrong specialization type' do
|
97
|
+
invalid = message.dup
|
98
|
+
invalid['aSp'] = 123
|
99
|
+
expect( validate(invalid) ).to eq([
|
100
|
+
["/aSp", "enum"],
|
101
|
+
["/aSp", "string"]
|
102
|
+
])
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'catches missing alarm active status' do
|
106
|
+
invalid = message.dup
|
107
|
+
invalid.delete 'aS'
|
108
|
+
expect( validate(invalid) ).to eq([
|
109
|
+
["", "required", {"missing_keys"=>["aS"]}]
|
110
|
+
])
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'catches bad alarm active status' do
|
114
|
+
invalid = message.dup
|
115
|
+
invalid['aS'] = "Bad"
|
116
|
+
expect( validate(invalid) ).to eq([
|
117
|
+
["/aS", "enum"]
|
118
|
+
])
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'catches wrong alarm active status' do
|
122
|
+
invalid = message.dup
|
123
|
+
invalid['aS'] = 123
|
124
|
+
expect( validate(invalid) ).to eq([
|
125
|
+
["/aS", "enum"],
|
126
|
+
["/aS", "string"]
|
127
|
+
])
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'catches missing alarm acknowledged status' do
|
131
|
+
invalid = message.dup
|
132
|
+
invalid.delete 'ack'
|
133
|
+
expect( validate(invalid) ).to eq([
|
134
|
+
["", "required", {"missing_keys"=>["ack"]}]
|
135
|
+
])
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'catches bad alarm acknowledged status' do
|
139
|
+
invalid = message.dup
|
140
|
+
invalid['ack'] = "Bad"
|
141
|
+
expect( validate(invalid) ).to eq([
|
142
|
+
["/ack", "enum"]
|
143
|
+
])
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'catches wrong alarm acknowledged status type' do
|
147
|
+
invalid = message.dup
|
148
|
+
invalid['ack'] = 123
|
149
|
+
expect( validate(invalid) ).to eq([
|
150
|
+
["/ack", "enum"],
|
151
|
+
["/ack", "string"]
|
152
|
+
])
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'catches missing category' do
|
156
|
+
invalid = message.dup
|
157
|
+
invalid.delete 'cat'
|
158
|
+
expect( validate(invalid) ).to eq([
|
159
|
+
["", "required", {"missing_keys"=>["cat"]}]
|
160
|
+
])
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'catches bad category' do
|
164
|
+
invalid = message.dup
|
165
|
+
invalid['cat'] = "A"
|
166
|
+
expect( validate(invalid) ).to eq([
|
167
|
+
["/cat", "enum"]
|
168
|
+
])
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'catches wrong category' do
|
172
|
+
invalid = message.dup
|
173
|
+
invalid['cat'] = 123
|
174
|
+
expect( validate(invalid) ).to eq([
|
175
|
+
["/cat", "enum"],
|
176
|
+
["/cat", "string"]
|
177
|
+
])
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'catches missing priority' do
|
181
|
+
invalid = message.dup
|
182
|
+
invalid.delete 'pri'
|
183
|
+
expect( validate(invalid) ).to eq([
|
184
|
+
["", "required", {"missing_keys"=>["pri"]}]
|
185
|
+
])
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'catches bad priority' do
|
189
|
+
invalid = message.dup
|
190
|
+
invalid['pri'] = "4"
|
191
|
+
expect( validate(invalid) ).to eq([
|
192
|
+
["/pri", "enum"]
|
193
|
+
])
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'catches wrong priority' do
|
197
|
+
invalid = message.dup
|
198
|
+
invalid['pri'] = 1
|
199
|
+
expect( validate(invalid) ).to eq([
|
200
|
+
["/pri", "enum"],
|
201
|
+
["/pri", "string"]
|
202
|
+
])
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'catches missing timestamp' do
|
206
|
+
invalid = message.dup
|
207
|
+
invalid.delete 'aTs'
|
208
|
+
expect( validate(invalid) ).to eq([
|
209
|
+
["", "required", {"missing_keys"=>["aTs"]}]
|
210
|
+
])
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'catches bad timestamp' do
|
214
|
+
invalid = message.dup
|
215
|
+
invalid['aTs'] = "yesterday"
|
216
|
+
expect( validate(invalid) ).to eq([
|
217
|
+
["/aTs", "pattern"]
|
218
|
+
])
|
219
|
+
end
|
220
|
+
|
221
|
+
it 'catches wrong timestamp type' do
|
222
|
+
invalid = message.dup
|
223
|
+
invalid['aTs'] = 123
|
224
|
+
expect( validate(invalid) ).to eq([
|
225
|
+
["/aTs", "string"]
|
226
|
+
])
|
227
|
+
end
|
228
|
+
|
229
|
+
it 'catches missing rvs' do
|
230
|
+
invalid = message.dup
|
231
|
+
invalid.delete 'rvs'
|
232
|
+
expect( validate(invalid) ).to eq([
|
233
|
+
["", "required", {"missing_keys"=>["rvs"]}]
|
234
|
+
])
|
235
|
+
end
|
236
|
+
|
237
|
+
it 'catches bad rvs type' do
|
238
|
+
invalid = message.dup
|
239
|
+
invalid["rvs"] = {}
|
240
|
+
expect( validate(invalid) ).to eq([
|
241
|
+
["/rvs", "array"]
|
242
|
+
])
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'catches missing alarm name' do
|
246
|
+
invalid = message.dup
|
247
|
+
invalid["rvs"].first.delete 'n'
|
248
|
+
expect( validate(invalid) ).to eq([
|
249
|
+
["/rvs/0", "required", {"missing_keys"=>["n"]}]
|
250
|
+
])
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'catches bad alarm name' do
|
254
|
+
invalid = message.dup
|
255
|
+
invalid["rvs"].first['n'] = 3
|
256
|
+
expect( validate(invalid) ).to eq([
|
257
|
+
["/rvs/0/n", "string"]
|
258
|
+
])
|
259
|
+
end
|
260
|
+
|
261
|
+
it 'catches missing alarm value' do
|
262
|
+
invalid = message.dup
|
263
|
+
invalid["rvs"].first.delete 'v'
|
264
|
+
expect( validate(invalid) ).to eq([
|
265
|
+
["/rvs/0", "required", {"missing_keys"=>["v"]}]
|
266
|
+
])
|
267
|
+
end
|
268
|
+
|
269
|
+
it 'catches bad alarm value' do
|
270
|
+
invalid = message.dup
|
271
|
+
invalid["rvs"].first['v'] = 3
|
272
|
+
expect( validate(invalid) ).to eq([
|
273
|
+
["/rvs/0/v", "string"]
|
274
|
+
])
|
275
|
+
end
|
276
|
+
end
|
277
|
+
end
|
@@ -10,9 +10,10 @@ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
|
|
10
10
|
{ "vers" => "3.1.1" },
|
11
11
|
{ "vers" => "3.1.2" },
|
12
12
|
{ "vers" => "3.1.3" },
|
13
|
-
{ "vers" => "3.1.4" }
|
13
|
+
{ "vers" => "3.1.4" },
|
14
|
+
{ "vers" => "3.1.5" }
|
14
15
|
],
|
15
|
-
"SXL" => "1.
|
16
|
+
"SXL" => "1.0.15"
|
16
17
|
}}
|
17
18
|
|
18
19
|
it 'accepts valid message' do
|