blob: 6ebdae261879465417363713172dfb32f61e6206 [file] [log] [blame]
Neels Hofmeyr98509462017-10-09 17:28:53 +02001
2===== test_subscr_create_update_sel_delete
3
4--- Create with valid / invalid IMSI
5
6db_subscr_create(dbc, imsi0) --> 0
7
8db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
9struct hlr_subscriber {
10 .id = 1,
11 .imsi = '123456789000000',
12}
13
14db_subscr_create(dbc, imsi1) --> 0
15
16db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
17struct hlr_subscriber {
18 .id = 2,
19 .imsi = '123456789000001',
20}
21
22db_subscr_create(dbc, imsi2) --> 0
23
24db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
25struct hlr_subscriber {
26 .id = 3,
27 .imsi = '123456789000002',
28}
29
30db_subscr_create(dbc, imsi0) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020031DAUC IMSI='123456789000000': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
32
33db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
34struct hlr_subscriber {
35 .id = 1,
36 .imsi = '123456789000000',
37}
38
39db_subscr_create(dbc, imsi1) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020040DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
41
42db_subscr_create(dbc, imsi1) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020043DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
44
45db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
46struct hlr_subscriber {
47 .id = 2,
48 .imsi = '123456789000001',
49}
50
51db_subscr_create(dbc, imsi2) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020052DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
53
54db_subscr_create(dbc, imsi2) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020055DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
56
57db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
58struct hlr_subscriber {
59 .id = 3,
60 .imsi = '123456789000002',
61}
62
63db_subscr_create(dbc, "123456789 000003") --> -EINVAL
64DAUC Cannot create subscriber: invalid IMSI: '123456789 000003'
65
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +020066db_subscr_get_by_imsi(dbc, "123456789000003", &g_subscr) --> -ENOENT
67DAUC Cannot read subscriber from db: IMSI='123456789000003': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +020068
69db_subscr_create(dbc, "123456789000002123456") --> -EINVAL
70DAUC Cannot create subscriber: invalid IMSI: '123456789000002123456'
71
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +020072db_subscr_get_by_imsi(dbc, "123456789000002123456", &g_subscr) --> -ENOENT
73DAUC Cannot read subscriber from db: IMSI='123456789000002123456': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +020074
75db_subscr_create(dbc, "foobar123") --> -EINVAL
76DAUC Cannot create subscriber: invalid IMSI: 'foobar123'
77
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +020078db_subscr_get_by_imsi(dbc, "foobar123", &g_subscr) --> -ENOENT
79DAUC Cannot read subscriber from db: IMSI='foobar123': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +020080
81db_subscr_create(dbc, "123") --> -EINVAL
82DAUC Cannot create subscriber: invalid IMSI: '123'
83
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +020084db_subscr_get_by_imsi(dbc, "123", &g_subscr) --> -ENOENT
85DAUC Cannot read subscriber from db: IMSI='123': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +020086
87db_subscr_create(dbc, short_imsi) --> 0
88
89db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0
90struct hlr_subscriber {
91 .id = 4,
92 .imsi = '123456',
93}
94
95
96--- Set valid / invalid MSISDN
97
98db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
99struct hlr_subscriber {
100 .id = 1,
101 .imsi = '123456789000000',
102}
103
104db_subscr_update_msisdn_by_imsi(dbc, imsi0, "54321") --> 0
105
106db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
107struct hlr_subscriber {
108 .id = 1,
109 .imsi = '123456789000000',
110 .msisdn = '54321',
111}
112
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200113db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> 0
114struct hlr_subscriber {
115 .id = 1,
116 .imsi = '123456789000000',
117 .msisdn = '54321',
118}
119
Neels Hofmeyr98509462017-10-09 17:28:53 +0200120db_subscr_update_msisdn_by_imsi(dbc, imsi0, "54321012345678912345678") --> -EINVAL
121DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '54321012345678912345678'
122
123db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
124struct hlr_subscriber {
125 .id = 1,
126 .imsi = '123456789000000',
127 .msisdn = '54321',
128}
129
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200130db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> 0
131struct hlr_subscriber {
132 .id = 1,
133 .imsi = '123456789000000',
134 .msisdn = '54321',
135}
136
137db_subscr_get_by_msisdn(dbc, "54321012345678912345678", &g_subscr) --> -ENOENT
138DAUC Cannot read subscriber from db: MSISDN='54321012345678912345678': No such subscriber
139
Neels Hofmeyr98509462017-10-09 17:28:53 +0200140db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543 21") --> -EINVAL
141DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '543 21'
142
143db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
144struct hlr_subscriber {
145 .id = 1,
146 .imsi = '123456789000000',
147 .msisdn = '54321',
148}
149
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200150db_subscr_get_by_msisdn(dbc, "543 21", &g_subscr) --> -ENOENT
151DAUC Cannot read subscriber from db: MSISDN='543 21': No such subscriber
152
Neels Hofmeyr98509462017-10-09 17:28:53 +0200153db_subscr_update_msisdn_by_imsi(dbc, imsi0, "foobar123") --> -EINVAL
154DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: 'foobar123'
155
156db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
157struct hlr_subscriber {
158 .id = 1,
159 .imsi = '123456789000000',
160 .msisdn = '54321',
161}
162
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200163db_subscr_get_by_msisdn(dbc, "foobar123", &g_subscr) --> -ENOENT
164DAUC Cannot read subscriber from db: MSISDN='foobar123': No such subscriber
165
Neels Hofmeyr98509462017-10-09 17:28:53 +0200166db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5") --> 0
167
168db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
169struct hlr_subscriber {
170 .id = 1,
171 .imsi = '123456789000000',
172 .msisdn = '5',
173}
174
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200175db_subscr_get_by_msisdn(dbc, "5", &g_subscr) --> 0
176struct hlr_subscriber {
177 .id = 1,
178 .imsi = '123456789000000',
179 .msisdn = '5',
180}
181
182db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> -ENOENT
183DAUC Cannot read subscriber from db: MSISDN='54321': No such subscriber
184
Neels Hofmeyr98509462017-10-09 17:28:53 +0200185db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543210123456789") --> 0
186
187db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
188struct hlr_subscriber {
189 .id = 1,
190 .imsi = '123456789000000',
191 .msisdn = '543210123456789',
192}
193
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200194db_subscr_get_by_msisdn(dbc, "543210123456789", &g_subscr) --> 0
195struct hlr_subscriber {
196 .id = 1,
197 .imsi = '123456789000000',
198 .msisdn = '543210123456789',
199}
200
Neels Hofmeyr98509462017-10-09 17:28:53 +0200201db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5432101234567891") --> -EINVAL
202DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '5432101234567891'
203
204db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
205struct hlr_subscriber {
206 .id = 1,
207 .imsi = '123456789000000',
208 .msisdn = '543210123456789',
209}
210
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200211db_subscr_get_by_msisdn(dbc, "5432101234567891", &g_subscr) --> -ENOENT
212DAUC Cannot read subscriber from db: MSISDN='5432101234567891': No such subscriber
213
Neels Hofmeyr98509462017-10-09 17:28:53 +0200214
215--- Set MSISDN on non-existent / invalid IMSI
216
217db_subscr_update_msisdn_by_imsi(dbc, unknown_imsi, "99") --> -ENOENT
218DAUC Cannot update MSISDN: no such subscriber: IMSI='999999999'
219
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200220db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT
221DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber
222
Neels Hofmeyr98509462017-10-09 17:28:53 +0200223db_subscr_update_msisdn_by_imsi(dbc, "foobar", "99") --> -ENOENT
224DAUC Cannot update MSISDN: no such subscriber: IMSI='foobar'
225
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200226db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT
227DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber
228
Neels Hofmeyr98509462017-10-09 17:28:53 +0200229
Oliver Smith81db3892019-01-09 12:03:51 +0100230--- Set valid / invalid IMEI
231
232db_subscr_update_imei_by_imsi(dbc, imsi0, "12345678901234") --> 0
233
234db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> 0
235struct hlr_subscriber {
236 .id = 1,
237 .imsi = '123456789000000',
238 .msisdn = '543210123456789',
239 .imei = '12345678901234',
240}
241
242db_subscr_update_imei_by_imsi(dbc, imsi0, "123456789012345") --> -EINVAL
243DAUC Cannot update subscriber IMSI='123456789000000': invalid IMEI: '123456789012345'
244
245db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> 0
246struct hlr_subscriber {
247 .id = 1,
248 .imsi = '123456789000000',
249 .msisdn = '543210123456789',
250 .imei = '12345678901234',
251}
252
253db_subscr_get_by_imei(dbc, "123456789012345", &g_subscr) --> -ENOENT
254DAUC Cannot read subscriber from db: IMEI=123456789012345: No such subscriber
255
256
257--- Set the same IMEI again
258
259db_subscr_update_imei_by_imsi(dbc, imsi0, "12345678901234") --> 0
260
261db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> 0
262struct hlr_subscriber {
263 .id = 1,
264 .imsi = '123456789000000',
265 .msisdn = '543210123456789',
266 .imei = '12345678901234',
267}
268
269
270--- Remove IMEI
271
272db_subscr_update_imei_by_imsi(dbc, imsi0, NULL) --> 0
273
274db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> -ENOENT
275DAUC Cannot read subscriber from db: IMEI=12345678901234: No such subscriber
276
277
Neels Hofmeyre8ccd502017-10-06 04:10:06 +0200278--- Set / unset nam_cs and nam_ps
279
280db_subscr_nam(dbc, imsi0, false, true) --> 0
281
282db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
283struct hlr_subscriber {
284 .id = 1,
285 .imsi = '123456789000000',
286 .msisdn = '543210123456789',
287 .nam_ps = false,
288}
289
290db_subscr_nam(dbc, imsi0, false, false) --> 0
291
292db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
293struct hlr_subscriber {
294 .id = 1,
295 .imsi = '123456789000000',
296 .msisdn = '543210123456789',
297 .nam_cs = false,
298 .nam_ps = false,
299}
300
301db_subscr_nam(dbc, imsi0, true, false) --> 0
302
303db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
304struct hlr_subscriber {
305 .id = 1,
306 .imsi = '123456789000000',
307 .msisdn = '543210123456789',
308 .nam_ps = false,
309}
310
311db_subscr_nam(dbc, imsi0, true, true) --> 0
312
313db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
314struct hlr_subscriber {
315 .id = 1,
316 .imsi = '123456789000000',
317 .msisdn = '543210123456789',
318}
319
320
321--- Set / unset nam_cs and nam_ps *again*
322
323db_subscr_nam(dbc, imsi0, false, true) --> 0
324
325db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
326struct hlr_subscriber {
327 .id = 1,
328 .imsi = '123456789000000',
329 .msisdn = '543210123456789',
330 .nam_ps = false,
331}
332
333db_subscr_nam(dbc, imsi0, false, true) --> 0
334
335db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
336struct hlr_subscriber {
337 .id = 1,
338 .imsi = '123456789000000',
339 .msisdn = '543210123456789',
340 .nam_ps = false,
341}
342
343db_subscr_nam(dbc, imsi0, false, false) --> 0
344
345db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
346struct hlr_subscriber {
347 .id = 1,
348 .imsi = '123456789000000',
349 .msisdn = '543210123456789',
350 .nam_cs = false,
351 .nam_ps = false,
352}
353
354db_subscr_nam(dbc, imsi0, false, false) --> 0
355
356db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
357struct hlr_subscriber {
358 .id = 1,
359 .imsi = '123456789000000',
360 .msisdn = '543210123456789',
361 .nam_cs = false,
362 .nam_ps = false,
363}
364
365db_subscr_nam(dbc, imsi0, true, true) --> 0
366
367db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
368struct hlr_subscriber {
369 .id = 1,
370 .imsi = '123456789000000',
371 .msisdn = '543210123456789',
372 .nam_cs = false,
373}
374
375db_subscr_nam(dbc, imsi0, true, true) --> 0
376
377db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
378struct hlr_subscriber {
379 .id = 1,
380 .imsi = '123456789000000',
381 .msisdn = '543210123456789',
382 .nam_cs = false,
383}
384
385db_subscr_nam(dbc, imsi0, true, false) --> 0
386
387db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
388struct hlr_subscriber {
389 .id = 1,
390 .imsi = '123456789000000',
391 .msisdn = '543210123456789',
392}
393
394db_subscr_nam(dbc, imsi0, true, false) --> 0
395
396db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
397struct hlr_subscriber {
398 .id = 1,
399 .imsi = '123456789000000',
400 .msisdn = '543210123456789',
401}
402
403
404--- Set nam_cs and nam_ps on non-existent / invalid IMSI
405
406db_subscr_nam(dbc, unknown_imsi, false, true) --> -ENOENT
407DAUC Cannot disable PS: no such subscriber: IMSI='999999999'
408
409db_subscr_nam(dbc, unknown_imsi, false, false) --> -ENOENT
410DAUC Cannot disable CS: no such subscriber: IMSI='999999999'
411
412db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
413DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
414
415db_subscr_nam(dbc, "foobar", false, true) --> -ENOENT
416DAUC Cannot disable PS: no such subscriber: IMSI='foobar'
417
418db_subscr_nam(dbc, "foobar", false, false) --> -ENOENT
419DAUC Cannot disable CS: no such subscriber: IMSI='foobar'
420
421
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200422--- Record LU for PS and CS (SGSN and VLR names)
423
424db_subscr_lu(dbc, id0, "5952", true) --> 0
425
426db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
427struct hlr_subscriber {
428 .id = 1,
429 .imsi = '123456789000000',
430 .msisdn = '543210123456789',
431 .sgsn_number = '5952',
432}
433
434db_subscr_lu(dbc, id0, "712", false) --> 0
435
436db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
437struct hlr_subscriber {
438 .id = 1,
439 .imsi = '123456789000000',
440 .msisdn = '543210123456789',
441 .vlr_number = '712',
442 .sgsn_number = '5952',
443}
444
445
446--- Record LU for PS and CS (SGSN and VLR names) *again*
447
448db_subscr_lu(dbc, id0, "111", true) --> 0
449
450db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
451struct hlr_subscriber {
452 .id = 1,
453 .imsi = '123456789000000',
454 .msisdn = '543210123456789',
455 .vlr_number = '712',
456 .sgsn_number = '111',
457}
458
459db_subscr_lu(dbc, id0, "111", true) --> 0
460
461db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
462struct hlr_subscriber {
463 .id = 1,
464 .imsi = '123456789000000',
465 .msisdn = '543210123456789',
466 .vlr_number = '712',
467 .sgsn_number = '111',
468}
469
470db_subscr_lu(dbc, id0, "222", false) --> 0
471
472db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
473struct hlr_subscriber {
474 .id = 1,
475 .imsi = '123456789000000',
476 .msisdn = '543210123456789',
477 .vlr_number = '222',
478 .sgsn_number = '111',
479}
480
481db_subscr_lu(dbc, id0, "222", false) --> 0
482
483db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
484struct hlr_subscriber {
485 .id = 1,
486 .imsi = '123456789000000',
487 .msisdn = '543210123456789',
488 .vlr_number = '222',
489 .sgsn_number = '111',
490}
491
492
493--- Unset LU info for PS and CS (SGSN and VLR names)
494
495db_subscr_lu(dbc, id0, "", true) --> 0
496
497db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
498struct hlr_subscriber {
499 .id = 1,
500 .imsi = '123456789000000',
501 .msisdn = '543210123456789',
502 .vlr_number = '222',
503}
504
505db_subscr_lu(dbc, id0, "", false) --> 0
506
507db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
508struct hlr_subscriber {
509 .id = 1,
510 .imsi = '123456789000000',
511 .msisdn = '543210123456789',
512}
513
514db_subscr_lu(dbc, id0, "111", true) --> 0
515
516db_subscr_lu(dbc, id0, "222", false) --> 0
517
518db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
519struct hlr_subscriber {
520 .id = 1,
521 .imsi = '123456789000000',
522 .msisdn = '543210123456789',
523 .vlr_number = '222',
524 .sgsn_number = '111',
525}
526
527db_subscr_lu(dbc, id0, NULL, true) --> 0
528
529db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
530struct hlr_subscriber {
531 .id = 1,
532 .imsi = '123456789000000',
533 .msisdn = '543210123456789',
534 .vlr_number = '222',
535}
536
537db_subscr_lu(dbc, id0, NULL, false) --> 0
538
539db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
540struct hlr_subscriber {
541 .id = 1,
542 .imsi = '123456789000000',
543 .msisdn = '543210123456789',
544}
545
546
547--- Record LU for non-existent ID
548
549db_subscr_lu(dbc, 99999, "5952", true) --> -ENOENT
550DAUC Cannot update SGSN number for subscriber ID=99999: no such subscriber
551
552db_subscr_lu(dbc, 99999, "712", false) --> -ENOENT
553DAUC Cannot update VLR number for subscriber ID=99999: no such subscriber
554
555db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT
556DAUC Cannot read subscriber from db: ID=99999: No such subscriber
557
558
Neels Hofmeyre50121e2017-10-09 17:48:51 +0200559--- Purge and un-purge PS and CS
560
561db_subscr_purge(dbc, imsi0, true, true) --> 0
562
563db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
564struct hlr_subscriber {
565 .id = 1,
566 .imsi = '123456789000000',
567 .msisdn = '543210123456789',
568 .ms_purged_ps = true,
569}
570
571db_subscr_purge(dbc, imsi0, true, false) --> 0
572
573db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
574struct hlr_subscriber {
575 .id = 1,
576 .imsi = '123456789000000',
577 .msisdn = '543210123456789',
578 .ms_purged_cs = true,
579 .ms_purged_ps = true,
580}
581
582db_subscr_purge(dbc, imsi0, false, false) --> 0
583
584db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
585struct hlr_subscriber {
586 .id = 1,
587 .imsi = '123456789000000',
588 .msisdn = '543210123456789',
589 .ms_purged_ps = true,
590}
591
592db_subscr_purge(dbc, imsi0, false, true) --> 0
593
594db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
595struct hlr_subscriber {
596 .id = 1,
597 .imsi = '123456789000000',
598 .msisdn = '543210123456789',
599}
600
601
602--- Purge PS and CS *again*
603
604db_subscr_purge(dbc, imsi0, true, true) --> 0
605
606db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
607struct hlr_subscriber {
608 .id = 1,
609 .imsi = '123456789000000',
610 .msisdn = '543210123456789',
611 .ms_purged_ps = true,
612}
613
614db_subscr_purge(dbc, imsi0, true, true) --> 0
615
616db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
617struct hlr_subscriber {
618 .id = 1,
619 .imsi = '123456789000000',
620 .msisdn = '543210123456789',
621 .ms_purged_ps = true,
622}
623
624db_subscr_purge(dbc, imsi0, false, true) --> 0
625
626db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
627struct hlr_subscriber {
628 .id = 1,
629 .imsi = '123456789000000',
630 .msisdn = '543210123456789',
631}
632
633db_subscr_purge(dbc, imsi0, false, true) --> 0
634
635db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
636struct hlr_subscriber {
637 .id = 1,
638 .imsi = '123456789000000',
639 .msisdn = '543210123456789',
640}
641
642db_subscr_purge(dbc, imsi0, true, false) --> 0
643
644db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
645struct hlr_subscriber {
646 .id = 1,
647 .imsi = '123456789000000',
648 .msisdn = '543210123456789',
649 .ms_purged_cs = true,
650}
651
652db_subscr_purge(dbc, imsi0, true, false) --> 0
653
654db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
655struct hlr_subscriber {
656 .id = 1,
657 .imsi = '123456789000000',
658 .msisdn = '543210123456789',
659 .ms_purged_cs = true,
660}
661
662db_subscr_purge(dbc, imsi0, false, false) --> 0
663
664db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
665struct hlr_subscriber {
666 .id = 1,
667 .imsi = '123456789000000',
668 .msisdn = '543210123456789',
669}
670
671db_subscr_purge(dbc, imsi0, false, false) --> 0
672
673db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
674struct hlr_subscriber {
675 .id = 1,
676 .imsi = '123456789000000',
677 .msisdn = '543210123456789',
678}
679
680
681--- Purge on non-existent / invalid IMSI
682
683db_subscr_purge(dbc, unknown_imsi, true, true) --> -ENOENT
684DAUC Cannot purge PS: no such subscriber: IMSI='999999999'
685
686db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
687DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
688
689db_subscr_purge(dbc, unknown_imsi, true, false) --> -ENOENT
690DAUC Cannot purge CS: no such subscriber: IMSI='999999999'
691
692db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
693DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
694
695
Neels Hofmeyr98509462017-10-09 17:28:53 +0200696--- Delete non-existent / invalid IDs
697
698db_subscr_delete_by_id(dbc, 999) --> -ENOENT
699DAUC Cannot delete: no such subscriber: ID=999
700
701db_subscr_delete_by_id(dbc, -10) --> -ENOENT
702DAUC Cannot delete: no such subscriber: ID=-10
703
704
705--- Delete subscribers
706
707db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
708struct hlr_subscriber {
709 .id = 1,
710 .imsi = '123456789000000',
711 .msisdn = '543210123456789',
712}
713
714db_subscr_delete_by_id(dbc, id0) --> 0
715
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200716db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
717DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200718
719db_subscr_delete_by_id(dbc, id0) --> -ENOENT
720DAUC Cannot delete: no such subscriber: ID=1
721
722db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
723struct hlr_subscriber {
724 .id = 2,
725 .imsi = '123456789000001',
726}
727
728db_subscr_delete_by_id(dbc, id1) --> 0
729
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200730db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> -ENOENT
731DAUC Cannot read subscriber from db: IMSI='123456789000001': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200732
733db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
734struct hlr_subscriber {
735 .id = 3,
736 .imsi = '123456789000002',
737}
738
739db_subscr_delete_by_id(dbc, id2) --> 0
740
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200741db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> -ENOENT
742DAUC Cannot read subscriber from db: IMSI='123456789000002': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200743
744db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0
745struct hlr_subscriber {
746 .id = 4,
747 .imsi = '123456',
748}
749
750db_subscr_delete_by_id(dbc, id_short) --> 0
751
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200752db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> -ENOENT
753DAUC Cannot read subscriber from db: IMSI='123456': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200754
755===== test_subscr_create_update_sel_delete: SUCCESS
756
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200757
758===== test_subscr_aud
759
760--- Get auth data for non-existent subscriber
761
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200762db_get_auth_data(dbc, unknown_imsi, &g_aud2g, &g_aud3g, &g_id) --> -2
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200763DAUC IMSI='999999999': No such subscriber
764
765
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100766db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
767DAUC IMSI='123456789000000': No such subscriber
768
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200769
770--- Create subscriber
771
772db_subscr_create(dbc, imsi0) --> 0
773
774db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
775struct hlr_subscriber {
776 .id = 1,
777 .imsi = '123456789000000',
778}
779
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100780db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200781DAUC IMSI='123456789000000': No 2G Auth Data
782DAUC IMSI='123456789000000': No 3G Auth Data
783
784
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100785db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
786DAUC IMSI='123456789000000': No 2G Auth Data
787DAUC IMSI='123456789000000': No 3G Auth Data
788
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200789
790--- Set auth data, 2G only
791
792db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
793
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200794db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200795DAUC IMSI='123456789000000': No 3G Auth Data
796
7972G: struct osmo_sub_auth_data {
798 .type = GSM,
799 .algo = COMP128v1,
800 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
801}
8023G: none
803
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100804db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
805DAUC IMSI='123456789000000': No 3G Auth Data
806DAUC IMSI='123456789000000': Calling to generate 3 vectors
807DAUC IMSI='123456789000000': Generated 3 vectors
808
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200809db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
810
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200811db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200812DAUC IMSI='123456789000000': No 3G Auth Data
813
8142G: struct osmo_sub_auth_data {
815 .type = GSM,
816 .algo = COMP128v1,
817 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
818}
8193G: none
820
821db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v2, "BeadedBeeAced1EbbedDefacedFacade")) --> 0
822
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200823db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200824DAUC IMSI='123456789000000': No 3G Auth Data
825
8262G: struct osmo_sub_auth_data {
827 .type = GSM,
828 .algo = COMP128v2,
829 .u.gsm.ki = 'beadedbeeaced1ebbeddefacedfacade',
830}
8313G: none
832
833db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "DeafBeddedBabeAcceededFadedDecaf")) --> 0
834
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200835db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200836DAUC IMSI='123456789000000': No 3G Auth Data
837
8382G: struct osmo_sub_auth_data {
839 .type = GSM,
840 .algo = COMP128v3,
841 .u.gsm.ki = 'deafbeddedbabeacceededfadeddecaf',
842}
8433G: none
844
845db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
846
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200847db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200848DAUC IMSI='123456789000000': No 3G Auth Data
849
8502G: struct osmo_sub_auth_data {
851 .type = GSM,
852 .algo = XOR,
853 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
854}
8553G: none
856
857
858--- Remove 2G auth data
859
860db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> 0
861
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100862db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200863DAUC IMSI='123456789000000': No 2G Auth Data
864DAUC IMSI='123456789000000': No 3G Auth Data
865
866
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100867db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
868DAUC IMSI='123456789000000': No 2G Auth Data
869DAUC IMSI='123456789000000': No 3G Auth Data
870
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200871db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> -ENOENT
872
873db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
874
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200875db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200876DAUC IMSI='123456789000000': No 3G Auth Data
877
8782G: struct osmo_sub_auth_data {
879 .type = GSM,
880 .algo = XOR,
881 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
882}
8833G: none
884
885db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, "f000000000000f00000000000f000000")) --> 0
886
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100887db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200888DAUC IMSI='123456789000000': No 2G Auth Data
889DAUC IMSI='123456789000000': No 3G Auth Data
890
891
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100892db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
893DAUC IMSI='123456789000000': No 2G Auth Data
894DAUC IMSI='123456789000000': No 3G Auth Data
895
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200896
897--- Set auth data, 3G only
898
899db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
900
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200901db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200902DAUC IMSI='123456789000000': No 2G Auth Data
903
9042G: none
9053G: struct osmo_sub_auth_data {
906 .type = UMTS,
907 .algo = MILENAGE,
908 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
909 .u.umts.opc_is_op = 1,
910 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
911 .u.umts.amf = '0000',
912 .u.umts.ind_bitlen = 5,
913}
914
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100915db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
916DAUC IMSI='123456789000000': No 2G Auth Data
917DAUC IMSI='123456789000000': Calling to generate 3 vectors
918DAUC IMSI='123456789000000': Generated 3 vectors
919DAUC IMSI='123456789000000': Updating SQN=0 in DB
920
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200921db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
922
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200923db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200924DAUC IMSI='123456789000000': No 2G Auth Data
925
9262G: none
9273G: struct osmo_sub_auth_data {
928 .type = UMTS,
929 .algo = MILENAGE,
930 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
931 .u.umts.opc_is_op = 1,
932 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
933 .u.umts.amf = '0000',
934 .u.umts.ind_bitlen = 5,
935}
936
937db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "Deaf0ff1ceD0d0DabbedD1ced1ceF00d", true, "F1bbed0afD0eF0bD0ffed0ddF1fe0b0e", 0)) --> 0
938
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200939db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200940DAUC IMSI='123456789000000': No 2G Auth Data
941
9422G: none
9433G: struct osmo_sub_auth_data {
944 .type = UMTS,
945 .algo = MILENAGE,
946 .u.umts.opc = 'deaf0ff1ced0d0dabbedd1ced1cef00d',
947 .u.umts.opc_is_op = 1,
948 .u.umts.k = 'f1bbed0afd0ef0bd0ffed0ddf1fe0b0e',
949 .u.umts.amf = '0000',
950}
951
952db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", OSMO_MILENAGE_IND_BITLEN_MAX)) --> 0
953
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200954db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200955DAUC IMSI='123456789000000': No 2G Auth Data
956
9572G: none
9583G: struct osmo_sub_auth_data {
959 .type = UMTS,
960 .algo = MILENAGE,
961 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
962 .u.umts.opc_is_op = 0,
963 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
964 .u.umts.amf = '0000',
965 .u.umts.ind_bitlen = 28,
966}
967
968db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
969
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200970db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200971DAUC IMSI='123456789000000': No 2G Auth Data
972
9732G: none
9743G: struct osmo_sub_auth_data {
975 .type = UMTS,
976 .algo = MILENAGE,
977 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
978 .u.umts.opc_is_op = 0,
979 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
980 .u.umts.amf = '0000',
981 .u.umts.ind_bitlen = 5,
982}
983
984
985--- Remove 3G auth data
986
987db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> 0
988
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100989db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200990DAUC IMSI='123456789000000': No 2G Auth Data
991DAUC IMSI='123456789000000': No 3G Auth Data
992
993
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100994db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
995DAUC IMSI='123456789000000': No 2G Auth Data
996DAUC IMSI='123456789000000': No 3G Auth Data
997
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200998db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> -ENOENT
999
1000db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
1001
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001002db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001003DAUC IMSI='123456789000000': No 2G Auth Data
1004
10052G: none
10063G: struct osmo_sub_auth_data {
1007 .type = UMTS,
1008 .algo = MILENAGE,
1009 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
1010 .u.umts.opc_is_op = 0,
1011 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
1012 .u.umts.amf = '0000',
1013 .u.umts.ind_bitlen = 5,
1014}
1015
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001016db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1017DAUC IMSI='123456789000000': No 2G Auth Data
1018DAUC IMSI='123456789000000': Calling to generate 3 vectors
1019DAUC IMSI='123456789000000': Generated 3 vectors
1020DAUC IMSI='123456789000000': Updating SQN=0 in DB
1021
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001022db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, "asdfasdfasd", false, "asdfasdfasdf", 99999)) --> 0
1023
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001024db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001025DAUC IMSI='123456789000000': No 2G Auth Data
1026DAUC IMSI='123456789000000': No 3G Auth Data
1027
1028
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001029db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1030DAUC IMSI='123456789000000': No 2G Auth Data
1031DAUC IMSI='123456789000000': No 3G Auth Data
1032
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001033
1034--- Set auth data, 2G and 3G
1035
1036db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "CededEffacedAceFacedBadFadedBeef")) --> 0
1037
1038db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", 5)) --> 0
1039
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001040db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001041
10422G: struct osmo_sub_auth_data {
1043 .type = GSM,
1044 .algo = COMP128v3,
1045 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1046}
10473G: struct osmo_sub_auth_data {
1048 .type = UMTS,
1049 .algo = MILENAGE,
1050 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1051 .u.umts.opc_is_op = 0,
1052 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1053 .u.umts.amf = '0000',
1054 .u.umts.ind_bitlen = 5,
1055}
1056
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001057db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1058DAUC IMSI='123456789000000': Calling to generate 3 vectors
1059DAUC IMSI='123456789000000': Generated 3 vectors
1060DAUC IMSI='123456789000000': Updating SQN=0 in DB
1061
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001062
1063--- Set invalid auth data
1064
1065db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(99999, "f000000000000f00000000000f000000")) --> -EINVAL
1066DAUC Cannot update auth tokens: Unknown auth algo: 99999
1067
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001068db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001069
10702G: struct osmo_sub_auth_data {
1071 .type = GSM,
1072 .algo = COMP128v3,
1073 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1074}
10753G: struct osmo_sub_auth_data {
1076 .type = UMTS,
1077 .algo = MILENAGE,
1078 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1079 .u.umts.opc_is_op = 0,
1080 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1081 .u.umts.amf = '0000',
1082 .u.umts.ind_bitlen = 5,
1083}
1084
1085db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f000000000000f00000000000f000000f00000000")) --> -EINVAL
1086DAUC Cannot update auth tokens: Invalid KI: 'f000000000000f00000000000f000000f00000000'
1087
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001088db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001089
10902G: struct osmo_sub_auth_data {
1091 .type = GSM,
1092 .algo = COMP128v3,
1093 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1094}
10953G: struct osmo_sub_auth_data {
1096 .type = UMTS,
1097 .algo = MILENAGE,
1098 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1099 .u.umts.opc_is_op = 0,
1100 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1101 .u.umts.amf = '0000',
1102 .u.umts.ind_bitlen = 5,
1103}
1104
1105db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f00")) --> -EINVAL
1106DAUC Cannot update auth tokens: Invalid KI: 'f00'
1107
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001108db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001109
11102G: struct osmo_sub_auth_data {
1111 .type = GSM,
1112 .algo = COMP128v3,
1113 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1114}
11153G: struct osmo_sub_auth_data {
1116 .type = UMTS,
1117 .algo = MILENAGE,
1118 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1119 .u.umts.opc_is_op = 0,
1120 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1121 .u.umts.amf = '0000',
1122 .u.umts.ind_bitlen = 5,
1123}
1124
1125db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_MILENAGE, "0123456789abcdef0123456789abcdef")) --> -EINVAL
1126DAUC Cannot update auth tokens: auth algo not suited for 2G: MILENAGE
1127
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001128db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001129
11302G: struct osmo_sub_auth_data {
1131 .type = GSM,
1132 .algo = COMP128v3,
1133 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1134}
11353G: struct osmo_sub_auth_data {
1136 .type = UMTS,
1137 .algo = MILENAGE,
1138 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1139 .u.umts.opc_is_op = 0,
1140 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1141 .u.umts.amf = '0000',
1142 .u.umts.ind_bitlen = 5,
1143}
1144
1145db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "0f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1146DAUC Cannot update auth tokens: Invalid OP/OPC: '0f000000000000f00000000000f000000'
1147
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001148db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001149
11502G: struct osmo_sub_auth_data {
1151 .type = GSM,
1152 .algo = COMP128v3,
1153 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1154}
11553G: struct osmo_sub_auth_data {
1156 .type = UMTS,
1157 .algo = MILENAGE,
1158 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1159 .u.umts.opc_is_op = 0,
1160 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1161 .u.umts.amf = '0000',
1162 .u.umts.ind_bitlen = 5,
1163}
1164
1165db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "000000000000f00000000000f000000", 5)) --> -EINVAL
1166DAUC Cannot update auth tokens: Invalid K: '000000000000f00000000000f000000'
1167
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001168db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001169
11702G: struct osmo_sub_auth_data {
1171 .type = GSM,
1172 .algo = COMP128v3,
1173 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1174}
11753G: struct osmo_sub_auth_data {
1176 .type = UMTS,
1177 .algo = MILENAGE,
1178 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1179 .u.umts.opc_is_op = 0,
1180 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1181 .u.umts.amf = '0000',
1182 .u.umts.ind_bitlen = 5,
1183}
1184
1185db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", OSMO_MILENAGE_IND_BITLEN_MAX + 1)) --> -EINVAL
1186DAUC Cannot update auth tokens: Invalid ind_bitlen: 29
1187
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001188db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001189
11902G: struct osmo_sub_auth_data {
1191 .type = GSM,
1192 .algo = COMP128v3,
1193 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1194}
11953G: struct osmo_sub_auth_data {
1196 .type = UMTS,
1197 .algo = MILENAGE,
1198 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1199 .u.umts.opc_is_op = 0,
1200 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1201 .u.umts.amf = '0000',
1202 .u.umts.ind_bitlen = 5,
1203}
1204
1205db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "X000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1206DAUC Cannot update auth tokens: Invalid OP/OPC: 'X000000000000f00000000000f000000'
1207
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001208db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001209
12102G: struct osmo_sub_auth_data {
1211 .type = GSM,
1212 .algo = COMP128v3,
1213 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1214}
12153G: struct osmo_sub_auth_data {
1216 .type = UMTS,
1217 .algo = MILENAGE,
1218 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1219 .u.umts.opc_is_op = 0,
1220 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1221 .u.umts.amf = '0000',
1222 .u.umts.ind_bitlen = 5,
1223}
1224
1225db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000 f00000000000 f000000", 5)) --> -EINVAL
1226DAUC Cannot update auth tokens: Invalid K: 'f000000000000 f00000000000 f000000'
1227
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001228db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001229
12302G: struct osmo_sub_auth_data {
1231 .type = GSM,
1232 .algo = COMP128v3,
1233 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1234}
12353G: struct osmo_sub_auth_data {
1236 .type = UMTS,
1237 .algo = MILENAGE,
1238 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1239 .u.umts.opc_is_op = 0,
1240 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1241 .u.umts.amf = '0000',
1242 .u.umts.ind_bitlen = 5,
1243}
1244
1245
1246--- Delete subscriber
1247
1248db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1249struct hlr_subscriber {
1250 .id = 1,
1251 .imsi = '123456789000000',
1252}
1253
1254db_subscr_delete_by_id(dbc, id) --> 0
1255
1256db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1257DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1258
1259
1260--- Re-add subscriber and verify auth data didn't come back
1261
1262db_subscr_create(dbc, imsi0) --> 0
1263
1264db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1265struct hlr_subscriber {
1266 .id = 1,
1267 .imsi = '123456789000000',
1268}
1269
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001270db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001271DAUC IMSI='123456789000000': No 2G Auth Data
1272DAUC IMSI='123456789000000': No 3G Auth Data
1273
1274
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001275db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1276DAUC IMSI='123456789000000': No 2G Auth Data
1277DAUC IMSI='123456789000000': No 3G Auth Data
1278
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001279db_subscr_delete_by_id(dbc, id) --> 0
1280
1281db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1282DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1283
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001284db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
1285DAUC IMSI='123456789000000': No such subscriber
1286
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001287===== test_subscr_aud: SUCCESS
1288
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001289
1290===== test_subscr_sqn
1291
1292--- Set SQN for unknown subscriber
1293
1294db_update_sqn(dbc, 99, 999) --> -ENOENT
1295DAUC Cannot update SQN for subscriber ID=99: no auc_3g entry for such subscriber
1296
1297db_subscr_get_by_id(dbc, 99, &g_subscr) --> -ENOENT
1298DAUC Cannot read subscriber from db: ID=99: No such subscriber
1299
1300db_update_sqn(dbc, 9999, 99) --> -ENOENT
1301DAUC Cannot update SQN for subscriber ID=9999: no auc_3g entry for such subscriber
1302
1303db_subscr_get_by_id(dbc, 9999, &g_subscr) --> -ENOENT
1304DAUC Cannot read subscriber from db: ID=9999: No such subscriber
1305
1306
1307--- Create subscriber
1308
1309db_subscr_create(dbc, imsi0) --> 0
1310
1311db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1312struct hlr_subscriber {
1313 .id = 1,
1314 .imsi = '123456789000000',
1315}
1316
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001317db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001318DAUC IMSI='123456789000000': No 2G Auth Data
1319DAUC IMSI='123456789000000': No 3G Auth Data
1320
1321
1322
1323--- Set SQN, but no 3G auth data present
1324
1325db_update_sqn(dbc, id, 123) --> -ENOENT
1326DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1327
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001328db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001329DAUC IMSI='123456789000000': No 2G Auth Data
1330DAUC IMSI='123456789000000': No 3G Auth Data
1331
1332
1333db_update_sqn(dbc, id, 543) --> -ENOENT
1334DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1335
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001336db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001337DAUC IMSI='123456789000000': No 2G Auth Data
1338DAUC IMSI='123456789000000': No 3G Auth Data
1339
1340
1341
1342--- Set auth 3G data
1343
1344db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
1345
1346db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1347DAUC IMSI='123456789000000': No 2G Auth Data
1348
13492G: none
13503G: struct osmo_sub_auth_data {
1351 .type = UMTS,
1352 .algo = MILENAGE,
1353 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1354 .u.umts.opc_is_op = 1,
1355 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1356 .u.umts.amf = '0000',
1357 .u.umts.ind_bitlen = 5,
1358}
1359
1360
1361--- Set SQN
1362
1363db_update_sqn(dbc, id, 23315) --> 0
1364
1365db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1366DAUC IMSI='123456789000000': No 2G Auth Data
1367
13682G: none
13693G: struct osmo_sub_auth_data {
1370 .type = UMTS,
1371 .algo = MILENAGE,
1372 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1373 .u.umts.opc_is_op = 1,
1374 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1375 .u.umts.amf = '0000',
1376 .u.umts.sqn = 23315,
1377 .u.umts.sqn = 0x5b13,
1378 .u.umts.ind_bitlen = 5,
1379}
1380
1381db_update_sqn(dbc, id, 23315) --> 0
1382
1383db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1384DAUC IMSI='123456789000000': No 2G Auth Data
1385
13862G: none
13873G: struct osmo_sub_auth_data {
1388 .type = UMTS,
1389 .algo = MILENAGE,
1390 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1391 .u.umts.opc_is_op = 1,
1392 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1393 .u.umts.amf = '0000',
1394 .u.umts.sqn = 23315,
1395 .u.umts.sqn = 0x5b13,
1396 .u.umts.ind_bitlen = 5,
1397}
1398
1399db_update_sqn(dbc, id, 423) --> 0
1400
1401db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1402DAUC IMSI='123456789000000': No 2G Auth Data
1403
14042G: none
14053G: struct osmo_sub_auth_data {
1406 .type = UMTS,
1407 .algo = MILENAGE,
1408 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1409 .u.umts.opc_is_op = 1,
1410 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1411 .u.umts.amf = '0000',
1412 .u.umts.sqn = 423,
1413 .u.umts.sqn = 0x1a7,
1414 .u.umts.ind_bitlen = 5,
1415}
1416
1417
1418--- Set SQN: thru uint64_t range, using the int64_t SQLite bind
1419
1420db_update_sqn(dbc, id, 0) --> 0
1421
1422db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1423DAUC IMSI='123456789000000': No 2G Auth Data
1424
14252G: none
14263G: struct osmo_sub_auth_data {
1427 .type = UMTS,
1428 .algo = MILENAGE,
1429 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1430 .u.umts.opc_is_op = 1,
1431 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1432 .u.umts.amf = '0000',
1433 .u.umts.ind_bitlen = 5,
1434}
1435
1436db_update_sqn(dbc, id, INT64_MAX) --> 0
1437
1438db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1439DAUC IMSI='123456789000000': No 2G Auth Data
1440
14412G: none
14423G: struct osmo_sub_auth_data {
1443 .type = UMTS,
1444 .algo = MILENAGE,
1445 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1446 .u.umts.opc_is_op = 1,
1447 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1448 .u.umts.amf = '0000',
1449 .u.umts.sqn = 9223372036854775807,
1450 .u.umts.sqn = 0x7fffffffffffffff,
1451 .u.umts.ind_bitlen = 5,
1452}
1453
1454db_update_sqn(dbc, id, INT64_MIN) --> 0
1455
1456db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1457DAUC IMSI='123456789000000': No 2G Auth Data
1458
14592G: none
14603G: struct osmo_sub_auth_data {
1461 .type = UMTS,
1462 .algo = MILENAGE,
1463 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1464 .u.umts.opc_is_op = 1,
1465 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1466 .u.umts.amf = '0000',
1467 .u.umts.sqn = 9223372036854775808,
1468 .u.umts.sqn = 0x8000000000000000,
1469 .u.umts.ind_bitlen = 5,
1470}
1471
1472db_update_sqn(dbc, id, UINT64_MAX) --> 0
1473
1474db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1475DAUC IMSI='123456789000000': No 2G Auth Data
1476
14772G: none
14783G: struct osmo_sub_auth_data {
1479 .type = UMTS,
1480 .algo = MILENAGE,
1481 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1482 .u.umts.opc_is_op = 1,
1483 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1484 .u.umts.amf = '0000',
1485 .u.umts.sqn = 18446744073709551615,
1486 .u.umts.sqn = 0xffffffffffffffff,
1487 .u.umts.ind_bitlen = 5,
1488}
1489
1490
1491--- Delete subscriber
1492
1493db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1494struct hlr_subscriber {
1495 .id = 1,
1496 .imsi = '123456789000000',
1497}
1498
1499db_subscr_delete_by_id(dbc, id) --> 0
1500
1501db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1502DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1503
1504===== test_subscr_sqn: SUCCESS
1505