@@ -356,6 +356,67 @@ func (st *StoreTest) TestOAuthStore(t *T) {
356
356
})
357
357
}
358
358
359
+ // TestOAuthStoreSupportUser tests the behavior of AccessTokens with the unique support userID.
360
+ func (st * StoreTest ) TestOAuthStoreSupportUser (t * T ) {
361
+ supportUsr := st .population .NewUser ()
362
+ supportUsr .Ids .UserId = ttnpb .SupportUserID
363
+ supportUsr .Name = "support"
364
+ supportUsr .PrimaryEmailAddress = "support@dummy-email.com"
365
+
366
+ ses1 := st .population .NewUserSession (supportUsr .GetIds ())
367
+ cli1 := st .population .NewClient (nil )
368
+ cli1 .SkipAuthorization = true
369
+
370
+ s , ok := st .PrepareDB (t ).(interface {
371
+ Store
372
+ is.OAuthStore
373
+ })
374
+ defer st .DestroyDB (t , true , "users" , "accounts" , "user_sessions" , "clients" )
375
+ if ! ok {
376
+ t .Skip ("Store does not implement OAuthStore" )
377
+ }
378
+ defer s .Close ()
379
+
380
+ var createdAccessToken * ttnpb.OAuthAccessToken
381
+
382
+ t .Run ("CreateAccessToken" , func (t * T ) {
383
+ a , ctx := test .New (t )
384
+ var err error
385
+ start := time .Now ().Truncate (time .Second )
386
+
387
+ createdAccessToken , err = s .CreateAccessToken (ctx , & ttnpb.OAuthAccessToken {
388
+ UserIds : supportUsr .GetIds (),
389
+ UserSessionId : ses1 .GetSessionId (),
390
+ ClientIds : cli1 .GetIds (),
391
+ Id : "token_id" ,
392
+ AccessToken : "access_token" ,
393
+ RefreshToken : "refresh_token" ,
394
+ Rights : []ttnpb.Right {ttnpb .Right_RIGHT_ALL },
395
+ ExpiresAt : timestamppb .New (start .Add (5 * time .Minute )),
396
+ }, "" )
397
+ if a .So (err , should .BeNil ) && a .So (createdAccessToken , should .NotBeNil ) {
398
+ a .So (createdAccessToken .UserIds , should .Resemble , supportUsr .GetIds ())
399
+ a .So (createdAccessToken .UserSessionId , should .Equal , ses1 .GetSessionId ())
400
+ a .So (createdAccessToken .ClientIds , should .Resemble , cli1 .GetIds ())
401
+ a .So (createdAccessToken .Id , should .Equal , "token_id" )
402
+ a .So (createdAccessToken .AccessToken , should .Equal , "access_token" )
403
+ a .So (createdAccessToken .RefreshToken , should .Equal , "refresh_token" )
404
+ a .So (createdAccessToken .Rights , should .Resemble , []ttnpb.Right {ttnpb .Right_RIGHT_ALL })
405
+ a .So (* ttnpb .StdTime (createdAccessToken .ExpiresAt ), should .Equal , start .Add (5 * time .Minute ))
406
+ a .So (* ttnpb .StdTime (createdAccessToken .CreatedAt ), should .HappenWithin , 5 * time .Second , start )
407
+ }
408
+ })
409
+
410
+ t .Run ("GetAccessToken" , func (t * T ) {
411
+ a , ctx := test .New (t )
412
+ got , err := s .GetAccessToken (ctx , "token_id" )
413
+ if a .So (err , should .BeNil ) && a .So (got , should .NotBeNil ) {
414
+ // NOTE: This should be limited due to referencing the unique support userID.
415
+ a .So (got .Rights , should .Resemble , ttnpb .AllReadAdminRights .GetRights ())
416
+ }
417
+ })
418
+ }
419
+
359
420
func (st * StoreTest ) TestOAuthStorePagination (t * T ) {
360
421
a , ctx := test .New (t )
361
422
0 commit comments