@@ -22,6 +22,7 @@ import (
22
22
"github.com/coder/coder/v2/coderd/coderdtest"
23
23
"github.com/coder/coder/v2/coderd/httpmw"
24
24
"github.com/coder/coder/v2/coderd/jwtutils"
25
+ "github.com/coder/coder/v2/coderd/tracing"
25
26
"github.com/coder/coder/v2/coderd/workspaceapps"
26
27
"github.com/coder/coder/v2/coderd/workspaceapps/appurl"
27
28
"github.com/coder/coder/v2/codersdk"
@@ -30,6 +31,13 @@ import (
30
31
"github.com/coder/coder/v2/testutil"
31
32
)
32
33
34
+ func resolveRequestWithStatusMW (w http.ResponseWriter , r * http.Request , opts workspaceapps.ResolveRequestOptions ) (token * workspaceapps.SignedToken , ok bool ) {
35
+ tracing .StatusWriterMiddleware (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
36
+ token , ok = workspaceapps .ResolveRequest (w , r , opts )
37
+ })).ServeHTTP (w , r )
38
+ return token , ok
39
+ }
40
+
33
41
func Test_ResolveRequest (t * testing.T ) {
34
42
t .Parallel ()
35
43
@@ -259,7 +267,7 @@ func Test_ResolveRequest(t *testing.T) {
259
267
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
260
268
261
269
// Try resolving the request without a token.
262
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
270
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
263
271
Logger : api .Logger ,
264
272
SignedTokenProvider : api .WorkspaceAppsProvider ,
265
273
DashboardURL : api .AccessURL ,
@@ -308,7 +316,7 @@ func Test_ResolveRequest(t *testing.T) {
308
316
r = httptest .NewRequest ("GET" , "/app" , nil )
309
317
r .AddCookie (cookie )
310
318
311
- secondToken , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
319
+ secondToken , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
312
320
Logger : api .Logger ,
313
321
SignedTokenProvider : api .WorkspaceAppsProvider ,
314
322
DashboardURL : api .AccessURL ,
@@ -344,7 +352,7 @@ func Test_ResolveRequest(t *testing.T) {
344
352
r := httptest .NewRequest ("GET" , "/app" , nil )
345
353
r .Header .Set (codersdk .SessionTokenHeader , secondUserClient .SessionToken ())
346
354
347
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
355
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
348
356
Logger : api .Logger ,
349
357
SignedTokenProvider : api .WorkspaceAppsProvider ,
350
358
DashboardURL : api .AccessURL ,
@@ -383,7 +391,7 @@ func Test_ResolveRequest(t *testing.T) {
383
391
t .Log ("app" , app )
384
392
rw := httptest .NewRecorder ()
385
393
r := httptest .NewRequest ("GET" , "/app" , nil )
386
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
394
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
387
395
Logger : api .Logger ,
388
396
SignedTokenProvider : api .WorkspaceAppsProvider ,
389
397
DashboardURL : api .AccessURL ,
@@ -421,7 +429,7 @@ func Test_ResolveRequest(t *testing.T) {
421
429
}).Normalize ()
422
430
rw := httptest .NewRecorder ()
423
431
r := httptest .NewRequest ("GET" , "/app" , nil )
424
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
432
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
425
433
Logger : api .Logger ,
426
434
SignedTokenProvider : api .WorkspaceAppsProvider ,
427
435
DashboardURL : api .AccessURL ,
@@ -502,7 +510,7 @@ func Test_ResolveRequest(t *testing.T) {
502
510
r := httptest .NewRequest ("GET" , "/app" , nil )
503
511
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
504
512
505
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
513
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
506
514
Logger : api .Logger ,
507
515
SignedTokenProvider : api .WorkspaceAppsProvider ,
508
516
DashboardURL : api .AccessURL ,
@@ -576,7 +584,7 @@ func Test_ResolveRequest(t *testing.T) {
576
584
577
585
// Even though the token is invalid, we should still perform request
578
586
// resolution without failure since we'll just ignore the bad token.
579
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
587
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
580
588
Logger : api .Logger ,
581
589
SignedTokenProvider : api .WorkspaceAppsProvider ,
582
590
DashboardURL : api .AccessURL ,
@@ -618,7 +626,7 @@ func Test_ResolveRequest(t *testing.T) {
618
626
r := httptest .NewRequest ("GET" , "/app" , nil )
619
627
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
620
628
621
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
629
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
622
630
Logger : api .Logger ,
623
631
SignedTokenProvider : api .WorkspaceAppsProvider ,
624
632
DashboardURL : api .AccessURL ,
@@ -646,7 +654,7 @@ func Test_ResolveRequest(t *testing.T) {
646
654
r := httptest .NewRequest ("GET" , "/" , nil )
647
655
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
648
656
649
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
657
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
650
658
Logger : api .Logger ,
651
659
SignedTokenProvider : api .WorkspaceAppsProvider ,
652
660
DashboardURL : api .AccessURL ,
@@ -675,7 +683,7 @@ func Test_ResolveRequest(t *testing.T) {
675
683
r := httptest .NewRequest ("GET" , "/" , nil )
676
684
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
677
685
678
- _ , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
686
+ _ , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
679
687
Logger : api .Logger ,
680
688
SignedTokenProvider : api .WorkspaceAppsProvider ,
681
689
DashboardURL : api .AccessURL ,
@@ -708,7 +716,7 @@ func Test_ResolveRequest(t *testing.T) {
708
716
r := httptest .NewRequest ("GET" , "/" , nil )
709
717
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
710
718
711
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
719
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
712
720
Logger : api .Logger ,
713
721
SignedTokenProvider : api .WorkspaceAppsProvider ,
714
722
DashboardURL : api .AccessURL ,
@@ -733,7 +741,7 @@ func Test_ResolveRequest(t *testing.T) {
733
741
r := httptest .NewRequest ("GET" , "/app" , nil )
734
742
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
735
743
736
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
744
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
737
745
Logger : api .Logger ,
738
746
SignedTokenProvider : api .WorkspaceAppsProvider ,
739
747
DashboardURL : api .AccessURL ,
@@ -767,7 +775,7 @@ func Test_ResolveRequest(t *testing.T) {
767
775
r := httptest .NewRequest ("GET" , "/app" , nil )
768
776
r .Header .Set (codersdk .SessionTokenHeader , secondUserClient .SessionToken ())
769
777
770
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
778
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
771
779
Logger : api .Logger ,
772
780
SignedTokenProvider : api .WorkspaceAppsProvider ,
773
781
DashboardURL : api .AccessURL ,
@@ -794,7 +802,7 @@ func Test_ResolveRequest(t *testing.T) {
794
802
r := httptest .NewRequest ("GET" , "/app" , nil )
795
803
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
796
804
797
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
805
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
798
806
Logger : api .Logger ,
799
807
SignedTokenProvider : api .WorkspaceAppsProvider ,
800
808
DashboardURL : api .AccessURL ,
@@ -823,7 +831,7 @@ func Test_ResolveRequest(t *testing.T) {
823
831
// Should not be used as the hostname in the redirect URI.
824
832
r .Host = "app.com"
825
833
826
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
834
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
827
835
Logger : api .Logger ,
828
836
SignedTokenProvider : api .WorkspaceAppsProvider ,
829
837
DashboardURL : api .AccessURL ,
@@ -880,7 +888,7 @@ func Test_ResolveRequest(t *testing.T) {
880
888
r := httptest .NewRequest ("GET" , "/app" , nil )
881
889
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
882
890
883
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
891
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
884
892
Logger : api .Logger ,
885
893
SignedTokenProvider : api .WorkspaceAppsProvider ,
886
894
DashboardURL : api .AccessURL ,
@@ -937,7 +945,7 @@ func Test_ResolveRequest(t *testing.T) {
937
945
r := httptest .NewRequest ("GET" , "/app" , nil )
938
946
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
939
947
940
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
948
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
941
949
Logger : api .Logger ,
942
950
SignedTokenProvider : api .WorkspaceAppsProvider ,
943
951
DashboardURL : api .AccessURL ,
@@ -989,7 +997,7 @@ func Test_ResolveRequest(t *testing.T) {
989
997
r := httptest .NewRequest ("GET" , "/app" , nil )
990
998
r .Header .Set (codersdk .SessionTokenHeader , client .SessionToken ())
991
999
992
- token , ok := workspaceapps . ResolveRequest (rw , r , workspaceapps.ResolveRequestOptions {
1000
+ token , ok := resolveRequestWithStatusMW (rw , r , workspaceapps.ResolveRequestOptions {
993
1001
Logger : api .Logger ,
994
1002
SignedTokenProvider : api .WorkspaceAppsProvider ,
995
1003
DashboardURL : api .AccessURL ,
0 commit comments