|
4 | 4 | "context"
|
5 | 5 | "crypto/sha256"
|
6 | 6 | "fmt"
|
| 7 | + "io" |
7 | 8 | "net"
|
8 | 9 | "net/http"
|
9 | 10 | "net/http/httptest"
|
@@ -595,4 +596,39 @@ func TestAPIKey(t *testing.T) {
|
595 | 596 | require.Equal(t, sentAPIKey.ExpiresAt, gotAPIKey.ExpiresAt)
|
596 | 597 | require.Equal(t, sentAPIKey.LoginType, gotAPIKey.LoginType)
|
597 | 598 | })
|
| 599 | + |
| 600 | + t.Run("MissongConfig", func(t *testing.T) { |
| 601 | + t.Parallel() |
| 602 | + var ( |
| 603 | + db = dbfake.New() |
| 604 | + user = dbgen.User(t, db, database.User{}) |
| 605 | + _, token = dbgen.APIKey(t, db, database.APIKey{ |
| 606 | + UserID: user.ID, |
| 607 | + LastUsed: database.Now(), |
| 608 | + ExpiresAt: database.Now().AddDate(0, 0, 1), |
| 609 | + LoginType: database.LoginTypeOIDC, |
| 610 | + }) |
| 611 | + _ = dbgen.UserLink(t, db, database.UserLink{ |
| 612 | + UserID: user.ID, |
| 613 | + LoginType: database.LoginTypeOIDC, |
| 614 | + OAuthRefreshToken: "random", |
| 615 | + // expired |
| 616 | + OAuthExpiry: time.Now().Add(time.Hour * -1), |
| 617 | + }) |
| 618 | + |
| 619 | + r = httptest.NewRequest("GET", "/", nil) |
| 620 | + rw = httptest.NewRecorder() |
| 621 | + ) |
| 622 | + r.Header.Set(codersdk.SessionTokenHeader, token) |
| 623 | + |
| 624 | + httpmw.ExtractAPIKeyMW(httpmw.ExtractAPIKeyConfig{ |
| 625 | + DB: db, |
| 626 | + RedirectToLogin: false, |
| 627 | + })(successHandler).ServeHTTP(rw, r) |
| 628 | + res := rw.Result() |
| 629 | + defer res.Body.Close() |
| 630 | + require.Equal(t, http.StatusInternalServerError, res.StatusCode) |
| 631 | + out, _ := io.ReadAll(res.Body) |
| 632 | + require.Contains(t, string(out), "Unable to refresh") |
| 633 | + }) |
598 | 634 | }
|
0 commit comments