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.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp_schemer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-17 00:00:00.000000000 Z
11
+ date: 2022-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_schemer
@@ -297,15 +297,18 @@ files:
297
297
  - schemas/core_3.1.4/spec/core/watchdog_spec.rb
298
298
  - schemas/core_3.1.4/spec/schemer_helper.rb
299
299
  - schemas/core_3.1.4/spec/spec_helper.rb
300
+ - schemas/core_3.1.5/.gitignore
300
301
  - schemas/core_3.1.5/.rspec
301
302
  - schemas/core_3.1.5/Gemfile
302
303
  - schemas/core_3.1.5/Gemfile.lock
303
304
  - schemas/core_3.1.5/LICENSE
304
305
  - schemas/core_3.1.5/README.md
305
- - schemas/core_3.1.5/examples/validate.rb
306
306
  - schemas/core_3.1.5/schema/core/aggregated_status.json
307
307
  - schemas/core_3.1.5/schema/core/aggregated_status_request.json
308
308
  - schemas/core_3.1.5/schema/core/alarm.json
309
+ - schemas/core_3.1.5/schema/core/alarm_issue.json
310
+ - schemas/core_3.1.5/schema/core/alarm_suspend_resume.json
311
+ - schemas/core_3.1.5/schema/core/alarm_suspended_resumed.json
309
312
  - schemas/core_3.1.5/schema/core/command_request.json
310
313
  - schemas/core_3.1.5/schema/core/command_response.json
311
314
  - schemas/core_3.1.5/schema/core/core.json
@@ -322,8 +325,11 @@ files:
322
325
  - schemas/core_3.1.5/schema/core/version.json
323
326
  - schemas/core_3.1.5/schema/core/watchdog.json
324
327
  - schemas/core_3.1.5/spec/core/aggregated_status_spec.rb
325
- - schemas/core_3.1.5/spec/core/alarm_request_spec.rb
326
- - schemas/core_3.1.5/spec/core/alarm_spec.rb
328
+ - schemas/core_3.1.5/spec/core/alarm_issue_spec.rb
329
+ - schemas/core_3.1.5/spec/core/alarm_resume_spec.rb
330
+ - schemas/core_3.1.5/spec/core/alarm_resumed_spec.rb
331
+ - schemas/core_3.1.5/spec/core/alarm_suspend_spec.rb
332
+ - schemas/core_3.1.5/spec/core/alarm_suspended_spec.rb
327
333
  - schemas/core_3.1.5/spec/core/command_request_spec.rb
328
334
  - schemas/core_3.1.5/spec/core/command_response_spec.rb
329
335
  - schemas/core_3.1.5/spec/core/core_spec.rb
@@ -939,7 +945,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
939
945
  - !ruby/object:Gem::Version
940
946
  version: '0'
941
947
  requirements: []
942
- rubygems_version: 3.2.15
948
+ rubygems_version: 3.2.32
943
949
  signing_key:
944
950
  specification_version: 4
945
951
  summary: Validate RSMP message against RSMP JSON Schema.
@@ -1,35 +0,0 @@
1
- require 'json_schemer'
2
-
3
- message = {
4
- "mType" => "rSMsg",
5
- "mId" => "4173c2c8-a933-43cb-9425-66d4613731ed",
6
- "type" => "CommandRequest",
7
- "siteId" => [
8
- { "sId" => "RN+SI0001" }
9
- ],
10
- "cId" => "O+14439=481WA001",
11
- "arg" => [
12
- {
13
- "n" => "timeplan",
14
- "cO" => "setPlan",
15
- "v" => "1"
16
- }
17
- ]
18
- }
19
-
20
- # try validating a message against our schema
21
- schema_core = Pathname.new('schema/core/rsmp.json')
22
- schemer_core = JSONSchemer.schema(schema_core)
23
-
24
- def validate message, schemer
25
- if schemer.valid? message
26
- 'ok'
27
- else
28
- schemer.validate(message).map do |item|
29
- [item['data_pointer'],item['type'],item['details']].compact.join(' ')
30
- end
31
- end
32
- end
33
-
34
- puts "core: #{validate message, schemer_core}"
35
-
@@ -1,72 +0,0 @@
1
- RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
- let(:message) {{
3
- "mType" => "rSMsg",
4
- "type" => "Alarm",
5
- "mId" => "E68A0010-C336-41ac-BD58-5C80A72C7092",
6
- "cId" => "AB+84001=860SG001",
7
- "aCId" => "A0001",
8
- "aSp" => "Request"
9
- }}
10
-
11
- it 'accepts valid alarm request' do
12
- expect( validate(message) ).to be_nil
13
- end
14
-
15
-
16
- it 'catches missing component id' do
17
- invalid = message.dup
18
- invalid.delete 'cId'
19
- expect( validate(invalid) ).to eq([
20
- ["", "required", {"missing_keys"=>["cId"]}]
21
- ])
22
- end
23
-
24
- it 'catches missing alarm code id' do
25
- invalid = message.dup
26
- invalid.delete 'aCId'
27
- expect( validate(invalid) ).to eq([
28
- ["", "required", {"missing_keys"=>["aCId"]}]
29
- ])
30
- end
31
-
32
- it 'catches bad alarm code id' do
33
- invalid = message.dup
34
- invalid['aCId'] = "001"
35
- expect( validate(invalid) ).to eq([
36
- ["/aCId", "pattern"]
37
- ])
38
- end
39
-
40
- it 'catches wrong alarm code id type' do
41
- invalid = message.dup
42
- invalid['aCId'] = 123
43
- expect( validate(invalid) ).to eq([
44
- ["/aCId", "string"]
45
- ])
46
- end
47
-
48
- it 'catches missing extended alarm code id' do
49
- invalid = message.dup
50
- invalid.delete 'xACId'
51
- expect( validate(invalid) ).to eq([
52
- ["", "required", {"missing_keys"=>["xACId"]}]
53
- ])
54
- end
55
-
56
- it 'catches wrong extended alarm code id type' do
57
- invalid = message.dup
58
- invalid['xACId'] = 123
59
- expect( validate(invalid) ).to eq([
60
- ["/xACId", "string"]
61
- ])
62
- end
63
-
64
- it 'catches extraneous alarm code id' do
65
- invalid = message.dup
66
- invalid['aS'] = 'Active'
67
- expect( validate(invalid) ).to eq([
68
- ["", "required", {"missing_keys"=>["aS"]}]
69
- ])
70
- end
71
-
72
- end
@@ -1,298 +0,0 @@
1
- RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
- let(:message) {{
3
- "mType" => "rSMsg",
4
- "type" => "Alarm",
5
- "mId" => "E68A0010-C336-41ac-BD58-5C80A72C7092",
6
- "cId" => "AB+84001=860SG001",
7
- "aCId" => "A0001",
8
- "xACId" => "Serious lamp error",
9
- "aSp" => "Issue",
10
- "ack" => "notAcknowledged",
11
- "aS" => "Active",
12
- "sS" => "notSuspended",
13
- "aTs" => "2009-10-01T11:59:31.571Z",
14
- "cat" => "D",
15
- "pri" => "2",
16
- "rvs" => [
17
- {
18
- "n" => "color",
19
- "v" => "red"
20
- }
21
- ]
22
- }}
23
-
24
- it 'accepts valid alarm' do
25
- expect( validate(message) ).to be_nil
26
- end
27
-
28
- it 'catches missing component id' do
29
- invalid = message.dup
30
- invalid.delete 'cId'
31
- expect( validate(invalid) ).to eq([
32
- ["", "required", {"missing_keys"=>["cId"]}]
33
- ])
34
- end
35
-
36
- it 'catches missing alarm code id' do
37
- invalid = message.dup
38
- invalid.delete 'aCId'
39
- expect( validate(invalid) ).to eq([
40
- ["", "required", {"missing_keys"=>["aCId"]}]
41
- ])
42
- end
43
-
44
- it 'catches bad alarm code id' do
45
- invalid = message.dup
46
- invalid['aCId'] = "001"
47
- expect( validate(invalid) ).to eq([
48
- ["/aCId", "pattern"]
49
- ])
50
- end
51
-
52
- it 'catches wrong alarm code id type' do
53
- invalid = message.dup
54
- invalid['aCId'] = 123
55
- expect( validate(invalid) ).to eq([
56
- ["/aCId", "string"]
57
- ])
58
- end
59
-
60
- it 'catches missing extended alarm code id' do
61
- invalid = message.dup
62
- invalid.delete 'xACId'
63
- expect( validate(invalid) ).to eq([
64
- ["", "required", {"missing_keys"=>["xACId"]}]
65
- ])
66
- end
67
-
68
- it 'catches wrong extended alarm code id type' do
69
- invalid = message.dup
70
- invalid['xACId'] = 123
71
- expect( validate(invalid) ).to eq([
72
- ["/xACId", "string"]
73
- ])
74
- end
75
-
76
- it 'catches missing state' do
77
- invalid = message.dup
78
- invalid.delete 'aSp'
79
- expect( validate(invalid) ).to eq([
80
- ["", "required", {"missing_keys"=>["aSp"]}]
81
- ])
82
- end
83
-
84
- it 'catches bad state' do
85
- invalid = message.dup
86
- invalid['aSp'] = "Bad"
87
- expect( validate(invalid) ).to eq([
88
- ["/aSp", "enum"]
89
- ])
90
- end
91
-
92
- it 'catches wrong state type' do
93
- invalid = message.dup
94
- invalid['aSp'] = 123
95
- expect( validate(invalid) ).to eq([
96
- ["/aSp", "enum"],
97
- ["/aSp", "string"]
98
- ])
99
- end
100
-
101
- it 'catches missing alarm code id' do
102
- invalid = message.dup
103
- invalid.delete 'aS'
104
- expect( validate(invalid) ).to eq([
105
- ["", "required", {"missing_keys"=>["aS"]}]
106
- ])
107
- end
108
-
109
- it 'catches bad alarm code id' do
110
- invalid = message.dup
111
- invalid['aS'] = "Bad"
112
- expect( validate(invalid) ).to eq([
113
- ["/aS", "enum"]
114
- ])
115
- end
116
-
117
- it 'catches wrong alarm code id type' do
118
- invalid = message.dup
119
- invalid['aS'] = 123
120
- expect( validate(invalid) ).to eq([
121
- ["/aS", "enum"],
122
- ["/aS", "string"]
123
- ])
124
- end
125
-
126
- it 'catches missing alarm code id' do
127
- invalid = message.dup
128
- invalid.delete 'sS'
129
- expect( validate(invalid) ).to eq([
130
- ["", "required", {"missing_keys"=>["sS"]}]
131
- ])
132
- end
133
-
134
- it 'catches bad alarm code id' do
135
- invalid = message.dup
136
- invalid['sS'] = "Bad"
137
- expect( validate(invalid) ).to eq([
138
- ["/sS", "enum"]
139
- ])
140
- end
141
-
142
- it 'catches wrong alarm code id type' do
143
- invalid = message.dup
144
- invalid['sS'] = 123
145
- expect( validate(invalid) ).to eq([
146
- ["/sS", "enum"],
147
- ["/sS", "string"]
148
- ])
149
- end
150
-
151
- it 'catches missing alarm code id' do
152
- invalid = message.dup
153
- invalid.delete 'ack'
154
- expect( validate(invalid) ).to eq([
155
- ["", "required", {"missing_keys"=>["ack"]}]
156
- ])
157
- end
158
-
159
- it 'catches bad alarm code id' do
160
- invalid = message.dup
161
- invalid['ack'] = "Bad"
162
- expect( validate(invalid) ).to eq([
163
- ["/ack", "enum"]
164
- ])
165
- end
166
-
167
- it 'catches wrong alarm code id type' do
168
- invalid = message.dup
169
- invalid['ack'] = 123
170
- expect( validate(invalid) ).to eq([
171
- ["/ack", "enum"],
172
- ["/ack", "string"]
173
- ])
174
- end
175
-
176
- it 'catches missing category' do
177
- invalid = message.dup
178
- invalid.delete 'cat'
179
- expect( validate(invalid) ).to eq([
180
- ["", "required", {"missing_keys"=>["cat"]}]
181
- ])
182
- end
183
-
184
- it 'catches bad category' do
185
- invalid = message.dup
186
- invalid['cat'] = "A"
187
- expect( validate(invalid) ).to eq([
188
- ["/cat", "enum"]
189
- ])
190
- end
191
-
192
- it 'catches wrong category' do
193
- invalid = message.dup
194
- invalid['cat'] = 123
195
- expect( validate(invalid) ).to eq([
196
- ["/cat", "enum"],
197
- ["/cat", "string"]
198
- ])
199
- end
200
-
201
- it 'catches missing priority' do
202
- invalid = message.dup
203
- invalid.delete 'pri'
204
- expect( validate(invalid) ).to eq([
205
- ["", "required", {"missing_keys"=>["pri"]}]
206
- ])
207
- end
208
-
209
- it 'catches bad priority' do
210
- invalid = message.dup
211
- invalid['pri'] = "4"
212
- expect( validate(invalid) ).to eq([
213
- ["/pri", "enum"]
214
- ])
215
- end
216
-
217
- it 'catches wrong priority' do
218
- invalid = message.dup
219
- invalid['pri'] = 1
220
- expect( validate(invalid) ).to eq([
221
- ["/pri", "enum"],
222
- ["/pri", "string"]
223
- ])
224
- end
225
-
226
- it 'catches missing timestamp' do
227
- invalid = message.dup
228
- invalid.delete 'aTs'
229
- expect( validate(invalid) ).to eq([
230
- ["", "required", {"missing_keys"=>["aTs"]}]
231
- ])
232
- end
233
-
234
- it 'catches bad timestamp' do
235
- invalid = message.dup
236
- invalid['aTs'] = "yesterday"
237
- expect( validate(invalid) ).to eq([
238
- ["/aTs", "pattern"]
239
- ])
240
- end
241
-
242
- it 'catches wrong timestamp type' do
243
- invalid = message.dup
244
- invalid['aTs'] = 123
245
- expect( validate(invalid) ).to eq([
246
- ["/aTs", "string"]
247
- ])
248
- end
249
-
250
- it 'catches missing rvs' do
251
- invalid = message.dup
252
- invalid.delete 'rvs'
253
- expect( validate(invalid) ).to eq([
254
- ["", "required", {"missing_keys"=>["rvs"]}]
255
- ])
256
- end
257
-
258
- it 'catches bad rvs type' do
259
- invalid = message.dup
260
- invalid["rvs"] = {}
261
- expect( validate(invalid) ).to eq([
262
- ["/rvs", "array"]
263
- ])
264
- end
265
-
266
- it 'catches missing alarm name' do
267
- invalid = message.dup
268
- invalid["rvs"].first.delete 'n'
269
- expect( validate(invalid) ).to eq([
270
- ["/rvs/0", "required", {"missing_keys"=>["n"]}]
271
- ])
272
- end
273
-
274
- it 'catches bad alarm name' do
275
- invalid = message.dup
276
- invalid["rvs"].first['n'] = 3
277
- expect( validate(invalid) ).to eq([
278
- ["/rvs/0/n", "string"]
279
- ])
280
- end
281
-
282
- it 'catches missing alarm value' do
283
- invalid = message.dup
284
- invalid["rvs"].first.delete 'v'
285
- expect( validate(invalid) ).to eq([
286
- ["/rvs/0", "required", {"missing_keys"=>["v"]}]
287
- ])
288
- end
289
-
290
- it 'catches bad alarm value' do
291
- invalid = message.dup
292
- invalid["rvs"].first['v'] = 3
293
- expect( validate(invalid) ).to eq([
294
- ["/rvs/0/v", "string"]
295
- ])
296
- end
297
-
298
- end