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.
@@ -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.1"
16
+ "SXL" => "1.0.15"
16
17
  }}
17
18
 
18
19
  it 'accepts valid message' do