blob: 979562e707d083e3c5ad586b1dfac274ba5994c1 [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
Oliver Smithcd2af5e2019-03-06 13:17:39 +01006db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr98509462017-10-09 17:28:53 +02007
8db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
9struct hlr_subscriber {
10 .id = 1,
11 .imsi = '123456789000000',
12}
13
Oliver Smithcd2af5e2019-03-06 13:17:39 +010014db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr98509462017-10-09 17:28:53 +020015
16db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
17struct hlr_subscriber {
18 .id = 2,
19 .imsi = '123456789000001',
20}
21
Oliver Smithcd2af5e2019-03-06 13:17:39 +010022db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr98509462017-10-09 17:28:53 +020023
24db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
25struct hlr_subscriber {
26 .id = 3,
27 .imsi = '123456789000002',
28}
29
Oliver Smithcd2af5e2019-03-06 13:17:39 +010030db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010039db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020040DAUC IMSI='123456789000001': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
41
Oliver Smithcd2af5e2019-03-06 13:17:39 +010042db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010051db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EIO
Neels Hofmeyr98509462017-10-09 17:28:53 +020052DAUC IMSI='123456789000002': Cannot create subscriber: SQL error: (2067) UNIQUE constraint failed: subscriber.imsi
53
Oliver Smithcd2af5e2019-03-06 13:17:39 +010054db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010063db_subscr_create(dbc, "123456789 000003", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL
Neels Hofmeyr98509462017-10-09 17:28:53 +020064DAUC 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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010069db_subscr_create(dbc, "123456789000002123456", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL
Neels Hofmeyr98509462017-10-09 17:28:53 +020070DAUC 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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010075db_subscr_create(dbc, "foobar123", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL
Neels Hofmeyr98509462017-10-09 17:28:53 +020076DAUC 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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010081db_subscr_create(dbc, "123", DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> -EINVAL
Neels Hofmeyr98509462017-10-09 17:28:53 +020082DAUC 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
Oliver Smithcd2af5e2019-03-06 13:17:39 +010087db_subscr_create(dbc, short_imsi, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr98509462017-10-09 17:28:53 +020088
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
Oliver Smithcd2af5e2019-03-06 13:17:39 +0100755
756--- Create and delete subscribers with non-default nam_cs and nam_ps
757
758db_subscr_create(dbc, imsi0, 0x00) --> 0
759
760db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
761struct hlr_subscriber {
762 .id = 1,
763 .imsi = '123456789000000',
764 .nam_cs = false,
765 .nam_ps = false,
766}
767
768db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS) --> 0
769
770db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
771struct hlr_subscriber {
772 .id = 2,
773 .imsi = '123456789000001',
774 .nam_ps = false,
775}
776
777db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_PS) --> 0
778
779db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
780struct hlr_subscriber {
781 .id = 3,
782 .imsi = '123456789000002',
783 .nam_cs = false,
784}
785
786db_subscr_delete_by_id(dbc, id0) --> 0
787
788db_subscr_delete_by_id(dbc, id1) --> 0
789
790db_subscr_delete_by_id(dbc, id2) --> 0
791
Neels Hofmeyr98509462017-10-09 17:28:53 +0200792===== test_subscr_create_update_sel_delete: SUCCESS
793
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200794
795===== test_subscr_aud
796
797--- Get auth data for non-existent subscriber
798
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200799db_get_auth_data(dbc, unknown_imsi, &g_aud2g, &g_aud3g, &g_id) --> -2
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200800DAUC IMSI='999999999': No such subscriber
801
802
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100803db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
804DAUC IMSI='123456789000000': No such subscriber
805
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200806
807--- Create subscriber
808
Oliver Smithcd2af5e2019-03-06 13:17:39 +0100809db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200810
811db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
812struct hlr_subscriber {
813 .id = 1,
814 .imsi = '123456789000000',
815}
816
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100817db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200818DAUC IMSI='123456789000000': No 2G Auth Data
819DAUC IMSI='123456789000000': No 3G Auth Data
820
821
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100822db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
823DAUC IMSI='123456789000000': No 2G Auth Data
824DAUC IMSI='123456789000000': No 3G Auth Data
825
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200826
827--- Set auth data, 2G only
828
829db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
830
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200831db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200832DAUC IMSI='123456789000000': No 3G Auth Data
833
8342G: struct osmo_sub_auth_data {
835 .type = GSM,
836 .algo = COMP128v1,
837 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
838}
8393G: none
840
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100841db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
842DAUC IMSI='123456789000000': No 3G Auth Data
843DAUC IMSI='123456789000000': Calling to generate 3 vectors
844DAUC IMSI='123456789000000': Generated 3 vectors
845
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200846db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
847
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200848db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200849DAUC IMSI='123456789000000': No 3G Auth Data
850
8512G: struct osmo_sub_auth_data {
852 .type = GSM,
853 .algo = COMP128v1,
854 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
855}
8563G: none
857
858db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v2, "BeadedBeeAced1EbbedDefacedFacade")) --> 0
859
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200860db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200861DAUC IMSI='123456789000000': No 3G Auth Data
862
8632G: struct osmo_sub_auth_data {
864 .type = GSM,
865 .algo = COMP128v2,
866 .u.gsm.ki = 'beadedbeeaced1ebbeddefacedfacade',
867}
8683G: none
869
870db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "DeafBeddedBabeAcceededFadedDecaf")) --> 0
871
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200872db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200873DAUC IMSI='123456789000000': No 3G Auth Data
874
8752G: struct osmo_sub_auth_data {
876 .type = GSM,
877 .algo = COMP128v3,
878 .u.gsm.ki = 'deafbeddedbabeacceededfadeddecaf',
879}
8803G: none
881
882db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
883
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200884db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200885DAUC IMSI='123456789000000': No 3G Auth Data
886
8872G: struct osmo_sub_auth_data {
888 .type = GSM,
889 .algo = XOR,
890 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
891}
8923G: none
893
894
895--- Remove 2G auth data
896
897db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> 0
898
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100899db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200900DAUC IMSI='123456789000000': No 2G Auth Data
901DAUC IMSI='123456789000000': No 3G Auth Data
902
903
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100904db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
905DAUC IMSI='123456789000000': No 2G Auth Data
906DAUC IMSI='123456789000000': No 3G Auth Data
907
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200908db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> -ENOENT
909
910db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
911
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200912db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200913DAUC IMSI='123456789000000': No 3G Auth Data
914
9152G: struct osmo_sub_auth_data {
916 .type = GSM,
917 .algo = XOR,
918 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
919}
9203G: none
921
922db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, "f000000000000f00000000000f000000")) --> 0
923
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100924db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200925DAUC IMSI='123456789000000': No 2G Auth Data
926DAUC IMSI='123456789000000': No 3G Auth Data
927
928
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100929db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
930DAUC IMSI='123456789000000': No 2G Auth Data
931DAUC IMSI='123456789000000': No 3G Auth Data
932
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200933
934--- Set auth data, 3G only
935
936db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
937
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200938db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200939DAUC IMSI='123456789000000': No 2G Auth Data
940
9412G: none
9423G: struct osmo_sub_auth_data {
943 .type = UMTS,
944 .algo = MILENAGE,
945 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
946 .u.umts.opc_is_op = 1,
947 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
948 .u.umts.amf = '0000',
949 .u.umts.ind_bitlen = 5,
950}
951
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100952db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
953DAUC IMSI='123456789000000': No 2G Auth Data
954DAUC IMSI='123456789000000': Calling to generate 3 vectors
955DAUC IMSI='123456789000000': Generated 3 vectors
956DAUC IMSI='123456789000000': Updating SQN=0 in DB
957
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200958db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
959
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200960db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200961DAUC IMSI='123456789000000': No 2G Auth Data
962
9632G: none
9643G: struct osmo_sub_auth_data {
965 .type = UMTS,
966 .algo = MILENAGE,
967 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
968 .u.umts.opc_is_op = 1,
969 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
970 .u.umts.amf = '0000',
971 .u.umts.ind_bitlen = 5,
972}
973
974db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "Deaf0ff1ceD0d0DabbedD1ced1ceF00d", true, "F1bbed0afD0eF0bD0ffed0ddF1fe0b0e", 0)) --> 0
975
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200976db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200977DAUC IMSI='123456789000000': No 2G Auth Data
978
9792G: none
9803G: struct osmo_sub_auth_data {
981 .type = UMTS,
982 .algo = MILENAGE,
983 .u.umts.opc = 'deaf0ff1ced0d0dabbedd1ced1cef00d',
984 .u.umts.opc_is_op = 1,
985 .u.umts.k = 'f1bbed0afd0ef0bd0ffed0ddf1fe0b0e',
986 .u.umts.amf = '0000',
987}
988
989db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", OSMO_MILENAGE_IND_BITLEN_MAX)) --> 0
990
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200991db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200992DAUC IMSI='123456789000000': No 2G Auth Data
993
9942G: none
9953G: struct osmo_sub_auth_data {
996 .type = UMTS,
997 .algo = MILENAGE,
998 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
999 .u.umts.opc_is_op = 0,
1000 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1001 .u.umts.amf = '0000',
1002 .u.umts.ind_bitlen = 28,
1003}
1004
1005db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
1006
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001007db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001008DAUC IMSI='123456789000000': No 2G Auth Data
1009
10102G: none
10113G: struct osmo_sub_auth_data {
1012 .type = UMTS,
1013 .algo = MILENAGE,
1014 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
1015 .u.umts.opc_is_op = 0,
1016 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
1017 .u.umts.amf = '0000',
1018 .u.umts.ind_bitlen = 5,
1019}
1020
1021
1022--- Remove 3G auth data
1023
1024db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> 0
1025
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001026db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001027DAUC IMSI='123456789000000': No 2G Auth Data
1028DAUC IMSI='123456789000000': No 3G Auth Data
1029
1030
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001031db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1032DAUC IMSI='123456789000000': No 2G Auth Data
1033DAUC IMSI='123456789000000': No 3G Auth Data
1034
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001035db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> -ENOENT
1036
1037db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
1038
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001039db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001040DAUC IMSI='123456789000000': No 2G Auth Data
1041
10422G: none
10433G: struct osmo_sub_auth_data {
1044 .type = UMTS,
1045 .algo = MILENAGE,
1046 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
1047 .u.umts.opc_is_op = 0,
1048 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
1049 .u.umts.amf = '0000',
1050 .u.umts.ind_bitlen = 5,
1051}
1052
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001053db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1054DAUC IMSI='123456789000000': No 2G Auth Data
1055DAUC IMSI='123456789000000': Calling to generate 3 vectors
1056DAUC IMSI='123456789000000': Generated 3 vectors
1057DAUC IMSI='123456789000000': Updating SQN=0 in DB
1058
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001059db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, "asdfasdfasd", false, "asdfasdfasdf", 99999)) --> 0
1060
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001061db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001062DAUC IMSI='123456789000000': No 2G Auth Data
1063DAUC IMSI='123456789000000': No 3G Auth Data
1064
1065
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001066db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1067DAUC IMSI='123456789000000': No 2G Auth Data
1068DAUC IMSI='123456789000000': No 3G Auth Data
1069
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001070
1071--- Set auth data, 2G and 3G
1072
1073db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "CededEffacedAceFacedBadFadedBeef")) --> 0
1074
1075db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", 5)) --> 0
1076
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001077db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001078
10792G: struct osmo_sub_auth_data {
1080 .type = GSM,
1081 .algo = COMP128v3,
1082 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1083}
10843G: struct osmo_sub_auth_data {
1085 .type = UMTS,
1086 .algo = MILENAGE,
1087 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1088 .u.umts.opc_is_op = 0,
1089 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1090 .u.umts.amf = '0000',
1091 .u.umts.ind_bitlen = 5,
1092}
1093
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001094db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1095DAUC IMSI='123456789000000': Calling to generate 3 vectors
1096DAUC IMSI='123456789000000': Generated 3 vectors
1097DAUC IMSI='123456789000000': Updating SQN=0 in DB
1098
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001099
1100--- Set invalid auth data
1101
1102db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(99999, "f000000000000f00000000000f000000")) --> -EINVAL
1103DAUC Cannot update auth tokens: Unknown auth algo: 99999
1104
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001105db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001106
11072G: struct osmo_sub_auth_data {
1108 .type = GSM,
1109 .algo = COMP128v3,
1110 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1111}
11123G: struct osmo_sub_auth_data {
1113 .type = UMTS,
1114 .algo = MILENAGE,
1115 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1116 .u.umts.opc_is_op = 0,
1117 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1118 .u.umts.amf = '0000',
1119 .u.umts.ind_bitlen = 5,
1120}
1121
1122db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f000000000000f00000000000f000000f00000000")) --> -EINVAL
1123DAUC Cannot update auth tokens: Invalid KI: 'f000000000000f00000000000f000000f00000000'
1124
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001125db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001126
11272G: struct osmo_sub_auth_data {
1128 .type = GSM,
1129 .algo = COMP128v3,
1130 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1131}
11323G: struct osmo_sub_auth_data {
1133 .type = UMTS,
1134 .algo = MILENAGE,
1135 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1136 .u.umts.opc_is_op = 0,
1137 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1138 .u.umts.amf = '0000',
1139 .u.umts.ind_bitlen = 5,
1140}
1141
1142db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f00")) --> -EINVAL
1143DAUC Cannot update auth tokens: Invalid KI: 'f00'
1144
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001145db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001146
11472G: struct osmo_sub_auth_data {
1148 .type = GSM,
1149 .algo = COMP128v3,
1150 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1151}
11523G: struct osmo_sub_auth_data {
1153 .type = UMTS,
1154 .algo = MILENAGE,
1155 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1156 .u.umts.opc_is_op = 0,
1157 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1158 .u.umts.amf = '0000',
1159 .u.umts.ind_bitlen = 5,
1160}
1161
1162db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_MILENAGE, "0123456789abcdef0123456789abcdef")) --> -EINVAL
1163DAUC Cannot update auth tokens: auth algo not suited for 2G: MILENAGE
1164
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001165db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001166
11672G: struct osmo_sub_auth_data {
1168 .type = GSM,
1169 .algo = COMP128v3,
1170 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1171}
11723G: struct osmo_sub_auth_data {
1173 .type = UMTS,
1174 .algo = MILENAGE,
1175 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1176 .u.umts.opc_is_op = 0,
1177 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1178 .u.umts.amf = '0000',
1179 .u.umts.ind_bitlen = 5,
1180}
1181
1182db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "0f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1183DAUC Cannot update auth tokens: Invalid OP/OPC: '0f000000000000f00000000000f000000'
1184
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001185db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001186
11872G: struct osmo_sub_auth_data {
1188 .type = GSM,
1189 .algo = COMP128v3,
1190 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1191}
11923G: struct osmo_sub_auth_data {
1193 .type = UMTS,
1194 .algo = MILENAGE,
1195 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1196 .u.umts.opc_is_op = 0,
1197 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1198 .u.umts.amf = '0000',
1199 .u.umts.ind_bitlen = 5,
1200}
1201
1202db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "000000000000f00000000000f000000", 5)) --> -EINVAL
1203DAUC Cannot update auth tokens: Invalid K: '000000000000f00000000000f000000'
1204
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001205db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001206
12072G: struct osmo_sub_auth_data {
1208 .type = GSM,
1209 .algo = COMP128v3,
1210 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1211}
12123G: struct osmo_sub_auth_data {
1213 .type = UMTS,
1214 .algo = MILENAGE,
1215 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1216 .u.umts.opc_is_op = 0,
1217 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1218 .u.umts.amf = '0000',
1219 .u.umts.ind_bitlen = 5,
1220}
1221
1222db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", OSMO_MILENAGE_IND_BITLEN_MAX + 1)) --> -EINVAL
1223DAUC Cannot update auth tokens: Invalid ind_bitlen: 29
1224
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001225db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001226
12272G: struct osmo_sub_auth_data {
1228 .type = GSM,
1229 .algo = COMP128v3,
1230 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1231}
12323G: struct osmo_sub_auth_data {
1233 .type = UMTS,
1234 .algo = MILENAGE,
1235 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1236 .u.umts.opc_is_op = 0,
1237 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1238 .u.umts.amf = '0000',
1239 .u.umts.ind_bitlen = 5,
1240}
1241
1242db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "X000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1243DAUC Cannot update auth tokens: Invalid OP/OPC: 'X000000000000f00000000000f000000'
1244
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001245db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001246
12472G: struct osmo_sub_auth_data {
1248 .type = GSM,
1249 .algo = COMP128v3,
1250 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1251}
12523G: struct osmo_sub_auth_data {
1253 .type = UMTS,
1254 .algo = MILENAGE,
1255 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1256 .u.umts.opc_is_op = 0,
1257 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1258 .u.umts.amf = '0000',
1259 .u.umts.ind_bitlen = 5,
1260}
1261
1262db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000 f00000000000 f000000", 5)) --> -EINVAL
1263DAUC Cannot update auth tokens: Invalid K: 'f000000000000 f00000000000 f000000'
1264
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001265db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001266
12672G: struct osmo_sub_auth_data {
1268 .type = GSM,
1269 .algo = COMP128v3,
1270 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1271}
12723G: struct osmo_sub_auth_data {
1273 .type = UMTS,
1274 .algo = MILENAGE,
1275 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1276 .u.umts.opc_is_op = 0,
1277 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1278 .u.umts.amf = '0000',
1279 .u.umts.ind_bitlen = 5,
1280}
1281
1282
1283--- Delete subscriber
1284
1285db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1286struct hlr_subscriber {
1287 .id = 1,
1288 .imsi = '123456789000000',
1289}
1290
1291db_subscr_delete_by_id(dbc, id) --> 0
1292
1293db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1294DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1295
1296
1297--- Re-add subscriber and verify auth data didn't come back
1298
Oliver Smithcd2af5e2019-03-06 13:17:39 +01001299db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001300
1301db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1302struct hlr_subscriber {
1303 .id = 1,
1304 .imsi = '123456789000000',
1305}
1306
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001307db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001308DAUC IMSI='123456789000000': No 2G Auth Data
1309DAUC IMSI='123456789000000': No 3G Auth Data
1310
1311
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001312db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1313DAUC IMSI='123456789000000': No 2G Auth Data
1314DAUC IMSI='123456789000000': No 3G Auth Data
1315
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001316db_subscr_delete_by_id(dbc, id) --> 0
1317
1318db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1319DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1320
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001321db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
1322DAUC IMSI='123456789000000': No such subscriber
1323
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001324===== test_subscr_aud: SUCCESS
1325
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001326
1327===== test_subscr_sqn
1328
1329--- Set SQN for unknown subscriber
1330
1331db_update_sqn(dbc, 99, 999) --> -ENOENT
1332DAUC Cannot update SQN for subscriber ID=99: no auc_3g entry for such subscriber
1333
1334db_subscr_get_by_id(dbc, 99, &g_subscr) --> -ENOENT
1335DAUC Cannot read subscriber from db: ID=99: No such subscriber
1336
1337db_update_sqn(dbc, 9999, 99) --> -ENOENT
1338DAUC Cannot update SQN for subscriber ID=9999: no auc_3g entry for such subscriber
1339
1340db_subscr_get_by_id(dbc, 9999, &g_subscr) --> -ENOENT
1341DAUC Cannot read subscriber from db: ID=9999: No such subscriber
1342
1343
1344--- Create subscriber
1345
Oliver Smithcd2af5e2019-03-06 13:17:39 +01001346db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001347
1348db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1349struct hlr_subscriber {
1350 .id = 1,
1351 .imsi = '123456789000000',
1352}
1353
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001354db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001355DAUC IMSI='123456789000000': No 2G Auth Data
1356DAUC IMSI='123456789000000': No 3G Auth Data
1357
1358
1359
1360--- Set SQN, but no 3G auth data present
1361
1362db_update_sqn(dbc, id, 123) --> -ENOENT
1363DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1364
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001365db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001366DAUC IMSI='123456789000000': No 2G Auth Data
1367DAUC IMSI='123456789000000': No 3G Auth Data
1368
1369
1370db_update_sqn(dbc, id, 543) --> -ENOENT
1371DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1372
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001373db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001374DAUC IMSI='123456789000000': No 2G Auth Data
1375DAUC IMSI='123456789000000': No 3G Auth Data
1376
1377
1378
1379--- Set auth 3G data
1380
1381db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 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.ind_bitlen = 5,
1395}
1396
1397
1398--- Set SQN
1399
1400db_update_sqn(dbc, id, 23315) --> 0
1401
1402db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1403DAUC IMSI='123456789000000': No 2G Auth Data
1404
14052G: none
14063G: struct osmo_sub_auth_data {
1407 .type = UMTS,
1408 .algo = MILENAGE,
1409 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1410 .u.umts.opc_is_op = 1,
1411 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1412 .u.umts.amf = '0000',
1413 .u.umts.sqn = 23315,
1414 .u.umts.sqn = 0x5b13,
1415 .u.umts.ind_bitlen = 5,
1416}
1417
1418db_update_sqn(dbc, id, 23315) --> 0
1419
1420db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1421DAUC IMSI='123456789000000': No 2G Auth Data
1422
14232G: none
14243G: struct osmo_sub_auth_data {
1425 .type = UMTS,
1426 .algo = MILENAGE,
1427 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1428 .u.umts.opc_is_op = 1,
1429 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1430 .u.umts.amf = '0000',
1431 .u.umts.sqn = 23315,
1432 .u.umts.sqn = 0x5b13,
1433 .u.umts.ind_bitlen = 5,
1434}
1435
1436db_update_sqn(dbc, id, 423) --> 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 = 423,
1450 .u.umts.sqn = 0x1a7,
1451 .u.umts.ind_bitlen = 5,
1452}
1453
1454
1455--- Set SQN: thru uint64_t range, using the int64_t SQLite bind
1456
1457db_update_sqn(dbc, id, 0) --> 0
1458
1459db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1460DAUC IMSI='123456789000000': No 2G Auth Data
1461
14622G: none
14633G: struct osmo_sub_auth_data {
1464 .type = UMTS,
1465 .algo = MILENAGE,
1466 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1467 .u.umts.opc_is_op = 1,
1468 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1469 .u.umts.amf = '0000',
1470 .u.umts.ind_bitlen = 5,
1471}
1472
1473db_update_sqn(dbc, id, INT64_MAX) --> 0
1474
1475db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1476DAUC IMSI='123456789000000': No 2G Auth Data
1477
14782G: none
14793G: struct osmo_sub_auth_data {
1480 .type = UMTS,
1481 .algo = MILENAGE,
1482 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1483 .u.umts.opc_is_op = 1,
1484 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1485 .u.umts.amf = '0000',
1486 .u.umts.sqn = 9223372036854775807,
1487 .u.umts.sqn = 0x7fffffffffffffff,
1488 .u.umts.ind_bitlen = 5,
1489}
1490
1491db_update_sqn(dbc, id, INT64_MIN) --> 0
1492
1493db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1494DAUC IMSI='123456789000000': No 2G Auth Data
1495
14962G: none
14973G: struct osmo_sub_auth_data {
1498 .type = UMTS,
1499 .algo = MILENAGE,
1500 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1501 .u.umts.opc_is_op = 1,
1502 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1503 .u.umts.amf = '0000',
1504 .u.umts.sqn = 9223372036854775808,
1505 .u.umts.sqn = 0x8000000000000000,
1506 .u.umts.ind_bitlen = 5,
1507}
1508
1509db_update_sqn(dbc, id, UINT64_MAX) --> 0
1510
1511db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1512DAUC IMSI='123456789000000': No 2G Auth Data
1513
15142G: none
15153G: struct osmo_sub_auth_data {
1516 .type = UMTS,
1517 .algo = MILENAGE,
1518 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1519 .u.umts.opc_is_op = 1,
1520 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1521 .u.umts.amf = '0000',
1522 .u.umts.sqn = 18446744073709551615,
1523 .u.umts.sqn = 0xffffffffffffffff,
1524 .u.umts.ind_bitlen = 5,
1525}
1526
1527
1528--- Delete subscriber
1529
1530db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1531struct hlr_subscriber {
1532 .id = 1,
1533 .imsi = '123456789000000',
1534}
1535
1536db_subscr_delete_by_id(dbc, id) --> 0
1537
1538db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1539DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1540
1541===== test_subscr_sqn: SUCCESS
1542