Skip to content

Commit c070d74

Browse files
committed
move RandomIPv6 to testutil
1 parent 2c1536e commit c070d74

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

coderd/workspaceapps/db_test.go

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package workspaceapps_test
22

33
import (
44
"context"
5-
"crypto/rand"
65
"database/sql"
76
"encoding/json"
87
"fmt"
@@ -289,7 +288,7 @@ func Test_ResolveRequest(t *testing.T) {
289288
}).Normalize()
290289

291290
auditor := audit.NewMock()
292-
auditableIP := randomIPv6(t)
291+
auditableIP := testutil.RandomIPv6(t)
293292
auditableUA := "Tidua"
294293

295294
t.Log("app", app)
@@ -386,7 +385,7 @@ func Test_ResolveRequest(t *testing.T) {
386385
}).Normalize()
387386

388387
auditor := audit.NewMock()
389-
auditableIP := randomIPv6(t)
388+
auditableIP := testutil.RandomIPv6(t)
390389

391390
t.Log("app", app)
392391
rw := httptest.NewRecorder()
@@ -434,7 +433,7 @@ func Test_ResolveRequest(t *testing.T) {
434433
}).Normalize()
435434

436435
auditor := audit.NewMock()
437-
auditableIP := randomIPv6(t)
436+
auditableIP := testutil.RandomIPv6(t)
438437

439438
t.Log("app", app)
440439
rw := httptest.NewRecorder()
@@ -482,7 +481,7 @@ func Test_ResolveRequest(t *testing.T) {
482481
AccessMethod: "invalid",
483482
}).Normalize()
484483
auditor := audit.NewMock()
485-
auditableIP := randomIPv6(t)
484+
auditableIP := testutil.RandomIPv6(t)
486485
rw := httptest.NewRecorder()
487486
r := httptest.NewRequest("GET", "/app", nil)
488487
r.RemoteAddr = auditableIP
@@ -565,7 +564,7 @@ func Test_ResolveRequest(t *testing.T) {
565564
}).Normalize()
566565

567566
auditor := audit.NewMock()
568-
auditableIP := randomIPv6(t)
567+
auditableIP := testutil.RandomIPv6(t)
569568

570569
rw := httptest.NewRecorder()
571570
r := httptest.NewRequest("GET", "/app", nil)
@@ -640,7 +639,7 @@ func Test_ResolveRequest(t *testing.T) {
640639
}).Normalize()
641640

642641
auditor := audit.NewMock()
643-
auditableIP := randomIPv6(t)
642+
auditableIP := testutil.RandomIPv6(t)
644643

645644
rw := httptest.NewRecorder()
646645
r := httptest.NewRequest("GET", "/app", nil)
@@ -695,7 +694,7 @@ func Test_ResolveRequest(t *testing.T) {
695694
}).Normalize()
696695

697696
auditor := audit.NewMock()
698-
auditableIP := randomIPv6(t)
697+
auditableIP := testutil.RandomIPv6(t)
699698

700699
rw := httptest.NewRecorder()
701700
r := httptest.NewRequest("GET", "/app", nil)
@@ -733,7 +732,7 @@ func Test_ResolveRequest(t *testing.T) {
733732
}).Normalize()
734733

735734
auditor := audit.NewMock()
736-
auditableIP := randomIPv6(t)
735+
auditableIP := testutil.RandomIPv6(t)
737736

738737
rw := httptest.NewRecorder()
739738
r := httptest.NewRequest("GET", "/", nil)
@@ -771,7 +770,7 @@ func Test_ResolveRequest(t *testing.T) {
771770
}).Normalize()
772771

773772
auditor := audit.NewMock()
774-
auditableIP := randomIPv6(t)
773+
auditableIP := testutil.RandomIPv6(t)
775774

776775
rw := httptest.NewRecorder()
777776
r := httptest.NewRequest("GET", "/", nil)
@@ -810,7 +809,7 @@ func Test_ResolveRequest(t *testing.T) {
810809
}).Normalize()
811810

812811
auditor := audit.NewMock()
813-
auditableIP := randomIPv6(t)
812+
auditableIP := testutil.RandomIPv6(t)
814813

815814
rw := httptest.NewRecorder()
816815
r := httptest.NewRequest("GET", "/", nil)
@@ -841,7 +840,7 @@ func Test_ResolveRequest(t *testing.T) {
841840
}).Normalize()
842841

843842
auditor := audit.NewMock()
844-
auditableIP := randomIPv6(t)
843+
auditableIP := testutil.RandomIPv6(t)
845844

846845
rw := httptest.NewRecorder()
847846
r := httptest.NewRequest("GET", "/app", nil)
@@ -883,7 +882,7 @@ func Test_ResolveRequest(t *testing.T) {
883882
}).Normalize()
884883

885884
auditor := audit.NewMock()
886-
auditableIP := randomIPv6(t)
885+
auditableIP := testutil.RandomIPv6(t)
887886

888887
rw := httptest.NewRecorder()
889888
r := httptest.NewRequest("GET", "/app", nil)
@@ -916,7 +915,7 @@ func Test_ResolveRequest(t *testing.T) {
916915
}).Normalize()
917916

918917
auditor := audit.NewMock()
919-
auditableIP := randomIPv6(t)
918+
auditableIP := testutil.RandomIPv6(t)
920919

921920
rw := httptest.NewRecorder()
922921
r := httptest.NewRequest("GET", "/app", nil)
@@ -949,7 +948,7 @@ func Test_ResolveRequest(t *testing.T) {
949948
}).Normalize()
950949

951950
auditor := audit.NewMock()
952-
auditableIP := randomIPv6(t)
951+
auditableIP := testutil.RandomIPv6(t)
953952

954953
rw := httptest.NewRecorder()
955954
r := httptest.NewRequest("GET", "/some-path", nil)
@@ -1012,7 +1011,7 @@ func Test_ResolveRequest(t *testing.T) {
10121011
}).Normalize()
10131012

10141013
auditor := audit.NewMock()
1015-
auditableIP := randomIPv6(t)
1014+
auditableIP := testutil.RandomIPv6(t)
10161015

10171016
rw := httptest.NewRecorder()
10181017
r := httptest.NewRequest("GET", "/app", nil)
@@ -1075,7 +1074,7 @@ func Test_ResolveRequest(t *testing.T) {
10751074
}).Normalize()
10761075

10771076
auditor := audit.NewMock()
1078-
auditableIP := randomIPv6(t)
1077+
auditableIP := testutil.RandomIPv6(t)
10791078

10801079
rw := httptest.NewRecorder()
10811080
r := httptest.NewRequest("GET", "/app", nil)
@@ -1133,7 +1132,7 @@ func Test_ResolveRequest(t *testing.T) {
11331132
}).Normalize()
11341133

11351134
auditor := audit.NewMock()
1136-
auditableIP := randomIPv6(t)
1135+
auditableIP := testutil.RandomIPv6(t)
11371136

11381137
rw := httptest.NewRecorder()
11391138
r := httptest.NewRequest("GET", "/app", nil)
@@ -1168,7 +1167,7 @@ func Test_ResolveRequest(t *testing.T) {
11681167
}).Normalize()
11691168

11701169
auditor := audit.NewMock()
1171-
auditableIP := randomIPv6(t)
1170+
auditableIP := testutil.RandomIPv6(t)
11721171

11731172
t.Log("app", app)
11741173

@@ -1227,7 +1226,7 @@ func Test_ResolveRequest(t *testing.T) {
12271226
require.Len(t, auditor.AuditLogs(), 2, "two audit logs, session timed out")
12281227

12291228
// Fourth request, new IP produces new audit log.
1230-
auditableIP = randomIPv6(t)
1229+
auditableIP = testutil.RandomIPv6(t)
12311230
rw = httptest.NewRecorder()
12321231
r = httptest.NewRequest("GET", "/app", nil)
12331232
r.Header.Set(codersdk.SessionTokenHeader, client.SessionToken())
@@ -1248,18 +1247,6 @@ func Test_ResolveRequest(t *testing.T) {
12481247
})
12491248
}
12501249

1251-
func randomIPv6(t testing.TB) string {
1252-
t.Helper()
1253-
1254-
// 2001:db8::/32 is reserved for documentation and examples.
1255-
buf := make([]byte, 16)
1256-
_, err := rand.Read(buf)
1257-
require.NoError(t, err, "error generating random IPv6 address")
1258-
return fmt.Sprintf("2001:db8:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
1259-
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5],
1260-
buf[6], buf[7], buf[8], buf[9], buf[10], buf[11])
1261-
}
1262-
12631250
func workspaceappsResolveRequest(t testing.TB, auditor audit.Auditor, w http.ResponseWriter, r *http.Request, opts workspaceapps.ResolveRequestOptions) (token *workspaceapps.SignedToken, ok bool) {
12641251
t.Helper()
12651252
if opts.SignedTokenProvider != nil && auditor != nil {

testutil/rand.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package testutil
22

33
import (
4+
"crypto/rand"
5+
"fmt"
46
"testing"
57

68
"github.com/stretchr/testify/require"
@@ -15,3 +17,18 @@ func MustRandString(t *testing.T, n int) string {
1517
require.NoError(t, err)
1618
return s
1719
}
20+
21+
// RandomIPv6 returns a random IPv6 address in the 2001:db8::/32 range.
22+
// 2001:db8::/32 is reserved for documentation and example code.
23+
func RandomIPv6(t testing.TB) string {
24+
t.Helper()
25+
26+
buf := make([]byte, 16)
27+
_, err := rand.Read(buf)
28+
require.NoError(t, err, "generate random IPv6 address")
29+
return fmt.Sprintf(
30+
"2001:db8:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
31+
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5],
32+
buf[6], buf[7], buf[8], buf[9], buf[10], buf[11],
33+
)
34+
}

0 commit comments

Comments
 (0)