Skip to content

Commit 054a301

Browse files
committed
cleanup request context hack
1 parent 989d218 commit 054a301

File tree

1 file changed

+45
-61
lines changed

1 file changed

+45
-61
lines changed

coderd/workspaceapps/db_test.go

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -292,11 +292,11 @@ func Test_ResolveRequest(t *testing.T) {
292292
rw := httptest.NewRecorder()
293293
r := httptest.NewRequest("GET", "/app", nil)
294294
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
295-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
295+
r.RemoteAddr = auditableIP
296296
r.Header.Set("User-Agent", auditableUA)
297297

298298
// Try resolving the request without a token.
299-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
299+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
300300
Logger: api.Logger,
301301
SignedTokenProvider: api.WorkspaceAppsProvider,
302302
DashboardURL: api.AccessURL,
@@ -357,9 +357,9 @@ func Test_ResolveRequest(t *testing.T) {
357357
rw = httptest.NewRecorder()
358358
r = httptest.NewRequest("GET", "/app", nil)
359359
r.AddCookie(cookie)
360-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
360+
r.RemoteAddr = auditableIP
361361

362-
secondToken, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
362+
secondToken, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
363363
Logger: api.Logger,
364364
SignedTokenProvider: api.WorkspaceAppsProvider,
365365
DashboardURL: api.AccessURL,
@@ -398,9 +398,9 @@ func Test_ResolveRequest(t *testing.T) {
398398
rw := httptest.NewRecorder()
399399
r := httptest.NewRequest("GET", "/app", nil)
400400
r.Header.Set(codersdk.SessionTokenHeader, secondUserClient.SessionToken())
401-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
401+
r.RemoteAddr = auditableIP
402402

403-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
403+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
404404
Logger: api.Logger,
405405
SignedTokenProvider: api.WorkspaceAppsProvider,
406406
DashboardURL: api.AccessURL,
@@ -454,8 +454,8 @@ func Test_ResolveRequest(t *testing.T) {
454454
t.Log("app", app)
455455
rw := httptest.NewRecorder()
456456
r := httptest.NewRequest("GET", "/app", nil)
457-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
458-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
457+
r.RemoteAddr = auditableIP
458+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
459459
Logger: api.Logger,
460460
SignedTokenProvider: api.WorkspaceAppsProvider,
461461
DashboardURL: api.AccessURL,
@@ -509,8 +509,8 @@ func Test_ResolveRequest(t *testing.T) {
509509
auditableIP := randomIPv6(t)
510510
rw := httptest.NewRecorder()
511511
r := httptest.NewRequest("GET", "/app", nil)
512-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
513-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
512+
r.RemoteAddr = auditableIP
513+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
514514
Logger: api.Logger,
515515
SignedTokenProvider: api.WorkspaceAppsProvider,
516516
DashboardURL: api.AccessURL,
@@ -594,9 +594,9 @@ func Test_ResolveRequest(t *testing.T) {
594594
rw := httptest.NewRecorder()
595595
r := httptest.NewRequest("GET", "/app", nil)
596596
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
597-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
597+
r.RemoteAddr = auditableIP
598598

599-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
599+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
600600
Logger: api.Logger,
601601
SignedTokenProvider: api.WorkspaceAppsProvider,
602602
DashboardURL: api.AccessURL,
@@ -681,11 +681,11 @@ func Test_ResolveRequest(t *testing.T) {
681681
Name: codersdk.SignedAppTokenCookie,
682682
Value: badTokenStr,
683683
})
684-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
684+
r.RemoteAddr = auditableIP
685685

686686
// Even though the token is invalid, we should still perform request
687687
// resolution without failure since we'll just ignore the bad token.
688-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
688+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
689689
Logger: api.Logger,
690690
SignedTokenProvider: api.WorkspaceAppsProvider,
691691
DashboardURL: api.AccessURL,
@@ -740,9 +740,9 @@ func Test_ResolveRequest(t *testing.T) {
740740
rw := httptest.NewRecorder()
741741
r := httptest.NewRequest("GET", "/app", nil)
742742
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
743-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
743+
r.RemoteAddr = auditableIP
744744

745-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
745+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
746746
Logger: api.Logger,
747747
SignedTokenProvider: api.WorkspaceAppsProvider,
748748
DashboardURL: api.AccessURL,
@@ -778,9 +778,9 @@ func Test_ResolveRequest(t *testing.T) {
778778
rw := httptest.NewRecorder()
779779
r := httptest.NewRequest("GET", "/", nil)
780780
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
781-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
781+
r.RemoteAddr = auditableIP
782782

783-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
783+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
784784
Logger: api.Logger,
785785
SignedTokenProvider: api.WorkspaceAppsProvider,
786786
DashboardURL: api.AccessURL,
@@ -825,9 +825,9 @@ func Test_ResolveRequest(t *testing.T) {
825825
rw := httptest.NewRecorder()
826826
r := httptest.NewRequest("GET", "/", nil)
827827
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
828-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
828+
r.RemoteAddr = auditableIP
829829

830-
_, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
830+
_, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
831831
Logger: api.Logger,
832832
SignedTokenProvider: api.WorkspaceAppsProvider,
833833
DashboardURL: api.AccessURL,
@@ -864,9 +864,9 @@ func Test_ResolveRequest(t *testing.T) {
864864
rw := httptest.NewRecorder()
865865
r := httptest.NewRequest("GET", "/", nil)
866866
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
867-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
867+
r.RemoteAddr = auditableIP
868868

869-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
869+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
870870
Logger: api.Logger,
871871
SignedTokenProvider: api.WorkspaceAppsProvider,
872872
DashboardURL: api.AccessURL,
@@ -905,9 +905,9 @@ func Test_ResolveRequest(t *testing.T) {
905905
rw := httptest.NewRecorder()
906906
r := httptest.NewRequest("GET", "/app", nil)
907907
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
908-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
908+
r.RemoteAddr = auditableIP
909909

910-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
910+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
911911
Logger: api.Logger,
912912
SignedTokenProvider: api.WorkspaceAppsProvider,
913913
DashboardURL: api.AccessURL,
@@ -955,9 +955,9 @@ func Test_ResolveRequest(t *testing.T) {
955955
rw := httptest.NewRecorder()
956956
r := httptest.NewRequest("GET", "/app", nil)
957957
r.Header.Set(codersdk.SessionTokenHeader, secondUserClient.SessionToken())
958-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
958+
r.RemoteAddr = auditableIP
959959

960-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
960+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
961961
Logger: api.Logger,
962962
SignedTokenProvider: api.WorkspaceAppsProvider,
963963
DashboardURL: api.AccessURL,
@@ -996,9 +996,9 @@ func Test_ResolveRequest(t *testing.T) {
996996
rw := httptest.NewRecorder()
997997
r := httptest.NewRequest("GET", "/app", nil)
998998
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
999-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
999+
r.RemoteAddr = auditableIP
10001000

1001-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1001+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
10021002
Logger: api.Logger,
10031003
SignedTokenProvider: api.WorkspaceAppsProvider,
10041004
DashboardURL: api.AccessURL,
@@ -1030,9 +1030,9 @@ func Test_ResolveRequest(t *testing.T) {
10301030
r := httptest.NewRequest("GET", "/some-path", nil)
10311031
// Should not be used as the hostname in the redirect URI.
10321032
r.Host = "app.com"
1033-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1033+
r.RemoteAddr = auditableIP
10341034

1035-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1035+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
10361036
Logger: api.Logger,
10371037
SignedTokenProvider: api.WorkspaceAppsProvider,
10381038
DashboardURL: api.AccessURL,
@@ -1092,9 +1092,9 @@ func Test_ResolveRequest(t *testing.T) {
10921092
rw := httptest.NewRecorder()
10931093
r := httptest.NewRequest("GET", "/app", nil)
10941094
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
1095-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1095+
r.RemoteAddr = auditableIP
10961096

1097-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1097+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
10981098
Logger: api.Logger,
10991099
SignedTokenProvider: api.WorkspaceAppsProvider,
11001100
DashboardURL: api.AccessURL,
@@ -1160,9 +1160,9 @@ func Test_ResolveRequest(t *testing.T) {
11601160
rw := httptest.NewRecorder()
11611161
r := httptest.NewRequest("GET", "/app", nil)
11621162
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
1163-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1163+
r.RemoteAddr = auditableIP
11641164

1165-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1165+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
11661166
Logger: api.Logger,
11671167
SignedTokenProvider: api.WorkspaceAppsProvider,
11681168
DashboardURL: api.AccessURL,
@@ -1225,9 +1225,9 @@ func Test_ResolveRequest(t *testing.T) {
12251225
rw := httptest.NewRecorder()
12261226
r := httptest.NewRequest("GET", "/app", nil)
12271227
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
1228-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1228+
r.RemoteAddr = auditableIP
12291229

1230-
token, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1230+
token, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
12311231
Logger: api.Logger,
12321232
SignedTokenProvider: api.WorkspaceAppsProvider,
12331233
DashboardURL: api.AccessURL,
@@ -1270,9 +1270,9 @@ func Test_ResolveRequest(t *testing.T) {
12701270
rw := httptest.NewRecorder()
12711271
r := httptest.NewRequest("GET", "/app", nil)
12721272
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
1273-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1273+
r.RemoteAddr = auditableIP
12741274

1275-
_, ok := workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1275+
_, ok := workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
12761276
Logger: api.Logger,
12771277
SignedTokenProvider: api.WorkspaceAppsProvider,
12781278
DashboardURL: api.AccessURL,
@@ -1299,9 +1299,9 @@ func Test_ResolveRequest(t *testing.T) {
12991299
rw = httptest.NewRecorder()
13001300
r = httptest.NewRequest("GET", "/app", nil)
13011301
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
1302-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1302+
r.RemoteAddr = auditableIP
13031303

1304-
_, ok = workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1304+
_, ok = workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
13051305
Logger: api.Logger,
13061306
SignedTokenProvider: api.WorkspaceAppsProvider,
13071307
DashboardURL: api.AccessURL,
@@ -1321,7 +1321,7 @@ func Test_ResolveRequest(t *testing.T) {
13211321
r.RemoteAddr = auditableIP
13221322

13231323
sessionTimeoutTokenProvider := signedTokenProviderWithAuditor(t, api.WorkspaceAppsProvider, auditor, 0)
1324-
_, ok = workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1324+
_, ok = workspaceappsResolveRequest(t, nil, rw, r, workspaceapps.ResolveRequestOptions{
13251325
Logger: api.Logger,
13261326
SignedTokenProvider: sessionTimeoutTokenProvider,
13271327
DashboardURL: api.AccessURL,
@@ -1349,9 +1349,9 @@ func Test_ResolveRequest(t *testing.T) {
13491349
rw = httptest.NewRecorder()
13501350
r = httptest.NewRequest("GET", "/app", nil)
13511351
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
1352-
r = requestWithAuditorAndRemoteAddr(r, auditor, auditableIP)
1352+
r.RemoteAddr = auditableIP
13531353

1354-
_, ok = workspaceappsResolveRequest(t, rw, r, workspaceapps.ResolveRequestOptions{
1354+
_, ok = workspaceappsResolveRequest(t, auditor, rw, r, workspaceapps.ResolveRequestOptions{
13551355
Logger: api.Logger,
13561356
SignedTokenProvider: api.WorkspaceAppsProvider,
13571357
DashboardURL: api.AccessURL,
@@ -1377,18 +1377,6 @@ func Test_ResolveRequest(t *testing.T) {
13771377
})
13781378
}
13791379

1380-
type auditorKey int
1381-
1382-
const auditorKey0 auditorKey = iota
1383-
1384-
func requestWithAuditorAndRemoteAddr(r *http.Request, auditor audit.Auditor, remoteAddr string) *http.Request {
1385-
ctx := r.Context()
1386-
ctx = context.WithValue(ctx, auditorKey0, auditor)
1387-
rr := r.WithContext(ctx)
1388-
rr.RemoteAddr = remoteAddr
1389-
return rr
1390-
}
1391-
13921380
func randomIPv6(t testing.TB) string {
13931381
t.Helper()
13941382

@@ -1401,13 +1389,9 @@ func randomIPv6(t testing.TB) string {
14011389
buf[6], buf[7], buf[8], buf[9], buf[10], buf[11])
14021390
}
14031391

1404-
func workspaceappsResolveRequest(t testing.TB, w http.ResponseWriter, r *http.Request, opts workspaceapps.ResolveRequestOptions) (token *workspaceapps.SignedToken, ok bool) {
1392+
func workspaceappsResolveRequest(t testing.TB, auditor audit.Auditor, w http.ResponseWriter, r *http.Request, opts workspaceapps.ResolveRequestOptions) (token *workspaceapps.SignedToken, ok bool) {
14051393
t.Helper()
1406-
ctx := r.Context()
1407-
auditorValue := ctx.Value(auditorKey0)
1408-
if opts.SignedTokenProvider != nil && auditorValue != nil {
1409-
auditor, ok := auditorValue.(audit.Auditor)
1410-
require.True(t, ok, "auditor is not an audit.Auditor")
1394+
if opts.SignedTokenProvider != nil && auditor != nil {
14111395
opts.SignedTokenProvider = signedTokenProviderWithAuditor(t, opts.SignedTokenProvider, auditor, time.Hour)
14121396
}
14131397

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy