blob: 4dc77e877a3c026b09f0918517ec0170aea95257 [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
Oliver Smith6b73fd92019-03-06 13:49:05 +010096--- Check if subscriber exists (by IMSI)
97
98db_subscr_exists_by_imsi(dbc, imsi0) --> 0
99
100db_subscr_exists_by_imsi(dbc, unknown_imsi) --> -ENOENT
101
102
Neels Hofmeyr98509462017-10-09 17:28:53 +0200103--- Set valid / invalid MSISDN
104
105db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
106struct hlr_subscriber {
107 .id = 1,
108 .imsi = '123456789000000',
109}
110
111db_subscr_update_msisdn_by_imsi(dbc, imsi0, "54321") --> 0
112
113db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
114struct hlr_subscriber {
115 .id = 1,
116 .imsi = '123456789000000',
117 .msisdn = '54321',
118}
119
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200120db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> 0
121struct hlr_subscriber {
122 .id = 1,
123 .imsi = '123456789000000',
124 .msisdn = '54321',
125}
126
Neels Hofmeyr98509462017-10-09 17:28:53 +0200127db_subscr_update_msisdn_by_imsi(dbc, imsi0, "54321012345678912345678") --> -EINVAL
128DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '54321012345678912345678'
129
130db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
131struct hlr_subscriber {
132 .id = 1,
133 .imsi = '123456789000000',
134 .msisdn = '54321',
135}
136
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200137db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> 0
138struct hlr_subscriber {
139 .id = 1,
140 .imsi = '123456789000000',
141 .msisdn = '54321',
142}
143
144db_subscr_get_by_msisdn(dbc, "54321012345678912345678", &g_subscr) --> -ENOENT
145DAUC Cannot read subscriber from db: MSISDN='54321012345678912345678': No such subscriber
146
Neels Hofmeyr98509462017-10-09 17:28:53 +0200147db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543 21") --> -EINVAL
148DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '543 21'
149
150db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
151struct hlr_subscriber {
152 .id = 1,
153 .imsi = '123456789000000',
154 .msisdn = '54321',
155}
156
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200157db_subscr_get_by_msisdn(dbc, "543 21", &g_subscr) --> -ENOENT
158DAUC Cannot read subscriber from db: MSISDN='543 21': No such subscriber
159
Neels Hofmeyr98509462017-10-09 17:28:53 +0200160db_subscr_update_msisdn_by_imsi(dbc, imsi0, "foobar123") --> -EINVAL
161DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: 'foobar123'
162
163db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
164struct hlr_subscriber {
165 .id = 1,
166 .imsi = '123456789000000',
167 .msisdn = '54321',
168}
169
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200170db_subscr_get_by_msisdn(dbc, "foobar123", &g_subscr) --> -ENOENT
171DAUC Cannot read subscriber from db: MSISDN='foobar123': No such subscriber
172
Neels Hofmeyr98509462017-10-09 17:28:53 +0200173db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5") --> 0
174
175db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
176struct hlr_subscriber {
177 .id = 1,
178 .imsi = '123456789000000',
179 .msisdn = '5',
180}
181
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200182db_subscr_get_by_msisdn(dbc, "5", &g_subscr) --> 0
183struct hlr_subscriber {
184 .id = 1,
185 .imsi = '123456789000000',
186 .msisdn = '5',
187}
188
189db_subscr_get_by_msisdn(dbc, "54321", &g_subscr) --> -ENOENT
190DAUC Cannot read subscriber from db: MSISDN='54321': No such subscriber
191
Neels Hofmeyr98509462017-10-09 17:28:53 +0200192db_subscr_update_msisdn_by_imsi(dbc, imsi0, "543210123456789") --> 0
193
194db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
195struct hlr_subscriber {
196 .id = 1,
197 .imsi = '123456789000000',
198 .msisdn = '543210123456789',
199}
200
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200201db_subscr_get_by_msisdn(dbc, "543210123456789", &g_subscr) --> 0
202struct hlr_subscriber {
203 .id = 1,
204 .imsi = '123456789000000',
205 .msisdn = '543210123456789',
206}
207
Neels Hofmeyr98509462017-10-09 17:28:53 +0200208db_subscr_update_msisdn_by_imsi(dbc, imsi0, "5432101234567891") --> -EINVAL
209DAUC IMSI='123456789000000': Cannot update subscriber: invalid MSISDN: '5432101234567891'
210
211db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
212struct hlr_subscriber {
213 .id = 1,
214 .imsi = '123456789000000',
215 .msisdn = '543210123456789',
216}
217
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200218db_subscr_get_by_msisdn(dbc, "5432101234567891", &g_subscr) --> -ENOENT
219DAUC Cannot read subscriber from db: MSISDN='5432101234567891': No such subscriber
220
Neels Hofmeyr98509462017-10-09 17:28:53 +0200221
Vadim Yanitskiyc13599d2019-03-30 17:03:42 +0700222--- Check if subscriber exists (by MSISDN)
223
224db_subscr_exists_by_msisdn(dbc, "543210123456789") --> 0
225
226db_subscr_exists_by_msisdn(dbc, "5432101234567891") --> -ENOENT
227
228
Neels Hofmeyr98509462017-10-09 17:28:53 +0200229--- Set MSISDN on non-existent / invalid IMSI
230
231db_subscr_update_msisdn_by_imsi(dbc, unknown_imsi, "99") --> -ENOENT
232DAUC Cannot update MSISDN: no such subscriber: IMSI='999999999'
233
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200234db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT
235DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber
236
Neels Hofmeyr98509462017-10-09 17:28:53 +0200237db_subscr_update_msisdn_by_imsi(dbc, "foobar", "99") --> -ENOENT
238DAUC Cannot update MSISDN: no such subscriber: IMSI='foobar'
239
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200240db_subscr_get_by_msisdn(dbc, "99", &g_subscr) --> -ENOENT
241DAUC Cannot read subscriber from db: MSISDN='99': No such subscriber
242
Neels Hofmeyr98509462017-10-09 17:28:53 +0200243
Oliver Smith81db3892019-01-09 12:03:51 +0100244--- Set valid / invalid IMEI
245
246db_subscr_update_imei_by_imsi(dbc, imsi0, "12345678901234") --> 0
247
248db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> 0
249struct hlr_subscriber {
250 .id = 1,
251 .imsi = '123456789000000',
252 .msisdn = '543210123456789',
253 .imei = '12345678901234',
254}
255
256db_subscr_update_imei_by_imsi(dbc, imsi0, "123456789012345") --> -EINVAL
257DAUC Cannot update subscriber IMSI='123456789000000': invalid IMEI: '123456789012345'
258
259db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> 0
260struct hlr_subscriber {
261 .id = 1,
262 .imsi = '123456789000000',
263 .msisdn = '543210123456789',
264 .imei = '12345678901234',
265}
266
267db_subscr_get_by_imei(dbc, "123456789012345", &g_subscr) --> -ENOENT
268DAUC Cannot read subscriber from db: IMEI=123456789012345: No such subscriber
269
270
271--- Set the same IMEI again
272
273db_subscr_update_imei_by_imsi(dbc, imsi0, "12345678901234") --> 0
274
275db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> 0
276struct hlr_subscriber {
277 .id = 1,
278 .imsi = '123456789000000',
279 .msisdn = '543210123456789',
280 .imei = '12345678901234',
281}
282
283
284--- Remove IMEI
285
286db_subscr_update_imei_by_imsi(dbc, imsi0, NULL) --> 0
287
288db_subscr_get_by_imei(dbc, "12345678901234", &g_subscr) --> -ENOENT
289DAUC Cannot read subscriber from db: IMEI=12345678901234: No such subscriber
290
291
Neels Hofmeyre8ccd502017-10-06 04:10:06 +0200292--- Set / unset nam_cs and nam_ps
293
294db_subscr_nam(dbc, imsi0, false, true) --> 0
295
296db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
297struct hlr_subscriber {
298 .id = 1,
299 .imsi = '123456789000000',
300 .msisdn = '543210123456789',
301 .nam_ps = false,
302}
303
304db_subscr_nam(dbc, imsi0, false, false) --> 0
305
306db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
307struct hlr_subscriber {
308 .id = 1,
309 .imsi = '123456789000000',
310 .msisdn = '543210123456789',
311 .nam_cs = false,
312 .nam_ps = false,
313}
314
315db_subscr_nam(dbc, imsi0, true, false) --> 0
316
317db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
318struct hlr_subscriber {
319 .id = 1,
320 .imsi = '123456789000000',
321 .msisdn = '543210123456789',
322 .nam_ps = false,
323}
324
325db_subscr_nam(dbc, imsi0, true, true) --> 0
326
327db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
328struct hlr_subscriber {
329 .id = 1,
330 .imsi = '123456789000000',
331 .msisdn = '543210123456789',
332}
333
334
335--- Set / unset nam_cs and nam_ps *again*
336
337db_subscr_nam(dbc, imsi0, false, true) --> 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 .nam_ps = false,
345}
346
347db_subscr_nam(dbc, imsi0, false, true) --> 0
348
349db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
350struct hlr_subscriber {
351 .id = 1,
352 .imsi = '123456789000000',
353 .msisdn = '543210123456789',
354 .nam_ps = false,
355}
356
357db_subscr_nam(dbc, imsi0, false, false) --> 0
358
359db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
360struct hlr_subscriber {
361 .id = 1,
362 .imsi = '123456789000000',
363 .msisdn = '543210123456789',
364 .nam_cs = false,
365 .nam_ps = false,
366}
367
368db_subscr_nam(dbc, imsi0, false, false) --> 0
369
370db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
371struct hlr_subscriber {
372 .id = 1,
373 .imsi = '123456789000000',
374 .msisdn = '543210123456789',
375 .nam_cs = false,
376 .nam_ps = false,
377}
378
379db_subscr_nam(dbc, imsi0, true, true) --> 0
380
381db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
382struct hlr_subscriber {
383 .id = 1,
384 .imsi = '123456789000000',
385 .msisdn = '543210123456789',
386 .nam_cs = false,
387}
388
389db_subscr_nam(dbc, imsi0, true, true) --> 0
390
391db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
392struct hlr_subscriber {
393 .id = 1,
394 .imsi = '123456789000000',
395 .msisdn = '543210123456789',
396 .nam_cs = false,
397}
398
399db_subscr_nam(dbc, imsi0, true, false) --> 0
400
401db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
402struct hlr_subscriber {
403 .id = 1,
404 .imsi = '123456789000000',
405 .msisdn = '543210123456789',
406}
407
408db_subscr_nam(dbc, imsi0, true, false) --> 0
409
410db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
411struct hlr_subscriber {
412 .id = 1,
413 .imsi = '123456789000000',
414 .msisdn = '543210123456789',
415}
416
417
418--- Set nam_cs and nam_ps on non-existent / invalid IMSI
419
420db_subscr_nam(dbc, unknown_imsi, false, true) --> -ENOENT
421DAUC Cannot disable PS: no such subscriber: IMSI='999999999'
422
423db_subscr_nam(dbc, unknown_imsi, false, false) --> -ENOENT
424DAUC Cannot disable CS: no such subscriber: IMSI='999999999'
425
426db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
427DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
428
429db_subscr_nam(dbc, "foobar", false, true) --> -ENOENT
430DAUC Cannot disable PS: no such subscriber: IMSI='foobar'
431
432db_subscr_nam(dbc, "foobar", false, false) --> -ENOENT
433DAUC Cannot disable CS: no such subscriber: IMSI='foobar'
434
435
Neels Hofmeyrdd783052017-10-09 17:36:08 +0200436--- Record LU for PS and CS (SGSN and VLR names)
437
438db_subscr_lu(dbc, id0, "5952", true) --> 0
439
440db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
441struct hlr_subscriber {
442 .id = 1,
443 .imsi = '123456789000000',
444 .msisdn = '543210123456789',
445 .sgsn_number = '5952',
446}
447
448db_subscr_lu(dbc, id0, "712", false) --> 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 = '5952',
457}
458
459
460--- Record LU for PS and CS (SGSN and VLR names) *again*
461
462db_subscr_lu(dbc, id0, "111", true) --> 0
463
464db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
465struct hlr_subscriber {
466 .id = 1,
467 .imsi = '123456789000000',
468 .msisdn = '543210123456789',
469 .vlr_number = '712',
470 .sgsn_number = '111',
471}
472
473db_subscr_lu(dbc, id0, "111", true) --> 0
474
475db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
476struct hlr_subscriber {
477 .id = 1,
478 .imsi = '123456789000000',
479 .msisdn = '543210123456789',
480 .vlr_number = '712',
481 .sgsn_number = '111',
482}
483
484db_subscr_lu(dbc, id0, "222", false) --> 0
485
486db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
487struct hlr_subscriber {
488 .id = 1,
489 .imsi = '123456789000000',
490 .msisdn = '543210123456789',
491 .vlr_number = '222',
492 .sgsn_number = '111',
493}
494
495db_subscr_lu(dbc, id0, "222", false) --> 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 .sgsn_number = '111',
504}
505
506
507--- Unset LU info for PS and CS (SGSN and VLR names)
508
509db_subscr_lu(dbc, id0, "", true) --> 0
510
511db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
512struct hlr_subscriber {
513 .id = 1,
514 .imsi = '123456789000000',
515 .msisdn = '543210123456789',
516 .vlr_number = '222',
517}
518
519db_subscr_lu(dbc, id0, "", false) --> 0
520
521db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
522struct hlr_subscriber {
523 .id = 1,
524 .imsi = '123456789000000',
525 .msisdn = '543210123456789',
526}
527
528db_subscr_lu(dbc, id0, "111", true) --> 0
529
530db_subscr_lu(dbc, id0, "222", false) --> 0
531
532db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
533struct hlr_subscriber {
534 .id = 1,
535 .imsi = '123456789000000',
536 .msisdn = '543210123456789',
537 .vlr_number = '222',
538 .sgsn_number = '111',
539}
540
541db_subscr_lu(dbc, id0, NULL, true) --> 0
542
543db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
544struct hlr_subscriber {
545 .id = 1,
546 .imsi = '123456789000000',
547 .msisdn = '543210123456789',
548 .vlr_number = '222',
549}
550
551db_subscr_lu(dbc, id0, NULL, false) --> 0
552
553db_subscr_get_by_id(dbc, id0, &g_subscr) --> 0
554struct hlr_subscriber {
555 .id = 1,
556 .imsi = '123456789000000',
557 .msisdn = '543210123456789',
558}
559
560
561--- Record LU for non-existent ID
562
563db_subscr_lu(dbc, 99999, "5952", true) --> -ENOENT
564DAUC Cannot update SGSN number for subscriber ID=99999: no such subscriber
565
566db_subscr_lu(dbc, 99999, "712", false) --> -ENOENT
567DAUC Cannot update VLR number for subscriber ID=99999: no such subscriber
568
569db_subscr_get_by_id(dbc, 99999, &g_subscr) --> -ENOENT
570DAUC Cannot read subscriber from db: ID=99999: No such subscriber
571
572
Neels Hofmeyre50121e2017-10-09 17:48:51 +0200573--- Purge and un-purge PS and CS
574
575db_subscr_purge(dbc, imsi0, true, true) --> 0
576
577db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
578struct hlr_subscriber {
579 .id = 1,
580 .imsi = '123456789000000',
581 .msisdn = '543210123456789',
582 .ms_purged_ps = true,
583}
584
585db_subscr_purge(dbc, imsi0, true, false) --> 0
586
587db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
588struct hlr_subscriber {
589 .id = 1,
590 .imsi = '123456789000000',
591 .msisdn = '543210123456789',
592 .ms_purged_cs = true,
593 .ms_purged_ps = true,
594}
595
596db_subscr_purge(dbc, imsi0, false, false) --> 0
597
598db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
599struct hlr_subscriber {
600 .id = 1,
601 .imsi = '123456789000000',
602 .msisdn = '543210123456789',
603 .ms_purged_ps = true,
604}
605
606db_subscr_purge(dbc, imsi0, false, true) --> 0
607
608db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
609struct hlr_subscriber {
610 .id = 1,
611 .imsi = '123456789000000',
612 .msisdn = '543210123456789',
613}
614
615
616--- Purge PS and CS *again*
617
618db_subscr_purge(dbc, imsi0, true, true) --> 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_ps = true,
626}
627
628db_subscr_purge(dbc, imsi0, true, true) --> 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_ps = true,
636}
637
638db_subscr_purge(dbc, imsi0, false, true) --> 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, true) --> 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
656db_subscr_purge(dbc, imsi0, true, false) --> 0
657
658db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
659struct hlr_subscriber {
660 .id = 1,
661 .imsi = '123456789000000',
662 .msisdn = '543210123456789',
663 .ms_purged_cs = true,
664}
665
666db_subscr_purge(dbc, imsi0, true, false) --> 0
667
668db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
669struct hlr_subscriber {
670 .id = 1,
671 .imsi = '123456789000000',
672 .msisdn = '543210123456789',
673 .ms_purged_cs = true,
674}
675
676db_subscr_purge(dbc, imsi0, false, false) --> 0
677
678db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
679struct hlr_subscriber {
680 .id = 1,
681 .imsi = '123456789000000',
682 .msisdn = '543210123456789',
683}
684
685db_subscr_purge(dbc, imsi0, false, false) --> 0
686
687db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
688struct hlr_subscriber {
689 .id = 1,
690 .imsi = '123456789000000',
691 .msisdn = '543210123456789',
692}
693
694
695--- Purge on non-existent / invalid IMSI
696
697db_subscr_purge(dbc, unknown_imsi, true, true) --> -ENOENT
698DAUC Cannot purge PS: no such subscriber: IMSI='999999999'
699
700db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
701DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
702
703db_subscr_purge(dbc, unknown_imsi, true, false) --> -ENOENT
704DAUC Cannot purge CS: no such subscriber: IMSI='999999999'
705
706db_subscr_get_by_imsi(dbc, unknown_imsi, &g_subscr) --> -ENOENT
707DAUC Cannot read subscriber from db: IMSI='999999999': No such subscriber
708
709
Neels Hofmeyr98509462017-10-09 17:28:53 +0200710--- Delete non-existent / invalid IDs
711
712db_subscr_delete_by_id(dbc, 999) --> -ENOENT
713DAUC Cannot delete: no such subscriber: ID=999
714
715db_subscr_delete_by_id(dbc, -10) --> -ENOENT
716DAUC Cannot delete: no such subscriber: ID=-10
717
718
719--- Delete subscribers
720
721db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
722struct hlr_subscriber {
723 .id = 1,
724 .imsi = '123456789000000',
725 .msisdn = '543210123456789',
726}
727
728db_subscr_delete_by_id(dbc, id0) --> 0
729
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200730db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
731DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200732
733db_subscr_delete_by_id(dbc, id0) --> -ENOENT
734DAUC Cannot delete: no such subscriber: ID=1
735
736db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
737struct hlr_subscriber {
738 .id = 2,
739 .imsi = '123456789000001',
740}
741
742db_subscr_delete_by_id(dbc, id1) --> 0
743
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200744db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> -ENOENT
745DAUC Cannot read subscriber from db: IMSI='123456789000001': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200746
747db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
748struct hlr_subscriber {
749 .id = 3,
750 .imsi = '123456789000002',
751}
752
753db_subscr_delete_by_id(dbc, id2) --> 0
754
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200755db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> -ENOENT
756DAUC Cannot read subscriber from db: IMSI='123456789000002': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200757
758db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> 0
759struct hlr_subscriber {
760 .id = 4,
761 .imsi = '123456',
762}
763
764db_subscr_delete_by_id(dbc, id_short) --> 0
765
Neels Hofmeyr9c2bbc82017-10-09 17:30:32 +0200766db_subscr_get_by_imsi(dbc, short_imsi, &g_subscr) --> -ENOENT
767DAUC Cannot read subscriber from db: IMSI='123456': No such subscriber
Neels Hofmeyr98509462017-10-09 17:28:53 +0200768
Oliver Smithcd2af5e2019-03-06 13:17:39 +0100769
770--- Create and delete subscribers with non-default nam_cs and nam_ps
771
772db_subscr_create(dbc, imsi0, 0x00) --> 0
773
774db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
775struct hlr_subscriber {
776 .id = 1,
777 .imsi = '123456789000000',
778 .nam_cs = false,
779 .nam_ps = false,
780}
781
782db_subscr_create(dbc, imsi1, DB_SUBSCR_FLAG_NAM_CS) --> 0
783
784db_subscr_get_by_imsi(dbc, imsi1, &g_subscr) --> 0
785struct hlr_subscriber {
786 .id = 2,
787 .imsi = '123456789000001',
788 .nam_ps = false,
789}
790
791db_subscr_create(dbc, imsi2, DB_SUBSCR_FLAG_NAM_PS) --> 0
792
793db_subscr_get_by_imsi(dbc, imsi2, &g_subscr) --> 0
794struct hlr_subscriber {
795 .id = 3,
796 .imsi = '123456789000002',
797 .nam_cs = false,
798}
799
800db_subscr_delete_by_id(dbc, id0) --> 0
801
802db_subscr_delete_by_id(dbc, id1) --> 0
803
804db_subscr_delete_by_id(dbc, id2) --> 0
805
Neels Hofmeyr98509462017-10-09 17:28:53 +0200806===== test_subscr_create_update_sel_delete: SUCCESS
807
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200808
809===== test_subscr_aud
810
811--- Get auth data for non-existent subscriber
812
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200813db_get_auth_data(dbc, unknown_imsi, &g_aud2g, &g_aud3g, &g_id) --> -2
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200814DAUC IMSI='999999999': No such subscriber
815
816
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100817db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
818DAUC IMSI='123456789000000': No such subscriber
819
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200820
821--- Create subscriber
822
Oliver Smithcd2af5e2019-03-06 13:17:39 +0100823db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200824
825db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
826struct hlr_subscriber {
827 .id = 1,
828 .imsi = '123456789000000',
829}
830
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100831db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200832DAUC IMSI='123456789000000': No 2G Auth Data
833DAUC IMSI='123456789000000': No 3G Auth Data
834
835
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100836db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
837DAUC IMSI='123456789000000': No 2G Auth Data
838DAUC IMSI='123456789000000': No 3G Auth Data
839
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200840
841--- Set auth data, 2G only
842
843db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
844
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200845db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200846DAUC IMSI='123456789000000': No 3G Auth Data
847
8482G: struct osmo_sub_auth_data {
849 .type = GSM,
850 .algo = COMP128v1,
851 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
852}
8533G: none
854
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100855db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
856DAUC IMSI='123456789000000': No 3G Auth Data
857DAUC IMSI='123456789000000': Calling to generate 3 vectors
858DAUC IMSI='123456789000000': Generated 3 vectors
859
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200860db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v1, "0123456789abcdef0123456789abcdef")) --> 0
861
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200862db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200863DAUC IMSI='123456789000000': No 3G Auth Data
864
8652G: struct osmo_sub_auth_data {
866 .type = GSM,
867 .algo = COMP128v1,
868 .u.gsm.ki = '0123456789abcdef0123456789abcdef',
869}
8703G: none
871
872db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v2, "BeadedBeeAced1EbbedDefacedFacade")) --> 0
873
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200874db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200875DAUC IMSI='123456789000000': No 3G Auth Data
876
8772G: struct osmo_sub_auth_data {
878 .type = GSM,
879 .algo = COMP128v2,
880 .u.gsm.ki = 'beadedbeeaced1ebbeddefacedfacade',
881}
8823G: none
883
884db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "DeafBeddedBabeAcceededFadedDecaf")) --> 0
885
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200886db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200887DAUC IMSI='123456789000000': No 3G Auth Data
888
8892G: struct osmo_sub_auth_data {
890 .type = GSM,
891 .algo = COMP128v3,
892 .u.gsm.ki = 'deafbeddedbabeacceededfadeddecaf',
893}
8943G: none
895
896db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
897
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200898db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200899DAUC IMSI='123456789000000': No 3G Auth Data
900
9012G: struct osmo_sub_auth_data {
902 .type = GSM,
903 .algo = XOR,
904 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
905}
9063G: none
907
908
909--- Remove 2G auth data
910
911db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> 0
912
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100913db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200914DAUC IMSI='123456789000000': No 2G Auth Data
915DAUC IMSI='123456789000000': No 3G Auth Data
916
917
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100918db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
919DAUC IMSI='123456789000000': No 2G Auth Data
920DAUC IMSI='123456789000000': No 3G Auth Data
921
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200922db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, NULL)) --> -ENOENT
923
924db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "CededEffacedAceFacedBadFadedBeef")) --> 0
925
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200926db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200927DAUC IMSI='123456789000000': No 3G Auth Data
928
9292G: struct osmo_sub_auth_data {
930 .type = GSM,
931 .algo = XOR,
932 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
933}
9343G: none
935
936db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_NONE, "f000000000000f00000000000f000000")) --> 0
937
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +0100938db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200939DAUC IMSI='123456789000000': No 2G Auth Data
940DAUC IMSI='123456789000000': No 3G Auth Data
941
942
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100943db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
944DAUC IMSI='123456789000000': No 2G Auth Data
945DAUC IMSI='123456789000000': No 3G Auth Data
946
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200947
948--- Set auth data, 3G only
949
950db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
951
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200952db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200953DAUC IMSI='123456789000000': No 2G Auth Data
954
9552G: none
9563G: struct osmo_sub_auth_data {
957 .type = UMTS,
958 .algo = MILENAGE,
959 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
960 .u.umts.opc_is_op = 1,
961 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
962 .u.umts.amf = '0000',
963 .u.umts.ind_bitlen = 5,
964}
965
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +0100966db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
967DAUC IMSI='123456789000000': No 2G Auth Data
968DAUC IMSI='123456789000000': Calling to generate 3 vectors
969DAUC IMSI='123456789000000': Generated 3 vectors
970DAUC IMSI='123456789000000': Updating SQN=0 in DB
971
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200972db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
973
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200974db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200975DAUC IMSI='123456789000000': No 2G Auth Data
976
9772G: none
9783G: struct osmo_sub_auth_data {
979 .type = UMTS,
980 .algo = MILENAGE,
981 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
982 .u.umts.opc_is_op = 1,
983 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
984 .u.umts.amf = '0000',
985 .u.umts.ind_bitlen = 5,
986}
987
988db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "Deaf0ff1ceD0d0DabbedD1ced1ceF00d", true, "F1bbed0afD0eF0bD0ffed0ddF1fe0b0e", 0)) --> 0
989
Neels Hofmeyr57a87922017-10-09 17:51:13 +0200990db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +0200991DAUC IMSI='123456789000000': No 2G Auth Data
992
9932G: none
9943G: struct osmo_sub_auth_data {
995 .type = UMTS,
996 .algo = MILENAGE,
997 .u.umts.opc = 'deaf0ff1ced0d0dabbedd1ced1cef00d',
998 .u.umts.opc_is_op = 1,
999 .u.umts.k = 'f1bbed0afd0ef0bd0ffed0ddf1fe0b0e',
1000 .u.umts.amf = '0000',
1001}
1002
1003db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", OSMO_MILENAGE_IND_BITLEN_MAX)) --> 0
1004
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001005db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001006DAUC IMSI='123456789000000': No 2G Auth Data
1007
10082G: none
10093G: struct osmo_sub_auth_data {
1010 .type = UMTS,
1011 .algo = MILENAGE,
1012 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1013 .u.umts.opc_is_op = 0,
1014 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1015 .u.umts.amf = '0000',
1016 .u.umts.ind_bitlen = 28,
1017}
1018
1019db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
1020
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001021db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001022DAUC IMSI='123456789000000': No 2G Auth Data
1023
10242G: none
10253G: struct osmo_sub_auth_data {
1026 .type = UMTS,
1027 .algo = MILENAGE,
1028 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
1029 .u.umts.opc_is_op = 0,
1030 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
1031 .u.umts.amf = '0000',
1032 .u.umts.ind_bitlen = 5,
1033}
1034
1035
1036--- Remove 3G auth data
1037
1038db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> 0
1039
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001040db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001041DAUC IMSI='123456789000000': No 2G Auth Data
1042DAUC IMSI='123456789000000': No 3G Auth Data
1043
1044
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001045db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1046DAUC IMSI='123456789000000': No 2G Auth Data
1047DAUC IMSI='123456789000000': No 3G Auth Data
1048
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001049db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, NULL, false, NULL, 0)) --> -ENOENT
1050
1051db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "CededEffacedAceFacedBadFadedBeef", false, "BeefedCafeFaceAcedAddedDecadeFee", 5)) --> 0
1052
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001053db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001054DAUC IMSI='123456789000000': No 2G Auth Data
1055
10562G: none
10573G: struct osmo_sub_auth_data {
1058 .type = UMTS,
1059 .algo = MILENAGE,
1060 .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
1061 .u.umts.opc_is_op = 0,
1062 .u.umts.k = 'beefedcafefaceacedaddeddecadefee',
1063 .u.umts.amf = '0000',
1064 .u.umts.ind_bitlen = 5,
1065}
1066
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001067db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1068DAUC IMSI='123456789000000': No 2G Auth Data
1069DAUC IMSI='123456789000000': Calling to generate 3 vectors
1070DAUC IMSI='123456789000000': Generated 3 vectors
1071DAUC IMSI='123456789000000': Updating SQN=0 in DB
1072
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001073db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_NONE, "asdfasdfasd", false, "asdfasdfasdf", 99999)) --> 0
1074
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001075db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001076DAUC IMSI='123456789000000': No 2G Auth Data
1077DAUC IMSI='123456789000000': No 3G Auth Data
1078
1079
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001080db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1081DAUC IMSI='123456789000000': No 2G Auth Data
1082DAUC IMSI='123456789000000': No 3G Auth Data
1083
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001084
1085--- Set auth data, 2G and 3G
1086
1087db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_COMP128v3, "CededEffacedAceFacedBadFadedBeef")) --> 0
1088
1089db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", false, "DeafBeddedBabeAcceededFadedDecaf", 5)) --> 0
1090
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001091db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001092
10932G: struct osmo_sub_auth_data {
1094 .type = GSM,
1095 .algo = COMP128v3,
1096 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1097}
10983G: struct osmo_sub_auth_data {
1099 .type = UMTS,
1100 .algo = MILENAGE,
1101 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1102 .u.umts.opc_is_op = 0,
1103 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1104 .u.umts.amf = '0000',
1105 .u.umts.ind_bitlen = 5,
1106}
1107
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001108db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> 3
1109DAUC IMSI='123456789000000': Calling to generate 3 vectors
1110DAUC IMSI='123456789000000': Generated 3 vectors
1111DAUC IMSI='123456789000000': Updating SQN=0 in DB
1112
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001113
1114--- Set invalid auth data
1115
1116db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(99999, "f000000000000f00000000000f000000")) --> -EINVAL
1117DAUC Cannot update auth tokens: Unknown auth algo: 99999
1118
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001119db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001120
11212G: struct osmo_sub_auth_data {
1122 .type = GSM,
1123 .algo = COMP128v3,
1124 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1125}
11263G: struct osmo_sub_auth_data {
1127 .type = UMTS,
1128 .algo = MILENAGE,
1129 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1130 .u.umts.opc_is_op = 0,
1131 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1132 .u.umts.amf = '0000',
1133 .u.umts.ind_bitlen = 5,
1134}
1135
1136db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f000000000000f00000000000f000000f00000000")) --> -EINVAL
1137DAUC Cannot update auth tokens: Invalid KI: 'f000000000000f00000000000f000000f00000000'
1138
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001139db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001140
11412G: struct osmo_sub_auth_data {
1142 .type = GSM,
1143 .algo = COMP128v3,
1144 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1145}
11463G: struct osmo_sub_auth_data {
1147 .type = UMTS,
1148 .algo = MILENAGE,
1149 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1150 .u.umts.opc_is_op = 0,
1151 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1152 .u.umts.amf = '0000',
1153 .u.umts.ind_bitlen = 5,
1154}
1155
1156db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_XOR, "f00")) --> -EINVAL
1157DAUC Cannot update auth tokens: Invalid KI: 'f00'
1158
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001159db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001160
11612G: struct osmo_sub_auth_data {
1162 .type = GSM,
1163 .algo = COMP128v3,
1164 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1165}
11663G: struct osmo_sub_auth_data {
1167 .type = UMTS,
1168 .algo = MILENAGE,
1169 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1170 .u.umts.opc_is_op = 0,
1171 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1172 .u.umts.amf = '0000',
1173 .u.umts.ind_bitlen = 5,
1174}
1175
1176db_subscr_update_aud_by_id(dbc, id, mk_aud_2g(OSMO_AUTH_ALG_MILENAGE, "0123456789abcdef0123456789abcdef")) --> -EINVAL
1177DAUC Cannot update auth tokens: auth algo not suited for 2G: MILENAGE
1178
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001179db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001180
11812G: struct osmo_sub_auth_data {
1182 .type = GSM,
1183 .algo = COMP128v3,
1184 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1185}
11863G: struct osmo_sub_auth_data {
1187 .type = UMTS,
1188 .algo = MILENAGE,
1189 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1190 .u.umts.opc_is_op = 0,
1191 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1192 .u.umts.amf = '0000',
1193 .u.umts.ind_bitlen = 5,
1194}
1195
1196db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "0f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1197DAUC Cannot update auth tokens: Invalid OP/OPC: '0f000000000000f00000000000f000000'
1198
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001199db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001200
12012G: struct osmo_sub_auth_data {
1202 .type = GSM,
1203 .algo = COMP128v3,
1204 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1205}
12063G: struct osmo_sub_auth_data {
1207 .type = UMTS,
1208 .algo = MILENAGE,
1209 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1210 .u.umts.opc_is_op = 0,
1211 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1212 .u.umts.amf = '0000',
1213 .u.umts.ind_bitlen = 5,
1214}
1215
1216db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "000000000000f00000000000f000000", 5)) --> -EINVAL
1217DAUC Cannot update auth tokens: Invalid K: '000000000000f00000000000f000000'
1218
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001219db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001220
12212G: struct osmo_sub_auth_data {
1222 .type = GSM,
1223 .algo = COMP128v3,
1224 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1225}
12263G: struct osmo_sub_auth_data {
1227 .type = UMTS,
1228 .algo = MILENAGE,
1229 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1230 .u.umts.opc_is_op = 0,
1231 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1232 .u.umts.amf = '0000',
1233 .u.umts.ind_bitlen = 5,
1234}
1235
1236db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", OSMO_MILENAGE_IND_BITLEN_MAX + 1)) --> -EINVAL
1237DAUC Cannot update auth tokens: Invalid ind_bitlen: 29
1238
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001239db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001240
12412G: struct osmo_sub_auth_data {
1242 .type = GSM,
1243 .algo = COMP128v3,
1244 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1245}
12463G: struct osmo_sub_auth_data {
1247 .type = UMTS,
1248 .algo = MILENAGE,
1249 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1250 .u.umts.opc_is_op = 0,
1251 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1252 .u.umts.amf = '0000',
1253 .u.umts.ind_bitlen = 5,
1254}
1255
1256db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "X000000000000f00000000000f000000", false, "f000000000000f00000000000f000000", 5)) --> -EINVAL
1257DAUC Cannot update auth tokens: Invalid OP/OPC: 'X000000000000f00000000000f000000'
1258
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001259db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001260
12612G: struct osmo_sub_auth_data {
1262 .type = GSM,
1263 .algo = COMP128v3,
1264 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1265}
12663G: struct osmo_sub_auth_data {
1267 .type = UMTS,
1268 .algo = MILENAGE,
1269 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1270 .u.umts.opc_is_op = 0,
1271 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1272 .u.umts.amf = '0000',
1273 .u.umts.ind_bitlen = 5,
1274}
1275
1276db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "f000000000000f00000000000f000000", false, "f000000000000 f00000000000 f000000", 5)) --> -EINVAL
1277DAUC Cannot update auth tokens: Invalid K: 'f000000000000 f00000000000 f000000'
1278
Neels Hofmeyr57a87922017-10-09 17:51:13 +02001279db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001280
12812G: struct osmo_sub_auth_data {
1282 .type = GSM,
1283 .algo = COMP128v3,
1284 .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
1285}
12863G: struct osmo_sub_auth_data {
1287 .type = UMTS,
1288 .algo = MILENAGE,
1289 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1290 .u.umts.opc_is_op = 0,
1291 .u.umts.k = 'deafbeddedbabeacceededfadeddecaf',
1292 .u.umts.amf = '0000',
1293 .u.umts.ind_bitlen = 5,
1294}
1295
1296
1297--- Delete subscriber
1298
1299db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1300struct hlr_subscriber {
1301 .id = 1,
1302 .imsi = '123456789000000',
1303}
1304
1305db_subscr_delete_by_id(dbc, id) --> 0
1306
1307db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1308DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1309
1310
1311--- Re-add subscriber and verify auth data didn't come back
1312
Oliver Smithcd2af5e2019-03-06 13:17:39 +01001313db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001314
1315db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1316struct hlr_subscriber {
1317 .id = 1,
1318 .imsi = '123456789000000',
1319}
1320
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001321db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001322DAUC IMSI='123456789000000': No 2G Auth Data
1323DAUC IMSI='123456789000000': No 3G Auth Data
1324
1325
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001326db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -126
1327DAUC IMSI='123456789000000': No 2G Auth Data
1328DAUC IMSI='123456789000000': No 3G Auth Data
1329
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001330db_subscr_delete_by_id(dbc, id) --> 0
1331
1332db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1333DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1334
Neels Hofmeyr2dee60e2017-11-23 15:27:50 +01001335db_get_auc(dbc, imsi0, 3, vec, N_VECTORS, NULL, NULL) --> -2
1336DAUC IMSI='123456789000000': No such subscriber
1337
Neels Hofmeyr1332a172017-10-10 02:25:00 +02001338===== test_subscr_aud: SUCCESS
1339
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001340
1341===== test_subscr_sqn
1342
1343--- Set SQN for unknown subscriber
1344
1345db_update_sqn(dbc, 99, 999) --> -ENOENT
1346DAUC Cannot update SQN for subscriber ID=99: no auc_3g entry for such subscriber
1347
1348db_subscr_get_by_id(dbc, 99, &g_subscr) --> -ENOENT
1349DAUC Cannot read subscriber from db: ID=99: No such subscriber
1350
1351db_update_sqn(dbc, 9999, 99) --> -ENOENT
1352DAUC Cannot update SQN for subscriber ID=9999: no auc_3g entry for such subscriber
1353
1354db_subscr_get_by_id(dbc, 9999, &g_subscr) --> -ENOENT
1355DAUC Cannot read subscriber from db: ID=9999: No such subscriber
1356
1357
1358--- Create subscriber
1359
Oliver Smithcd2af5e2019-03-06 13:17:39 +01001360db_subscr_create(dbc, imsi0, DB_SUBSCR_FLAG_NAM_CS | DB_SUBSCR_FLAG_NAM_PS) --> 0
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001361
1362db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1363struct hlr_subscriber {
1364 .id = 1,
1365 .imsi = '123456789000000',
1366}
1367
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001368db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001369DAUC IMSI='123456789000000': No 2G Auth Data
1370DAUC IMSI='123456789000000': No 3G Auth Data
1371
1372
1373
1374--- Set SQN, but no 3G auth data present
1375
1376db_update_sqn(dbc, id, 123) --> -ENOENT
1377DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1378
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001379db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001380DAUC IMSI='123456789000000': No 2G Auth Data
1381DAUC IMSI='123456789000000': No 3G Auth Data
1382
1383
1384db_update_sqn(dbc, id, 543) --> -ENOENT
1385DAUC Cannot update SQN for subscriber ID=1: no auc_3g entry for such subscriber
1386
Neels Hofmeyrbd1dca02017-11-23 15:25:30 +01001387db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -126
Neels Hofmeyr1cbdb702017-10-09 23:03:57 +02001388DAUC IMSI='123456789000000': No 2G Auth Data
1389DAUC IMSI='123456789000000': No 3G Auth Data
1390
1391
1392
1393--- Set auth 3G data
1394
1395db_subscr_update_aud_by_id(dbc, id, mk_aud_3g(OSMO_AUTH_ALG_MILENAGE, "BeefedCafeFaceAcedAddedDecadeFee", true, "C01ffedC1cadaeAc1d1f1edAcac1aB0a", 5)) --> 0
1396
1397db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1398DAUC IMSI='123456789000000': No 2G Auth Data
1399
14002G: none
14013G: struct osmo_sub_auth_data {
1402 .type = UMTS,
1403 .algo = MILENAGE,
1404 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1405 .u.umts.opc_is_op = 1,
1406 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1407 .u.umts.amf = '0000',
1408 .u.umts.ind_bitlen = 5,
1409}
1410
1411
1412--- Set SQN
1413
1414db_update_sqn(dbc, id, 23315) --> 0
1415
1416db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1417DAUC IMSI='123456789000000': No 2G Auth Data
1418
14192G: none
14203G: struct osmo_sub_auth_data {
1421 .type = UMTS,
1422 .algo = MILENAGE,
1423 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1424 .u.umts.opc_is_op = 1,
1425 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1426 .u.umts.amf = '0000',
1427 .u.umts.sqn = 23315,
1428 .u.umts.sqn = 0x5b13,
1429 .u.umts.ind_bitlen = 5,
1430}
1431
1432db_update_sqn(dbc, id, 23315) --> 0
1433
1434db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1435DAUC IMSI='123456789000000': No 2G Auth Data
1436
14372G: none
14383G: struct osmo_sub_auth_data {
1439 .type = UMTS,
1440 .algo = MILENAGE,
1441 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1442 .u.umts.opc_is_op = 1,
1443 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1444 .u.umts.amf = '0000',
1445 .u.umts.sqn = 23315,
1446 .u.umts.sqn = 0x5b13,
1447 .u.umts.ind_bitlen = 5,
1448}
1449
1450db_update_sqn(dbc, id, 423) --> 0
1451
1452db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1453DAUC IMSI='123456789000000': No 2G Auth Data
1454
14552G: none
14563G: struct osmo_sub_auth_data {
1457 .type = UMTS,
1458 .algo = MILENAGE,
1459 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1460 .u.umts.opc_is_op = 1,
1461 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1462 .u.umts.amf = '0000',
1463 .u.umts.sqn = 423,
1464 .u.umts.sqn = 0x1a7,
1465 .u.umts.ind_bitlen = 5,
1466}
1467
1468
1469--- Set SQN: thru uint64_t range, using the int64_t SQLite bind
1470
1471db_update_sqn(dbc, id, 0) --> 0
1472
1473db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1474DAUC IMSI='123456789000000': No 2G Auth Data
1475
14762G: none
14773G: struct osmo_sub_auth_data {
1478 .type = UMTS,
1479 .algo = MILENAGE,
1480 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1481 .u.umts.opc_is_op = 1,
1482 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1483 .u.umts.amf = '0000',
1484 .u.umts.ind_bitlen = 5,
1485}
1486
1487db_update_sqn(dbc, id, INT64_MAX) --> 0
1488
1489db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1490DAUC IMSI='123456789000000': No 2G Auth Data
1491
14922G: none
14933G: struct osmo_sub_auth_data {
1494 .type = UMTS,
1495 .algo = MILENAGE,
1496 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1497 .u.umts.opc_is_op = 1,
1498 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1499 .u.umts.amf = '0000',
1500 .u.umts.sqn = 9223372036854775807,
1501 .u.umts.sqn = 0x7fffffffffffffff,
1502 .u.umts.ind_bitlen = 5,
1503}
1504
1505db_update_sqn(dbc, id, INT64_MIN) --> 0
1506
1507db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1508DAUC IMSI='123456789000000': No 2G Auth Data
1509
15102G: none
15113G: struct osmo_sub_auth_data {
1512 .type = UMTS,
1513 .algo = MILENAGE,
1514 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1515 .u.umts.opc_is_op = 1,
1516 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1517 .u.umts.amf = '0000',
1518 .u.umts.sqn = 9223372036854775808,
1519 .u.umts.sqn = 0x8000000000000000,
1520 .u.umts.ind_bitlen = 5,
1521}
1522
1523db_update_sqn(dbc, id, UINT64_MAX) --> 0
1524
1525db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
1526DAUC IMSI='123456789000000': No 2G Auth Data
1527
15282G: none
15293G: struct osmo_sub_auth_data {
1530 .type = UMTS,
1531 .algo = MILENAGE,
1532 .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
1533 .u.umts.opc_is_op = 1,
1534 .u.umts.k = 'c01ffedc1cadaeac1d1f1edacac1ab0a',
1535 .u.umts.amf = '0000',
1536 .u.umts.sqn = 18446744073709551615,
1537 .u.umts.sqn = 0xffffffffffffffff,
1538 .u.umts.ind_bitlen = 5,
1539}
1540
1541
1542--- Delete subscriber
1543
1544db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> 0
1545struct hlr_subscriber {
1546 .id = 1,
1547 .imsi = '123456789000000',
1548}
1549
1550db_subscr_delete_by_id(dbc, id) --> 0
1551
1552db_subscr_get_by_imsi(dbc, imsi0, &g_subscr) --> -ENOENT
1553DAUC Cannot read subscriber from db: IMSI='123456789000000': No such subscriber
1554
1555===== test_subscr_sqn: SUCCESS
1556