@@ -356,3 +356,39 @@ func TestGetFullFCntUp(t *testing.T) {
356
356
assert .Equalf (test .FullFCnt , out , "Test %d: expected %d, got %d" , i , test .FullFCnt , out )
357
357
}
358
358
}
359
+
360
+ func TestGetDeviceSessionsForDevAddr (t * testing.T ) {
361
+ assert := require .New (t )
362
+ conf := test .GetConfig ()
363
+ assert .NoError (Setup (conf ))
364
+
365
+ RedisClient ().FlushAll (context .Background ())
366
+
367
+ devAddr := lorawan.DevAddr {1 , 2 , 3 , 4 }
368
+ devEUI1 := lorawan.EUI64 {1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 }
369
+ devEUI2 := lorawan.EUI64 {2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 }
370
+
371
+ ds := DeviceSession {
372
+ DevAddr : devAddr ,
373
+ DevEUI : devEUI1 ,
374
+ }
375
+ assert .NoError (SaveDeviceSession (context .Background (), ds ))
376
+
377
+ key := GetRedisKey (devAddrKeyTempl , devAddr )
378
+ assert .NoError (RedisClient ().SAdd (context .Background (), key , devEUI2 [:]).Err ())
379
+
380
+ euis , err := GetDevEUIsForDevAddr (context .Background (), devAddr )
381
+ assert .NoError (err )
382
+ assert .Len (euis , 2 )
383
+
384
+ dss , err := GetDeviceSessionsForDevAddr (context .Background (), devAddr )
385
+ assert .NoError (err )
386
+ assert .Len (dss , 1 )
387
+
388
+ // DevEUI2 should be removed from the set, as no device-session exists (anymore)
389
+ // for this DevEUI.
390
+ euis , err = GetDevEUIsForDevAddr (context .Background (), devAddr )
391
+ assert .NoError (err )
392
+ assert .Equal ([]lorawan.EUI64 {devEUI1 }, euis )
393
+
394
+ }
0 commit comments