@@ -589,6 +589,45 @@ func TestAPIKey(t *testing.T) {
589
589
require .Equal (t , http .StatusOK , res .StatusCode )
590
590
require .EqualValues (t , 1 , atomic .LoadInt64 (& count ))
591
591
})
592
+
593
+ t .Run ("Tokens" , func (t * testing.T ) {
594
+ t .Parallel ()
595
+ var (
596
+ db = databasefake .New ()
597
+ id , secret = randomAPIKeyParts ()
598
+ hashed = sha256 .Sum256 ([]byte (secret ))
599
+ r = httptest .NewRequest ("GET" , "/" , nil )
600
+ rw = httptest .NewRecorder ()
601
+ user = createUser (r .Context (), t , db )
602
+ )
603
+ r .Header .Set (codersdk .SessionCustomHeader , fmt .Sprintf ("%s-%s" , id , secret ))
604
+
605
+ sentAPIKey , err := db .InsertAPIKey (r .Context (), database.InsertAPIKeyParams {
606
+ ID : id ,
607
+ HashedSecret : hashed [:],
608
+ LoginType : database .LoginTypeToken ,
609
+ LastUsed : database .Now (),
610
+ ExpiresAt : database .Now ().AddDate (0 , 0 , 1 ),
611
+ UserID : user .ID ,
612
+ Scope : database .APIKeyScopeAll ,
613
+ })
614
+ require .NoError (t , err )
615
+
616
+ httpmw .ExtractAPIKey (httpmw.ExtractAPIKeyConfig {
617
+ DB : db ,
618
+ RedirectToLogin : false ,
619
+ })(successHandler ).ServeHTTP (rw , r )
620
+ res := rw .Result ()
621
+ defer res .Body .Close ()
622
+ require .Equal (t , http .StatusOK , res .StatusCode )
623
+
624
+ gotAPIKey , err := db .GetAPIKeyByID (r .Context (), id )
625
+ require .NoError (t , err )
626
+
627
+ require .Equal (t , sentAPIKey .LastUsed , gotAPIKey .LastUsed )
628
+ require .Equal (t , sentAPIKey .ExpiresAt , gotAPIKey .ExpiresAt )
629
+ require .Equal (t , sentAPIKey .LoginType , gotAPIKey .LoginType )
630
+ })
592
631
}
593
632
594
633
func createUser (ctx context.Context , t * testing.T , db database.Store ) database.User {
0 commit comments