rsmp_schemer 0.3.1 → 0.4.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 +4 -4
- data/Gemfile.lock +10 -9
- data/lib/rsmp_schemer/version.rb +1 -1
- data/rsmp_schemer.gemspec +1 -1
- data/schemas/core_3.1.2/schema/core/alarm.json +8 -4
- data/schemas/core_3.1.2/spec/core/alarm_spec.rb +15 -0
- data/schemas/core_3.1.4/.gitignore +1 -0
- data/schemas/core_3.1.4/schema/core/alarm.json +8 -4
- data/schemas/core_3.1.4/spec/core/alarm_spec.rb +15 -0
- data/schemas/core_3.1.4/spec/core/version_spec.rb +3 -2
- data/schemas/core_3.1.5/.gitignore +1 -0
- data/schemas/core_3.1.5/schema/core/alarm.json +40 -41
- 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 +47 -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
- data/schemas/tlc_1.0.13/schema/tlc/statuses/S0023.json +1 -1
- data/schemas/tlc_1.0.13/spec/tlc/S0023_spec.rb +96 -0
- data/schemas/tlc_1.0.14/schema/tlc/statuses/S0023.json +1 -1
- data/schemas/tlc_1.0.14/spec/tlc/S0023_spec.rb +96 -0
- data/schemas/tlc_1.0.15/schema/tlc/statuses/S0023.json +1 -1
- data/schemas/tlc_1.0.15/spec/tlc/S0023_spec.rb +96 -0
- metadata +18 -11
- data/schemas/core_3.1.2/examples/validate.rb +0 -35
- data/schemas/core_3.1.4/examples/validate.rb +0 -35
- data/schemas/core_3.1.4/spec/core/alarm_request_spec.rb +0 -72
- 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,96 @@
|
|
1
|
+
RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
|
2
|
+
let(:message) {{
|
3
|
+
"mType" => "rSMsg",
|
4
|
+
"mId" => "4173c2c8-a933-43cb-9425-66d4613731ed",
|
5
|
+
"type" => "StatusResponse",
|
6
|
+
"cId" => "O+14439=481WA001",
|
7
|
+
"sTs" => "2015-06-08T09:15:18.266Z",
|
8
|
+
"sS" => [
|
9
|
+
{ "sCI" => "S0023", "n" => "status", "s" => "", "q" => "recent" }
|
10
|
+
]
|
11
|
+
}}
|
12
|
+
|
13
|
+
it 'accepts empty list' do
|
14
|
+
message["sS"][0]['s'] = ''
|
15
|
+
expect( validate(message) ).to be_nil
|
16
|
+
end
|
17
|
+
it 'accepts one digit' do
|
18
|
+
message["sS"][0]['s'] = '1-1-0'
|
19
|
+
expect( validate(message) ).to be_nil
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'accepts two digits' do
|
23
|
+
message["sS"][0]['s'] = '01-01-20'
|
24
|
+
expect( validate(message) ).to be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'rejects three digits or more' do
|
28
|
+
message["sS"][0]['s'] = '01-01-100'
|
29
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
30
|
+
|
31
|
+
message["sS"][0]['s'] = '100-01-01'
|
32
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'accepts comma-separated items' do
|
36
|
+
message["sS"][0]['s'] = '1-1-0,1-2-0'
|
37
|
+
expect( validate(message) ).to be_nil
|
38
|
+
|
39
|
+
message["sS"][0]['s'] = '1-1-0,1-2-0,2-4-5'
|
40
|
+
expect( validate(message) ).to be_nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'rejects comma-separated lists with spaces' do
|
44
|
+
message["sS"][0]['s'] = '1-1-0, 1-2-0'
|
45
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
46
|
+
|
47
|
+
message["sS"][0]['s'] = '1-1-0 ,1-2-0'
|
48
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'rejects comma-separated lists with trailing comma' do
|
52
|
+
message["sS"][0]['s'] = '1-1-0,'
|
53
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'rejects comma-separated lists with leading comma' do
|
57
|
+
message["sS"][0]['s'] = ',1-1-0'
|
58
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'rejects comma-separated lists with empty items' do
|
62
|
+
message["sS"][0]['s'] = '1-1-0,,1-2-0'
|
63
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'rejects negatives' do
|
67
|
+
message["sS"][0]['s'] = '-1-2-3'
|
68
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
69
|
+
|
70
|
+
message["sS"][0]['s'] = '1--2-3'
|
71
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
72
|
+
|
73
|
+
message["sS"][0]['s'] = '1-2--3'
|
74
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'rejects floats' do
|
78
|
+
message["sS"][0]['s'] = '.1-2-3'
|
79
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
80
|
+
|
81
|
+
message["sS"][0]['s'] = '1-.2-3'
|
82
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
83
|
+
|
84
|
+
message["sS"][0]['s'] = '1-2-.3'
|
85
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
86
|
+
|
87
|
+
message["sS"][0]['s'] = '1.-2-3'
|
88
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
89
|
+
|
90
|
+
message["sS"][0]['s'] = '1-2.-3'
|
91
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
92
|
+
|
93
|
+
message["sS"][0]['s'] = '1-2-3.'
|
94
|
+
expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
|
95
|
+
end
|
96
|
+
end
|
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.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emil Tin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_schemer
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.
|
19
|
+
version: 0.2.21
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.
|
26
|
+
version: 0.2.21
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,7 +95,6 @@ files:
|
|
95
95
|
- schemas/core_3.1.2/Gemfile.lock
|
96
96
|
- schemas/core_3.1.2/LICENSE
|
97
97
|
- schemas/core_3.1.2/README.md
|
98
|
-
- schemas/core_3.1.2/examples/validate.rb
|
99
98
|
- schemas/core_3.1.2/schema/core/aggregated_status.json
|
100
99
|
- schemas/core_3.1.2/schema/core/alarm.json
|
101
100
|
- schemas/core_3.1.2/schema/core/command_request.json
|
@@ -257,12 +256,12 @@ files:
|
|
257
256
|
- schemas/core_3.1.3/spec/spec_helper.rb
|
258
257
|
- schemas/core_3.1.3/spec/tlc/M0001_spec.rb
|
259
258
|
- schemas/core_3.1.3/spec/tlc/S0007_spec.rb
|
259
|
+
- schemas/core_3.1.4/.gitignore
|
260
260
|
- schemas/core_3.1.4/.rspec
|
261
261
|
- schemas/core_3.1.4/Gemfile
|
262
262
|
- schemas/core_3.1.4/Gemfile.lock
|
263
263
|
- schemas/core_3.1.4/LICENSE
|
264
264
|
- schemas/core_3.1.4/README.md
|
265
|
-
- schemas/core_3.1.4/examples/validate.rb
|
266
265
|
- schemas/core_3.1.4/schema/core/aggregated_status.json
|
267
266
|
- schemas/core_3.1.4/schema/core/alarm.json
|
268
267
|
- schemas/core_3.1.4/schema/core/command_request.json
|
@@ -281,7 +280,6 @@ files:
|
|
281
280
|
- schemas/core_3.1.4/schema/core/version.json
|
282
281
|
- schemas/core_3.1.4/schema/core/watchdog.json
|
283
282
|
- schemas/core_3.1.4/spec/core/aggregated_status_spec.rb
|
284
|
-
- schemas/core_3.1.4/spec/core/alarm_request_spec.rb
|
285
283
|
- schemas/core_3.1.4/spec/core/alarm_spec.rb
|
286
284
|
- schemas/core_3.1.4/spec/core/command_request_spec.rb
|
287
285
|
- schemas/core_3.1.4/spec/core/command_response_spec.rb
|
@@ -297,15 +295,18 @@ files:
|
|
297
295
|
- schemas/core_3.1.4/spec/core/watchdog_spec.rb
|
298
296
|
- schemas/core_3.1.4/spec/schemer_helper.rb
|
299
297
|
- schemas/core_3.1.4/spec/spec_helper.rb
|
298
|
+
- schemas/core_3.1.5/.gitignore
|
300
299
|
- schemas/core_3.1.5/.rspec
|
301
300
|
- schemas/core_3.1.5/Gemfile
|
302
301
|
- schemas/core_3.1.5/Gemfile.lock
|
303
302
|
- schemas/core_3.1.5/LICENSE
|
304
303
|
- schemas/core_3.1.5/README.md
|
305
|
-
- schemas/core_3.1.5/examples/validate.rb
|
306
304
|
- schemas/core_3.1.5/schema/core/aggregated_status.json
|
307
305
|
- schemas/core_3.1.5/schema/core/aggregated_status_request.json
|
308
306
|
- schemas/core_3.1.5/schema/core/alarm.json
|
307
|
+
- schemas/core_3.1.5/schema/core/alarm_issue.json
|
308
|
+
- schemas/core_3.1.5/schema/core/alarm_suspend_resume.json
|
309
|
+
- schemas/core_3.1.5/schema/core/alarm_suspended_resumed.json
|
309
310
|
- schemas/core_3.1.5/schema/core/command_request.json
|
310
311
|
- schemas/core_3.1.5/schema/core/command_response.json
|
311
312
|
- schemas/core_3.1.5/schema/core/core.json
|
@@ -322,8 +323,11 @@ files:
|
|
322
323
|
- schemas/core_3.1.5/schema/core/version.json
|
323
324
|
- schemas/core_3.1.5/schema/core/watchdog.json
|
324
325
|
- schemas/core_3.1.5/spec/core/aggregated_status_spec.rb
|
325
|
-
- schemas/core_3.1.5/spec/core/
|
326
|
-
- schemas/core_3.1.5/spec/core/
|
326
|
+
- schemas/core_3.1.5/spec/core/alarm_issue_spec.rb
|
327
|
+
- schemas/core_3.1.5/spec/core/alarm_resume_spec.rb
|
328
|
+
- schemas/core_3.1.5/spec/core/alarm_resumed_spec.rb
|
329
|
+
- schemas/core_3.1.5/spec/core/alarm_suspend_spec.rb
|
330
|
+
- schemas/core_3.1.5/spec/core/alarm_suspended_spec.rb
|
327
331
|
- schemas/core_3.1.5/spec/core/command_request_spec.rb
|
328
332
|
- schemas/core_3.1.5/spec/core/command_response_spec.rb
|
329
333
|
- schemas/core_3.1.5/spec/core/core_spec.rb
|
@@ -501,6 +505,7 @@ files:
|
|
501
505
|
- schemas/tlc_1.0.13/spec/spec_helper.rb
|
502
506
|
- schemas/tlc_1.0.13/spec/tlc/M0001_spec.rb
|
503
507
|
- schemas/tlc_1.0.13/spec/tlc/S0007_spec.rb
|
508
|
+
- schemas/tlc_1.0.13/spec/tlc/S0023_spec.rb
|
504
509
|
- schemas/tlc_1.0.14/.gitignore
|
505
510
|
- schemas/tlc_1.0.14/.rspec
|
506
511
|
- schemas/tlc_1.0.14/Gemfile
|
@@ -593,6 +598,7 @@ files:
|
|
593
598
|
- schemas/tlc_1.0.14/spec/spec_helper.rb
|
594
599
|
- schemas/tlc_1.0.14/spec/tlc/M0001_spec.rb
|
595
600
|
- schemas/tlc_1.0.14/spec/tlc/S0007_spec.rb
|
601
|
+
- schemas/tlc_1.0.14/spec/tlc/S0023_spec.rb
|
596
602
|
- schemas/tlc_1.0.15/.gitignore
|
597
603
|
- schemas/tlc_1.0.15/.rspec
|
598
604
|
- schemas/tlc_1.0.15/Gemfile
|
@@ -692,6 +698,7 @@ files:
|
|
692
698
|
- schemas/tlc_1.0.15/spec/spec_helper.rb
|
693
699
|
- schemas/tlc_1.0.15/spec/tlc/M0001_spec.rb
|
694
700
|
- schemas/tlc_1.0.15/spec/tlc/S0007_spec.rb
|
701
|
+
- schemas/tlc_1.0.15/spec/tlc/S0023_spec.rb
|
695
702
|
- schemas/tlc_1.0.7/.gitignore
|
696
703
|
- schemas/tlc_1.0.7/.rspec
|
697
704
|
- schemas/tlc_1.0.7/Gemfile
|
@@ -936,7 +943,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
936
943
|
- !ruby/object:Gem::Version
|
937
944
|
version: '0'
|
938
945
|
requirements: []
|
939
|
-
rubygems_version: 3.2.
|
946
|
+
rubygems_version: 3.2.32
|
940
947
|
signing_key:
|
941
948
|
specification_version: 4
|
942
949
|
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,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,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
|