Skip to content

Commit ccf6f4e

Browse files
authored
chore: Use contexts with timeout in coderd tests (#3381)
1 parent 690ba66 commit ccf6f4e

18 files changed

+1082
-357
lines changed

coderd/coderd_test.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ func TestMain(m *testing.M) {
5050
func TestBuildInfo(t *testing.T) {
5151
t.Parallel()
5252
client := coderdtest.New(t, nil)
53-
buildInfo, err := client.BuildInfo(context.Background())
53+
54+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
55+
defer cancel()
56+
57+
buildInfo, err := client.BuildInfo(ctx)
5458
require.NoError(t, err)
5559
require.Equal(t, buildinfo.ExternalURL(), buildInfo.ExternalURL, "external URL")
5660
require.Equal(t, buildinfo.Version(), buildInfo.Version, "version")
@@ -59,10 +63,10 @@ func TestBuildInfo(t *testing.T) {
5963
// TestAuthorizeAllEndpoints will check `authorize` is called on every endpoint registered.
6064
func TestAuthorizeAllEndpoints(t *testing.T) {
6165
t.Parallel()
62-
var (
63-
ctx = context.Background()
64-
authorizer = &fakeAuthorizer{}
65-
)
66+
authorizer := &fakeAuthorizer{}
67+
68+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
69+
defer cancel()
6670

6771
// This function was taken from coderdtest.newWithAPI. It is intentionally
6872
// copied to avoid exposing the API to other tests in coderd. Tests should
@@ -84,7 +88,7 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
8488
require.NoError(t, err)
8589
db = database.New(sqlDB)
8690

87-
pubsub, err = database.NewPubsub(context.Background(), sqlDB, connectionURL)
91+
pubsub, err = database.NewPubsub(ctx, sqlDB, connectionURL)
8892
require.NoError(t, err)
8993
t.Cleanup(func() {
9094
_ = pubsub.Close()
@@ -94,8 +98,8 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
9498
tickerCh := make(chan time.Time)
9599
t.Cleanup(func() { close(tickerCh) })
96100

97-
ctx, cancelFunc := context.WithCancel(context.Background())
98-
defer t.Cleanup(cancelFunc) // Defer to ensure cancelFunc is executed first.
101+
ctx, cancel := context.WithCancel(ctx) // Shadowed to avoid mixing contexts.
102+
defer t.Cleanup(cancel) // Defer to ensure cancelFunc is executed first.
99103

100104
lifecycleExecutor := executor.New(
101105
ctx,
@@ -513,7 +517,7 @@ func TestAuthorizeAllEndpoints(t *testing.T) {
513517
route = strings.ReplaceAll(route, "{scope}", string(templateParam.Scope))
514518
route = strings.ReplaceAll(route, "{id}", templateParam.ScopeID.String())
515519

516-
resp, err := client.Request(context.Background(), method, route, nil)
520+
resp, err := client.Request(ctx, method, route, nil)
517521
require.NoError(t, err, "do req")
518522
body, _ := io.ReadAll(resp.Body)
519523
t.Logf("Response Body: %q", string(body))

coderd/files_test.go

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
"github.com/coder/coder/coderd/coderdtest"
1111
"github.com/coder/coder/codersdk"
12+
"github.com/coder/coder/testutil"
1213
)
1314

1415
func TestPostFiles(t *testing.T) {
@@ -17,26 +18,38 @@ func TestPostFiles(t *testing.T) {
1718
t.Parallel()
1819
client := coderdtest.New(t, nil)
1920
_ = coderdtest.CreateFirstUser(t, client)
20-
_, err := client.Upload(context.Background(), "bad", []byte{'a'})
21+
22+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
23+
defer cancel()
24+
25+
_, err := client.Upload(ctx, "bad", []byte{'a'})
2126
require.Error(t, err)
2227
})
2328

2429
t.Run("Insert", func(t *testing.T) {
2530
t.Parallel()
2631
client := coderdtest.New(t, nil)
2732
_ = coderdtest.CreateFirstUser(t, client)
28-
_, err := client.Upload(context.Background(), codersdk.ContentTypeTar, make([]byte, 1024))
33+
34+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
35+
defer cancel()
36+
37+
_, err := client.Upload(ctx, codersdk.ContentTypeTar, make([]byte, 1024))
2938
require.NoError(t, err)
3039
})
3140

3241
t.Run("InsertAlreadyExists", func(t *testing.T) {
3342
t.Parallel()
3443
client := coderdtest.New(t, nil)
3544
_ = coderdtest.CreateFirstUser(t, client)
45+
46+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
47+
defer cancel()
48+
3649
data := make([]byte, 1024)
37-
_, err := client.Upload(context.Background(), codersdk.ContentTypeTar, data)
50+
_, err := client.Upload(ctx, codersdk.ContentTypeTar, data)
3851
require.NoError(t, err)
39-
_, err = client.Upload(context.Background(), codersdk.ContentTypeTar, data)
52+
_, err = client.Upload(ctx, codersdk.ContentTypeTar, data)
4053
require.NoError(t, err)
4154
})
4255
}
@@ -47,7 +60,11 @@ func TestDownload(t *testing.T) {
4760
t.Parallel()
4861
client := coderdtest.New(t, nil)
4962
_ = coderdtest.CreateFirstUser(t, client)
50-
_, _, err := client.Download(context.Background(), "something")
63+
64+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
65+
defer cancel()
66+
67+
_, _, err := client.Download(ctx, "something")
5168
var apiErr *codersdk.Error
5269
require.ErrorAs(t, err, &apiErr)
5370
require.Equal(t, http.StatusNotFound, apiErr.StatusCode())
@@ -57,9 +74,13 @@ func TestDownload(t *testing.T) {
5774
t.Parallel()
5875
client := coderdtest.New(t, nil)
5976
_ = coderdtest.CreateFirstUser(t, client)
60-
resp, err := client.Upload(context.Background(), codersdk.ContentTypeTar, make([]byte, 1024))
77+
78+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
79+
defer cancel()
80+
81+
resp, err := client.Upload(ctx, codersdk.ContentTypeTar, make([]byte, 1024))
6182
require.NoError(t, err)
62-
data, contentType, err := client.Download(context.Background(), resp.Hash)
83+
data, contentType, err := client.Download(ctx, resp.Hash)
6384
require.NoError(t, err)
6485
require.Len(t, data, 1024)
6586
require.Equal(t, codersdk.ContentTypeTar, contentType)

coderd/gitsshkey_test.go

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,59 +12,75 @@ import (
1212
"github.com/coder/coder/codersdk"
1313
"github.com/coder/coder/provisioner/echo"
1414
"github.com/coder/coder/provisionersdk/proto"
15+
"github.com/coder/coder/testutil"
1516
)
1617

1718
func TestGitSSHKey(t *testing.T) {
1819
t.Parallel()
1920
t.Run("None", func(t *testing.T) {
2021
t.Parallel()
21-
ctx := context.Background()
2222
client := coderdtest.New(t, nil)
2323
res := coderdtest.CreateFirstUser(t, client)
24+
25+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
26+
defer cancel()
27+
2428
key, err := client.GitSSHKey(ctx, res.UserID.String())
2529
require.NoError(t, err)
2630
require.NotEmpty(t, key.PublicKey)
2731
})
2832
t.Run("Ed25519", func(t *testing.T) {
2933
t.Parallel()
30-
ctx := context.Background()
3134
client := coderdtest.New(t, &coderdtest.Options{
3235
SSHKeygenAlgorithm: gitsshkey.AlgorithmEd25519,
3336
})
3437
res := coderdtest.CreateFirstUser(t, client)
38+
39+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
40+
defer cancel()
41+
3542
key, err := client.GitSSHKey(ctx, res.UserID.String())
3643
require.NoError(t, err)
3744
require.NotEmpty(t, key.PublicKey)
3845
})
3946
t.Run("ECDSA", func(t *testing.T) {
4047
t.Parallel()
41-
ctx := context.Background()
4248
client := coderdtest.New(t, &coderdtest.Options{
4349
SSHKeygenAlgorithm: gitsshkey.AlgorithmECDSA,
4450
})
4551
res := coderdtest.CreateFirstUser(t, client)
52+
53+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
54+
defer cancel()
55+
4656
key, err := client.GitSSHKey(ctx, res.UserID.String())
4757
require.NoError(t, err)
4858
require.NotEmpty(t, key.PublicKey)
4959
})
5060
t.Run("RSA4096", func(t *testing.T) {
5161
t.Parallel()
52-
ctx := context.Background()
5362
client := coderdtest.New(t, &coderdtest.Options{
5463
SSHKeygenAlgorithm: gitsshkey.AlgorithmRSA4096,
5564
})
5665
res := coderdtest.CreateFirstUser(t, client)
66+
67+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
68+
defer cancel()
69+
5770
key, err := client.GitSSHKey(ctx, res.UserID.String())
5871
require.NoError(t, err)
5972
require.NotEmpty(t, key.PublicKey)
6073
})
6174
t.Run("Regenerate", func(t *testing.T) {
6275
t.Parallel()
63-
ctx := context.Background()
6476
client := coderdtest.New(t, &coderdtest.Options{
6577
SSHKeygenAlgorithm: gitsshkey.AlgorithmEd25519,
6678
})
6779
res := coderdtest.CreateFirstUser(t, client)
80+
81+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
82+
defer cancel()
83+
6884
key1, err := client.GitSSHKey(ctx, res.UserID.String())
6985
require.NoError(t, err)
7086
require.NotEmpty(t, key1.PublicKey)
@@ -112,7 +128,10 @@ func TestAgentGitSSHKey(t *testing.T) {
112128
agentClient := codersdk.New(client.URL)
113129
agentClient.SessionToken = authToken
114130

115-
agentKey, err := agentClient.AgentGitSSHKey(context.Background())
131+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
132+
defer cancel()
133+
134+
agentKey, err := agentClient.AgentGitSSHKey(ctx)
116135
require.NoError(t, err)
117136
require.NotEmpty(t, agentKey.PrivateKey)
118137
}

coderd/organizations_test.go

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,18 @@ import (
99

1010
"github.com/coder/coder/coderd/coderdtest"
1111
"github.com/coder/coder/codersdk"
12+
"github.com/coder/coder/testutil"
1213
)
1314

1415
func TestOrganizationsByUser(t *testing.T) {
1516
t.Parallel()
1617
client := coderdtest.New(t, nil)
1718
_ = coderdtest.CreateFirstUser(t, client)
18-
orgs, err := client.OrganizationsByUser(context.Background(), codersdk.Me)
19+
20+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
21+
defer cancel()
22+
23+
orgs, err := client.OrganizationsByUser(ctx, codersdk.Me)
1924
require.NoError(t, err)
2025
require.NotNil(t, orgs)
2126
require.Len(t, orgs, 1)
@@ -27,7 +32,11 @@ func TestOrganizationByUserAndName(t *testing.T) {
2732
t.Parallel()
2833
client := coderdtest.New(t, nil)
2934
coderdtest.CreateFirstUser(t, client)
30-
_, err := client.OrganizationByName(context.Background(), codersdk.Me, "nothing")
35+
36+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
37+
defer cancel()
38+
39+
_, err := client.OrganizationByName(ctx, codersdk.Me, "nothing")
3140
var apiErr *codersdk.Error
3241
require.ErrorAs(t, err, &apiErr)
3342
require.Equal(t, http.StatusNotFound, apiErr.StatusCode())
@@ -38,11 +47,15 @@ func TestOrganizationByUserAndName(t *testing.T) {
3847
client := coderdtest.New(t, nil)
3948
first := coderdtest.CreateFirstUser(t, client)
4049
other := coderdtest.CreateAnotherUser(t, client, first.OrganizationID)
41-
org, err := client.CreateOrganization(context.Background(), codersdk.CreateOrganizationRequest{
50+
51+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
52+
defer cancel()
53+
54+
org, err := client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
4255
Name: "another",
4356
})
4457
require.NoError(t, err)
45-
_, err = other.OrganizationByName(context.Background(), codersdk.Me, org.Name)
58+
_, err = other.OrganizationByName(ctx, codersdk.Me, org.Name)
4659
var apiErr *codersdk.Error
4760
require.ErrorAs(t, err, &apiErr)
4861
require.Equal(t, http.StatusNotFound, apiErr.StatusCode())
@@ -52,9 +65,13 @@ func TestOrganizationByUserAndName(t *testing.T) {
5265
t.Parallel()
5366
client := coderdtest.New(t, nil)
5467
user := coderdtest.CreateFirstUser(t, client)
55-
org, err := client.Organization(context.Background(), user.OrganizationID)
68+
69+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
70+
defer cancel()
71+
72+
org, err := client.Organization(ctx, user.OrganizationID)
5673
require.NoError(t, err)
57-
_, err = client.OrganizationByName(context.Background(), codersdk.Me, org.Name)
74+
_, err = client.OrganizationByName(ctx, codersdk.Me, org.Name)
5875
require.NoError(t, err)
5976
})
6077
}
@@ -65,9 +82,13 @@ func TestPostOrganizationsByUser(t *testing.T) {
6582
t.Parallel()
6683
client := coderdtest.New(t, nil)
6784
user := coderdtest.CreateFirstUser(t, client)
68-
org, err := client.Organization(context.Background(), user.OrganizationID)
85+
86+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
87+
defer cancel()
88+
89+
org, err := client.Organization(ctx, user.OrganizationID)
6990
require.NoError(t, err)
70-
_, err = client.CreateOrganization(context.Background(), codersdk.CreateOrganizationRequest{
91+
_, err = client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
7192
Name: org.Name,
7293
})
7394
var apiErr *codersdk.Error
@@ -79,7 +100,11 @@ func TestPostOrganizationsByUser(t *testing.T) {
79100
t.Parallel()
80101
client := coderdtest.New(t, nil)
81102
_ = coderdtest.CreateFirstUser(t, client)
82-
_, err := client.CreateOrganization(context.Background(), codersdk.CreateOrganizationRequest{
103+
104+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
105+
defer cancel()
106+
107+
_, err := client.CreateOrganization(ctx, codersdk.CreateOrganizationRequest{
83108
Name: "new",
84109
})
85110
require.NoError(t, err)

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