Skip to content

Commit 7de126e

Browse files
committed
add token test
1 parent fc88e6e commit 7de126e

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

coderd/httpmw/apikey_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,45 @@ func TestAPIKey(t *testing.T) {
589589
require.Equal(t, http.StatusOK, res.StatusCode)
590590
require.EqualValues(t, 1, atomic.LoadInt64(&count))
591591
})
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+
})
592631
}
593632

594633
func createUser(ctx context.Context, t *testing.T, db database.Store) database.User {

0 commit comments

Comments
 (0)