blob: adbd291f6c41a09733f4990db4b418fe933d430b [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
Neels Hofmeyre8ccd502017-10-06 04:10:06 +0200230--- Set / unset nam_cs and nam_ps
231
232db_subscr_nam(dbc, imsi0, false, true) --> 0
233
234db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
235struct hlr_subscriber {
236 .id = 1,
237 .imsi = '123456789000000',
238 .msisdn = '543210123456789',
239 .nam_ps = false,
240}
241
242db_subscr_nam(dbc, imsi0, false, false) --> 0
243
244db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
245struct hlr_subscriber {
246 .id = 1,
247 .imsi = '123456789000000',
248 .msisdn = '543210123456789',
249 .nam_cs = false,
250 .nam_ps = false,
251}
252
253db_subscr_nam(dbc, imsi0, true, false) --> 0
254
255db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
256struct hlr_subscriber {
257 .id = 1,
258 .imsi = '123456789000000',
259 .msisdn = '543210123456789',
260 .nam_ps = false,
261}
262
263db_subscr_nam(dbc, imsi0, true, true) --> 0
264
265db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
266struct hlr_subscriber {
267 .id = 1,
268 .imsi = '123456789000000',
269 .msisdn = '543210123456789',
270}
271
272
273--- Set / unset nam_cs and nam_ps *again*
274
275db_subscr_nam(dbc, imsi0, false, true) --> 0
276
277db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
278struct hlr_subscriber {
279 .id = 1,
280 .imsi = '123456789000000',
281 .msisdn = '543210123456789',
282 .nam_ps = false,
283}
284
285db_subscr_nam(dbc, imsi0, false, true) --> 0
286
287db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
288struct hlr_subscriber {
289 .id = 1,
290 .imsi = '123456789000000',
291 .msisdn = '543210123456789',
292 .nam_ps = false,
293}
294
295db_subscr_nam(dbc, imsi0, false, false) --> 0
296
297db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
298struct hlr_subscriber {
299 .id = 1,
300 .imsi = '123456789000000',
301 .msisdn = '543210123456789',
302 .nam_cs = false,
303 .nam_ps = false,
304}
305
306db_subscr_nam(dbc, imsi0, false, false) --> 0
307
308db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
309struct hlr_subscriber {
310 .id = 1,
311 .imsi = '123456789000000',
312 .msisdn = '543210123456789',
313 .nam_cs = false,
314 .nam_ps = false,
315}
316
317db_subscr_nam(dbc, imsi0, true, true) --> 0
318
319db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
320struct hlr_subscriber {
321 .id = 1,
322 .imsi = '123456789000000',
323 .msisdn = '543210123456789',
324 .nam_cs = false,
325}
326
327db_subscr_nam(dbc, imsi0, true, true) --> 0
328
329db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
330struct hlr_subscriber {
331 .id = 1,
332 .imsi = '123456789000000',
333 .msisdn = '543210123456789',
334 .nam_cs = false,
335}
336
337db_subscr_nam(dbc, imsi0, true, false) --> 0
338
339db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
340struct hlr_subscriber {
341 .id = 1,
342 .imsi = '123456789000000',
343 .msisdn = '543210123456789',
344}
345
346db_subscr_nam(dbc, imsi0, true, false) --> 0
347
348db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
349struct hlr_subscriber {
350 .id = 1,
351 .imsi = '123456789000000',
352 .msisdn = '543210123456789',
353}
354
355
356--- Set nam_cs and nam_ps on non-existent / invalid IMSI
357
358db_subscr_nam(dbc, unknown_imsi, false, true) --> -ENOENT
359DAUC Cannot disable PS: no such subscriber: IMSI='999999999'
360
361db_subscr_nam(dbc, unknown_imsi, false, false) --> -ENOENT
362DAUC Cannot disable CS: no such subscriber: IMSI='999999999'
363
364db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
365DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
366
367db_subscr_nam(dbc, "foobar", false, true) --> -ENOENT
368DAUC Cannot disable PS: no such subscriber: IMSI='foobar'
369
370db_subscr_nam(dbc, "foobar", false, false) --> -ENOENT
371DAUC Cannot disable CS: no such subscriber: IMSI='foobar'
372
373
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200374--- Record LU for PS and CS (SGSN and VLR names)
375
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100376db_subscr_lu(dbc, id0, "5952", true, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200377
378db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
379struct hlr_subscriber {
380 .id = 1,
381 .imsi = '123456789000000',
382 .msisdn = '543210123456789',
383 .sgsn_number = '5952',
384}
385
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100386db_subscr_lu(dbc, id0, "712", false, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200387
388db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
389struct hlr_subscriber {
390 .id = 1,
391 .imsi = '123456789000000',
392 .msisdn = '543210123456789',
393 .vlr_number = '712',
394 .sgsn_number = '5952',
395}
396
397
398--- Record LU for PS and CS (SGSN and VLR names) *again*
399
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100400db_subscr_lu(dbc, id0, "111", true, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200401
402db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
403struct hlr_subscriber {
404 .id = 1,
405 .imsi = '123456789000000',
406 .msisdn = '543210123456789',
407 .vlr_number = '712',
408 .sgsn_number = '111',
409}
410
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100411db_subscr_lu(dbc, id0, "111", true, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200412
413db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
414struct hlr_subscriber {
415 .id = 1,
416 .imsi = '123456789000000',
417 .msisdn = '543210123456789',
418 .vlr_number = '712',
419 .sgsn_number = '111',
420}
421
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100422db_subscr_lu(dbc, id0, "222", false, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200423
424db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
425struct hlr_subscriber {
426 .id = 1,
427 .imsi = '123456789000000',
428 .msisdn = '543210123456789',
429 .vlr_number = '222',
430 .sgsn_number = '111',
431}
432
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100433db_subscr_lu(dbc, id0, "222", false, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200434
435db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
436struct hlr_subscriber {
437 .id = 1,
438 .imsi = '123456789000000',
439 .msisdn = '543210123456789',
440 .vlr_number = '222',
441 .sgsn_number = '111',
442}
443
Neels Hofmeyr081af6b2018-12-29 04:10:35 +0100444db_subscr_lu(dbc, id0, "333", false, rat_types, 1) --> 0
445
446db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
447struct hlr_subscriber {
448 .id = 1,
449 .imsi = '123456789000000',
450 .msisdn = '543210123456789',
451 .vlr_number = '333',
452 .sgsn_number = '111',
453 .last_lu_rat = 'GERAN-A',
454}
455
456db_subscr_lu(dbc, id0, "333", false, rat_types, 1) --> 0
457
458db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
459struct hlr_subscriber {
460 .id = 1,
461 .imsi = '123456789000000',
462 .msisdn = '543210123456789',
463 .vlr_number = '333',
464 .sgsn_number = '111',
465 .last_lu_rat = 'GERAN-A',
466}
467
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200468
469--- Unset LU info for PS and CS (SGSN and VLR names)
470
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100471db_subscr_lu(dbc, id0, "", true, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200472
473db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
474struct hlr_subscriber {
475 .id = 1,
476 .imsi = '123456789000000',
477 .msisdn = '543210123456789',
Neels Hofmeyr081af6b2018-12-29 04:10:35 +0100478 .vlr_number = '333',
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200479}
480
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100481db_subscr_lu(dbc, id0, "", false, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200482
483db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
484struct hlr_subscriber {
485 .id = 1,
486 .imsi = '123456789000000',
487 .msisdn = '543210123456789',
488}
489
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100490db_subscr_lu(dbc, id0, "111", true, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200491
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100492db_subscr_lu(dbc, id0, "222", false, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200493
494db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
495struct hlr_subscriber {
496 .id = 1,
497 .imsi = '123456789000000',
498 .msisdn = '543210123456789',
499 .vlr_number = '222',
500 .sgsn_number = '111',
501}
502
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100503db_subscr_lu(dbc, id0, NULL, true, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200504
505db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
506struct hlr_subscriber {
507 .id = 1,
508 .imsi = '123456789000000',
509 .msisdn = '543210123456789',
510 .vlr_number = '222',
511}
512
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100513db_subscr_lu(dbc, id0, NULL, false, NULL, 0) --> 0
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200514
515db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
516struct hlr_subscriber {
517 .id = 1,
518 .imsi = '123456789000000',
519 .msisdn = '543210123456789',
520}
521
522
523--- Record LU for non-existent ID
524
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100525db_subscr_lu(dbc, 99999, "5952", true, NULL, 0) --> -ENOENT
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200526DAUC Cannot update SGSN number for subscriber ID=99999: no such subscriber
527
Neels Hofmeyr0f9daa62018-12-29 03:28:38 +0100528db_subscr_lu(dbc, 99999, "712", false, NULL, 0) --> -ENOENT
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200529DAUC Cannot update VLR number for subscriber ID=99999: no such subscriber
530
531db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT
532DAUC Cannot read subscriber from db: ID=99999: No such subscriber
533
534
Neels Hofmeyre50121e2017-10-09 17:48:51 +0200535--- Purge and un-purge PS and CS
536
537db_subscr_purge(dbc, imsi0, true, true) --> 0
538
539db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
540struct hlr_subscriber {
541 .id = 1,
542 .imsi = '123456789000000',
543 .msisdn = '543210123456789',
544 .ms_purged_ps = true,
545}
546
547db_subscr_purge(dbc, imsi0, true, false) --> 0
548
549db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
550struct hlr_subscriber {
551 .id = 1,
552 .imsi = '123456789000000',
553 .msisdn = '543210123456789',
554 .ms_purged_cs = true,
555 .ms_purged_ps = true,
556}
557
558db_subscr_purge(dbc, imsi0, false, false) --> 0
559
560db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
561struct hlr_subscriber {
562 .id = 1,
563 .imsi = '123456789000000',
564 .msisdn = '543210123456789',
565 .ms_purged_ps = true,
566}
567
568db_subscr_purge(dbc, imsi0, false, true) --> 0
569
570db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
571struct hlr_subscriber {
572 .id = 1,
573 .imsi = '123456789000000',
574 .msisdn = '543210123456789',
575}
576
577
578--- Purge PS and CS *again*
579
580db_subscr_purge(dbc, imsi0, true, true) --> 0
581
582db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
583struct hlr_subscriber {
584 .id = 1,
585 .imsi = '123456789000000',
586 .msisdn = '543210123456789',
587 .ms_purged_ps = true,
588}
589
590db_subscr_purge(dbc, imsi0, true, true) --> 0
591
592db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
593struct hlr_subscriber {
594 .id = 1,
595 .imsi = '123456789000000',
596 .msisdn = '543210123456789',
597 .ms_purged_ps = true,
598}
599
600db_subscr_purge(dbc, imsi0, false, true) --> 0
601
602db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
603struct hlr_subscriber {
604 .id = 1,
605 .imsi = '123456789000000',
606 .msisdn = '543210123456789',
607}
608
609db_subscr_purge(dbc, imsi0, false, true) --> 0
610
611db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
612struct hlr_subscriber {
613 .id = 1,
614 .imsi = '123456789000000',
615 .msisdn = '543210123456789',
616}
617
618db_subscr_purge(dbc, imsi0, true, false) --> 0
619
620db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
621struct hlr_subscriber {
622 .id = 1,
623 .imsi = '123456789000000',
624 .msisdn = '543210123456789',
625 .ms_purged_cs = true,
626}
627
628db_subscr_purge(dbc, imsi0, true, false) --> 0
629
630db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
631struct hlr_subscriber {
632 .id = 1,
633 .imsi = '123456789000000',
634 .msisdn = '543210123456789',
635 .ms_purged_cs = true,
636}
637
638db_subscr_purge(dbc, imsi0, false, false) --> 0
639
640db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
641struct hlr_subscriber {
642 .id = 1,
643 .imsi = '123456789000000',
644 .msisdn = '543210123456789',
645}
646
647db_subscr_purge(dbc, imsi0, false, false) --> 0
648
649db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
650struct hlr_subscriber {
651 .id = 1,
652 .imsi = '123456789000000',
653 .msisdn = '543210123456789',
654}
655
656
657--- Purge on non-existent / invalid IMSI
658
659db_subscr_purge(dbc, unknown_imsi, true, true) --> -ENOENT
660DAUC Cannot purge PS: no such subscriber: IMSI='999999999'
661
662db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
663DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
664
665db_subscr_purge(dbc, unknown_imsi, true, false) --> -ENOENT
666DAUC Cannot purge CS: no such subscriber: IMSI='999999999'
667
668db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
669DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
670
671
Neels Hofmeyr98509462017-10-09 17:28:53 +0200672--- Delete non-existent / invalid IDs
673
674db_subscr_delete_by_id(dbc, 999) --> -ENOENT
675DAUC Cannot delete: no such subscriber: ID=999
676
677db_subscr_delete_by_id(dbc, -10) --> -ENOENT
678DAUC Cannot delete: no such subscriber: ID=-10
679
680
681--- Delete subscribers
682
683db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
684struct hlr_subscriber {
685 .id = 1,
686 .imsi = '123456789000000',
687 .msisdn = '543210123456789',
688}
689
690db_subscr_delete_by_id(dbc, id0) --> 0
691
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200692db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
693DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200694
695db_subscr_delete_by_id(dbc, id0) --> -ENOENT
696DAUC Cannot delete: no such subscriber: ID=1
697
698db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
699struct hlr_subscriber {
700 .id = 2,
701 .imsi = '123456789000001',
702}
703
704db_subscr_delete_by_id(dbc, id1) --> 0
705
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200706db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> -ENOENT
707DAUC Cannot read subscriber from db: IMSI='123456789000001': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200708
709db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
710struct hlr_subscriber {
711 .id = 3,
712 .imsi = '123456789000002',
713}
714
715db_subscr_delete_by_id(dbc, id2) --> 0
716
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200717db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> -ENOENT
718DAUC Cannot read subscriber from db: IMSI='123456789000002': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200719
720db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0
721struct hlr_subscriber {
722 .id = 4,
723 .imsi = '123456',
724}
725
726db_subscr_delete_by_id(dbc, id_short) --> 0
727
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200728db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> -ENOENT
729DAUC Cannot read subscriber from db: IMSI='123456': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200730
731===== test_subscr_create_update_sel_delete: SUCCESS
732
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200733
734===== test_subscr_aud
735
736--- Get auth data for non-existent subscriber
737
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200738db_get_auth_data(dbc, unknown_imsi, &g_aud2g, &g_aud3g, &g_id) --> -2
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200739DAUC IMSI='999999999': No such subscriber
740
741
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100742db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
743DAUC IMSI='123456789000000': No such subscriber
744
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200745
746--- Create subscriber
747
748db_subscr_create(dbc, imsi0) --> 0
749
750db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
751struct hlr_subscriber {
752 .id = 1,
753 .imsi = '123456789000000',
754}
755
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100756db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200757DAUC IMSI='123456789000000': No 2G Auth Data
758DAUC IMSI='123456789000000': No 3G Auth Data
759
760
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100761db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
762DAUC IMSI='123456789000000': No 2G Auth Data
763DAUC IMSI='123456789000000': No 3G Auth Data
764
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200765
766--- Set auth data, 2G only
767
768db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
769
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200770db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200771DAUC IMSI='123456789000000': No 3G Auth Data
772
7732G: struct osmo_sub_auth_data {
774 .type = GSM,
775 .algo = COMP128v1,
776 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
777}
7783G: none
779
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100780db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
781DAUC IMSI='123456789000000': No 3G Auth Data
782DAUC IMSI='123456789000000': Calling to generate 3 vectors
783DAUC IMSI='123456789000000': Generated 3 vectors
784
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200785db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
786
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200787db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200788DAUC IMSI='123456789000000': No 3G Auth Data
789
7902G: struct osmo_sub_auth_data {
791 .type = GSM,
792 .algo = COMP128v1,
793 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
794}
7953G: none
796
797db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v2, "BeadedBeeAced1EbbedDefacedFacade")) --> 0
798
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200799db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200800DAUC IMSI='123456789000000': No 3G Auth Data
801
8022G: struct osmo_sub_auth_data {
803 .type = GSM,
804 .algo = COMP128v2,
805 .u.gsm.ki = 'beadedbeeaced1ebbeddefacedfacade',
806}
8073G: none
808
809db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "DeafBeddedBabeAcceededFadedDecaf")) --> 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 = COMP128v3,
817 .u.gsm.ki = 'deafbeddedbabeacceededfadeddecaf',
818}
8193G: none
820
821db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 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 = XOR,
829 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
830}
8313G: none
832
833
834--- Remove 2G auth data
835
836db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> 0
837
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100838db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200839DAUC IMSI='123456789000000': No 2G Auth Data
840DAUC IMSI='123456789000000': No 3G Auth Data
841
842
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100843db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
844DAUC IMSI='123456789000000': No 2G Auth Data
845DAUC IMSI='123456789000000': No 3G Auth Data
846
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200847db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> -ENOENT
848
849db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
850
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200851db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200852DAUC IMSI='123456789000000': No 3G Auth Data
853
8542G: struct osmo_sub_auth_data {
855 .type = GSM,
856 .algo = XOR,
857 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
858}
8593G: none
860
861db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, "f000000000000f00000000000f000000")) --> 0
862
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100863db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200864DAUC IMSI='123456789000000': No 2G Auth Data
865DAUC IMSI='123456789000000': No 3G Auth Data
866
867
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100868db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
869DAUC IMSI='123456789000000': No 2G Auth Data
870DAUC IMSI='123456789000000': No 3G Auth Data
871
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200872
873--- Set auth data, 3G only
874
875db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
876
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200877db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200878DAUC IMSI='123456789000000': No 2G Auth Data
879
8802G: none
8813G: struct osmo_sub_auth_data {
882 .type = UMTS,
883 .algo = MILENAGE,
884 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
885 .u.umts.opc_is_op = 1,
886 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
887 .u.umts.amf = '0000',
888 .u.umts.ind_bitlen = 5,
889}
890
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100891db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
892DAUC IMSI='123456789000000': No 2G Auth Data
893DAUC IMSI='123456789000000': Calling to generate 3 vectors
894DAUC IMSI='123456789000000': Generated 3 vectors
895DAUC IMSI='123456789000000': Updating SQN=0 in DB
896
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200897db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
898
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200899db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200900DAUC IMSI='123456789000000': No 2G Auth Data
901
9022G: none
9033G: struct osmo_sub_auth_data {
904 .type = UMTS,
905 .algo = MILENAGE,
906 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
907 .u.umts.opc_is_op = 1,
908 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
909 .u.umts.amf = '0000',
910 .u.umts.ind_bitlen = 5,
911}
912
913db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "Deaf0ff1ceD0d0DabbedD1ced1ceF00d", true, "F1bbed0afD0eF0bD0ffed0ddF1fe0b0e", 0)) --> 0
914
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200915db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200916DAUC IMSI='123456789000000': No 2G Auth Data
917
9182G: none
9193G: struct osmo_sub_auth_data {
920 .type = UMTS,
921 .algo = MILENAGE,
922 .u.umts.opc = 'deaf0ff1ced0d0dabbedd1ced1cef00d',
923 .u.umts.opc_is_op = 1,
924 .u.umts.k = 'f1bbed0afd0ef0bd0ffed0ddf1fe0b0e',
925 .u.umts.amf = '0000',
926}
927
928db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", OSMO_MILENAGE_IND_BITLEN_MAX)) --> 0
929
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200930db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200931DAUC IMSI='123456789000000': No 2G Auth Data
932
9332G: none
9343G: struct osmo_sub_auth_data {
935 .type = UMTS,
936 .algo = MILENAGE,
937 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
938 .u.umts.opc_is_op = 0,
939 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
940 .u.umts.amf = '0000',
941 .u.umts.ind_bitlen = 28,
942}
943
944db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
945
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200946db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200947DAUC IMSI='123456789000000': No 2G Auth Data
948
9492G: none
9503G: struct osmo_sub_auth_data {
951 .type = UMTS,
952 .algo = MILENAGE,
953 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
954 .u.umts.opc_is_op = 0,
955 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
956 .u.umts.amf = '0000',
957 .u.umts.ind_bitlen = 5,
958}
959
960
961--- Remove 3G auth data
962
963db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> 0
964
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100965db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200966DAUC IMSI='123456789000000': No 2G Auth Data
967DAUC IMSI='123456789000000': No 3G Auth Data
968
969
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100970db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
971DAUC IMSI='123456789000000': No 2G Auth Data
972DAUC IMSI='123456789000000': No 3G Auth Data
973
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200974db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> -ENOENT
975
976db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
977
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200978db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200979DAUC IMSI='123456789000000': No 2G Auth Data
980
9812G: none
9823G: struct osmo_sub_auth_data {
983 .type = UMTS,
984 .algo = MILENAGE,
985 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
986 .u.umts.opc_is_op = 0,
987 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
988 .u.umts.amf = '0000',
989 .u.umts.ind_bitlen = 5,
990}
991
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100992db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
993DAUC IMSI='123456789000000': No 2G Auth Data
994DAUC IMSI='123456789000000': Calling to generate 3 vectors
995DAUC IMSI='123456789000000': Generated 3 vectors
996DAUC IMSI='123456789000000': Updating SQN=0 in DB
997
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200998db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, "asdfasdfasd", false, "asdfasdfasdf", 99999)) --> 0
999
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001000db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001001DAUC IMSI='123456789000000': No 2G Auth Data
1002DAUC IMSI='123456789000000': No 3G Auth Data
1003
1004
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001005db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1006DAUC IMSI='123456789000000': No 2G Auth Data
1007DAUC IMSI='123456789000000': No 3G Auth Data
1008
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001009
1010--- Set auth data, 2G and 3G
1011
1012db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "CededEffacedAceFacedBadFadedBeef")) --> 0
1013
1014db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", 5)) --> 0
1015
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001016db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001017
10182G: struct osmo_sub_auth_data {
1019 .type = GSM,
1020 .algo = COMP128v3,
1021 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1022}
10233G: struct osmo_sub_auth_data {
1024 .type = UMTS,
1025 .algo = MILENAGE,
1026 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1027 .u.umts.opc_is_op = 0,
1028 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1029 .u.umts.amf = '0000',
1030 .u.umts.ind_bitlen = 5,
1031}
1032
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001033db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1034DAUC IMSI='123456789000000': Calling to generate 3 vectors
1035DAUC IMSI='123456789000000': Generated 3 vectors
1036DAUC IMSI='123456789000000': Updating SQN=0 in DB
1037
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001038
1039--- Set invalid auth data
1040
1041db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(99999, "f000000000000f00000000000f000000")) --> -EINVAL
1042DAUC Cannot update auth tokens: Unknown auth algo: 99999
1043
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001044db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001045
10462G: struct osmo_sub_auth_data {
1047 .type = GSM,
1048 .algo = COMP128v3,
1049 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1050}
10513G: struct osmo_sub_auth_data {
1052 .type = UMTS,
1053 .algo = MILENAGE,
1054 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1055 .u.umts.opc_is_op = 0,
1056 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1057 .u.umts.amf = '0000',
1058 .u.umts.ind_bitlen = 5,
1059}
1060
1061db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f000000000000f00000000000f000000f00000000")) --> -EINVAL
1062DAUC Cannot update auth tokens: Invalid KI: 'f000000000000f00000000000f000000f00000000'
1063
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001064db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001065
10662G: struct osmo_sub_auth_data {
1067 .type = GSM,
1068 .algo = COMP128v3,
1069 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1070}
10713G: struct osmo_sub_auth_data {
1072 .type = UMTS,
1073 .algo = MILENAGE,
1074 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1075 .u.umts.opc_is_op = 0,
1076 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1077 .u.umts.amf = '0000',
1078 .u.umts.ind_bitlen = 5,
1079}
1080
1081db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f00")) --> -EINVAL
1082DAUC Cannot update auth tokens: Invalid KI: 'f00'
1083
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001084db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001085
10862G: struct osmo_sub_auth_data {
1087 .type = GSM,
1088 .algo = COMP128v3,
1089 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1090}
10913G: struct osmo_sub_auth_data {
1092 .type = UMTS,
1093 .algo = MILENAGE,
1094 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1095 .u.umts.opc_is_op = 0,
1096 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1097 .u.umts.amf = '0000',
1098 .u.umts.ind_bitlen = 5,
1099}
1100
1101db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_MILENAGE, "0123456789abcdef0123456789abcdef")) --> -EINVAL
1102DAUC Cannot update auth tokens: auth algo not suited for 2G: MILENAGE
1103
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001104db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001105
11062G: struct osmo_sub_auth_data {
1107 .type = GSM,
1108 .algo = COMP128v3,
1109 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1110}
11113G: struct osmo_sub_auth_data {
1112 .type = UMTS,
1113 .algo = MILENAGE,
1114 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1115 .u.umts.opc_is_op = 0,
1116 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1117 .u.umts.amf = '0000',
1118 .u.umts.ind_bitlen = 5,
1119}
1120
1121db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "0f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1122DAUC Cannot update auth tokens: Invalid OP/OPC: '0f000000000000f00000000000f000000'
1123
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001124db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001125
11262G: struct osmo_sub_auth_data {
1127 .type = GSM,
1128 .algo = COMP128v3,
1129 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1130}
11313G: struct osmo_sub_auth_data {
1132 .type = UMTS,
1133 .algo = MILENAGE,
1134 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1135 .u.umts.opc_is_op = 0,
1136 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1137 .u.umts.amf = '0000',
1138 .u.umts.ind_bitlen = 5,
1139}
1140
1141db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "000000000000f00000000000f000000", 5)) --> -EINVAL
1142DAUC Cannot update auth tokens: Invalid K: '000000000000f00000000000f000000'
1143
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001144db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001145
11462G: struct osmo_sub_auth_data {
1147 .type = GSM,
1148 .algo = COMP128v3,
1149 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1150}
11513G: struct osmo_sub_auth_data {
1152 .type = UMTS,
1153 .algo = MILENAGE,
1154 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1155 .u.umts.opc_is_op = 0,
1156 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1157 .u.umts.amf = '0000',
1158 .u.umts.ind_bitlen = 5,
1159}
1160
1161db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", OSMO_MILENAGE_IND_BITLEN_MAX + 1)) --> -EINVAL
1162DAUC Cannot update auth tokens: Invalid ind_bitlen: 29
1163
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001164db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001165
11662G: struct osmo_sub_auth_data {
1167 .type = GSM,
1168 .algo = COMP128v3,
1169 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1170}
11713G: struct osmo_sub_auth_data {
1172 .type = UMTS,
1173 .algo = MILENAGE,
1174 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1175 .u.umts.opc_is_op = 0,
1176 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1177 .u.umts.amf = '0000',
1178 .u.umts.ind_bitlen = 5,
1179}
1180
1181db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "X000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1182DAUC Cannot update auth tokens: Invalid OP/OPC: 'X000000000000f00000000000f000000'
1183
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001184db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001185
11862G: struct osmo_sub_auth_data {
1187 .type = GSM,
1188 .algo = COMP128v3,
1189 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1190}
11913G: struct osmo_sub_auth_data {
1192 .type = UMTS,
1193 .algo = MILENAGE,
1194 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1195 .u.umts.opc_is_op = 0,
1196 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1197 .u.umts.amf = '0000',
1198 .u.umts.ind_bitlen = 5,
1199}
1200
1201db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000 f00000000000 f000000", 5)) --> -EINVAL
1202DAUC Cannot update auth tokens: Invalid K: 'f000000000000 f00000000000 f000000'
1203
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001204db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001205
12062G: struct osmo_sub_auth_data {
1207 .type = GSM,
1208 .algo = COMP128v3,
1209 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1210}
12113G: struct osmo_sub_auth_data {
1212 .type = UMTS,
1213 .algo = MILENAGE,
1214 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1215 .u.umts.opc_is_op = 0,
1216 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1217 .u.umts.amf = '0000',
1218 .u.umts.ind_bitlen = 5,
1219}
1220
1221
1222--- Delete subscriber
1223
1224db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1225struct hlr_subscriber {
1226 .id = 1,
1227 .imsi = '123456789000000',
1228}
1229
1230db_subscr_delete_by_id(dbc, id) --> 0
1231
1232db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1233DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1234
1235
1236--- Re-add subscriber and verify auth data didn't come back
1237
1238db_subscr_create(dbc, imsi0) --> 0
1239
1240db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1241struct hlr_subscriber {
1242 .id = 1,
1243 .imsi = '123456789000000',
1244}
1245
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001246db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001247DAUC IMSI='123456789000000': No 2G Auth Data
1248DAUC IMSI='123456789000000': No 3G Auth Data
1249
1250
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001251db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1252DAUC IMSI='123456789000000': No 2G Auth Data
1253DAUC IMSI='123456789000000': No 3G Auth Data
1254
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001255db_subscr_delete_by_id(dbc, id) --> 0
1256
1257db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1258DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1259
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001260db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
1261DAUC IMSI='123456789000000': No such subscriber
1262
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001263===== test_subscr_aud: SUCCESS
1264
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001265
1266===== test_subscr_sqn
1267
1268--- Set SQN for unknown subscriber
1269
1270db_update_sqn(dbc, 99, 999) --> -ENOENT
1271DAUC Cannot update SQN for subscriber ID=99: no auc_3g entry for such subscriber
1272
1273db_subscr_get_by_id(dbc, 99, &g_subscr) --> -ENOENT
1274DAUC Cannot read subscriber from db: ID=99: No such subscriber
1275
1276db_update_sqn(dbc, 9999, 99) --> -ENOENT
1277DAUC Cannot update SQN for subscriber ID=9999: no auc_3g entry for such subscriber
1278
1279db_subscr_get_by_id(dbc, 9999, &g_subscr) --> -ENOENT
1280DAUC Cannot read subscriber from db: ID=9999: No such subscriber
1281
1282
1283--- Create subscriber
1284
1285db_subscr_create(dbc, imsi0) --> 0
1286
1287db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1288struct hlr_subscriber {
1289 .id = 1,
1290 .imsi = '123456789000000',
1291}
1292
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001293db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001294DAUC IMSI='123456789000000': No 2G Auth Data
1295DAUC IMSI='123456789000000': No 3G Auth Data
1296
1297
1298
1299--- Set SQN, but no 3G auth data present
1300
1301db_update_sqn(dbc, id, 123) --> -ENOENT
1302DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1303
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001304db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001305DAUC IMSI='123456789000000': No 2G Auth Data
1306DAUC IMSI='123456789000000': No 3G Auth Data
1307
1308
1309db_update_sqn(dbc, id, 543) --> -ENOENT
1310DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1311
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001312db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001313DAUC IMSI='123456789000000': No 2G Auth Data
1314DAUC IMSI='123456789000000': No 3G Auth Data
1315
1316
1317
1318--- Set auth 3G data
1319
1320db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
1321
1322db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1323DAUC IMSI='123456789000000': No 2G Auth Data
1324
13252G: none
13263G: struct osmo_sub_auth_data {
1327 .type = UMTS,
1328 .algo = MILENAGE,
1329 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1330 .u.umts.opc_is_op = 1,
1331 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1332 .u.umts.amf = '0000',
1333 .u.umts.ind_bitlen = 5,
1334}
1335
1336
1337--- Set SQN
1338
1339db_update_sqn(dbc, id, 23315) --> 0
1340
1341db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1342DAUC IMSI='123456789000000': No 2G Auth Data
1343
13442G: none
13453G: struct osmo_sub_auth_data {
1346 .type = UMTS,
1347 .algo = MILENAGE,
1348 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1349 .u.umts.opc_is_op = 1,
1350 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1351 .u.umts.amf = '0000',
1352 .u.umts.sqn = 23315,
1353 .u.umts.sqn = 0x5b13,
1354 .u.umts.ind_bitlen = 5,
1355}
1356
1357db_update_sqn(dbc, id, 23315) --> 0
1358
1359db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1360DAUC IMSI='123456789000000': No 2G Auth Data
1361
13622G: none
13633G: struct osmo_sub_auth_data {
1364 .type = UMTS,
1365 .algo = MILENAGE,
1366 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1367 .u.umts.opc_is_op = 1,
1368 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1369 .u.umts.amf = '0000',
1370 .u.umts.sqn = 23315,
1371 .u.umts.sqn = 0x5b13,
1372 .u.umts.ind_bitlen = 5,
1373}
1374
1375db_update_sqn(dbc, id, 423) --> 0
1376
1377db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1378DAUC IMSI='123456789000000': No 2G Auth Data
1379
13802G: none
13813G: struct osmo_sub_auth_data {
1382 .type = UMTS,
1383 .algo = MILENAGE,
1384 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1385 .u.umts.opc_is_op = 1,
1386 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1387 .u.umts.amf = '0000',
1388 .u.umts.sqn = 423,
1389 .u.umts.sqn = 0x1a7,
1390 .u.umts.ind_bitlen = 5,
1391}
1392
1393
1394--- Set SQN: thru uint64_t range, using the int64_t SQLite bind
1395
1396db_update_sqn(dbc, id, 0) --> 0
1397
1398db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1399DAUC IMSI='123456789000000': No 2G Auth Data
1400
14012G: none
14023G: struct osmo_sub_auth_data {
1403 .type = UMTS,
1404 .algo = MILENAGE,
1405 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1406 .u.umts.opc_is_op = 1,
1407 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1408 .u.umts.amf = '0000',
1409 .u.umts.ind_bitlen = 5,
1410}
1411
1412db_update_sqn(dbc, id, INT64_MAX) --> 0
1413
1414db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1415DAUC IMSI='123456789000000': No 2G Auth Data
1416
14172G: none
14183G: struct osmo_sub_auth_data {
1419 .type = UMTS,
1420 .algo = MILENAGE,
1421 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1422 .u.umts.opc_is_op = 1,
1423 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1424 .u.umts.amf = '0000',
1425 .u.umts.sqn = 9223372036854775807,
1426 .u.umts.sqn = 0x7fffffffffffffff,
1427 .u.umts.ind_bitlen = 5,
1428}
1429
1430db_update_sqn(dbc, id, INT64_MIN) --> 0
1431
1432db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1433DAUC IMSI='123456789000000': No 2G Auth Data
1434
14352G: none
14363G: struct osmo_sub_auth_data {
1437 .type = UMTS,
1438 .algo = MILENAGE,
1439 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1440 .u.umts.opc_is_op = 1,
1441 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1442 .u.umts.amf = '0000',
1443 .u.umts.sqn = 9223372036854775808,
1444 .u.umts.sqn = 0x8000000000000000,
1445 .u.umts.ind_bitlen = 5,
1446}
1447
1448db_update_sqn(dbc, id, UINT64_MAX) --> 0
1449
1450db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1451DAUC IMSI='123456789000000': No 2G Auth Data
1452
14532G: none
14543G: struct osmo_sub_auth_data {
1455 .type = UMTS,
1456 .algo = MILENAGE,
1457 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1458 .u.umts.opc_is_op = 1,
1459 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1460 .u.umts.amf = '0000',
1461 .u.umts.sqn = 18446744073709551615,
1462 .u.umts.sqn = 0xffffffffffffffff,
1463 .u.umts.ind_bitlen = 5,
1464}
1465
1466
1467--- Delete subscriber
1468
1469db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1470struct hlr_subscriber {
1471 .id = 1,
1472 .imsi = '123456789000000',
1473}
1474
1475db_subscr_delete_by_id(dbc, id) --> 0
1476
1477db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1478DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1479
1480===== test_subscr_sqn: SUCCESS
1481