Skip to content

Commit 9cd8b43

Browse files
committed
Remove Server struct from coderdtest
1 parent 9e04a0e commit 9cd8b43

19 files changed

+361
-315
lines changed

.golangci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ linters-settings:
100100
# - whyNoLint
101101
# - wrapperFunc
102102
# - yodaStyleExpr
103+
settings:
104+
ruleguard:
105+
failOn: all
106+
rules: rules.go
103107

104108
goimports:
105109
local-prefixes: coder.com,cdr.dev,go.coder.com,github.com/cdr,github.com/coder

coderd/coderdtest/coderdtest.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"testing"
1212
"time"
1313

14+
"github.com/google/uuid"
1415
"github.com/moby/moby/pkg/namesgenerator"
1516
"github.com/stretchr/testify/require"
1617

@@ -29,7 +30,7 @@ import (
2930

3031
// New constructs a new coderd test instance. This returned Server
3132
// should contain no side-effects.
32-
func New(t *testing.T) Server {
33+
func New(t *testing.T) *codersdk.Client {
3334
// This can be hotswapped for a live database instance.
3435
db := databasefake.New()
3536
pubsub := database.NewPubsubInMemory()
@@ -63,10 +64,7 @@ func New(t *testing.T) Server {
6364
require.NoError(t, err)
6465
t.Cleanup(srv.Close)
6566

66-
return Server{
67-
Client: codersdk.New(serverURL),
68-
URL: serverURL,
69-
}
67+
return codersdk.New(serverURL)
7068
}
7169

7270
// Server represents a test instance of coderd.
@@ -169,6 +167,17 @@ func AwaitProjectVersionImported(t *testing.T, client *codersdk.Client, organiza
169167
return projectVersion
170168
}
171169

170+
// NewWorkspace creates a workspace for the user and project provided.
171+
// A random name is generated for it.
172+
func NewWorkspace(t *testing.T, client *codersdk.Client, user string, projectID uuid.UUID) coderd.Workspace {
173+
workspace, err := client.CreateWorkspace(context.Background(), user, coderd.CreateWorkspaceRequest{
174+
ProjectID: projectID,
175+
Name: randomUsername(),
176+
})
177+
require.NoError(t, err)
178+
return workspace
179+
}
180+
172181
func randomUsername() string {
173182
return strings.ReplaceAll(namesgenerator.GetRandomName(0), "_", "-")
174183
}

coderd/coderdtest/coderdtest_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func TestMain(m *testing.M) {
1414

1515
func TestNew(t *testing.T) {
1616
t.Parallel()
17-
server := coderdtest.New(t)
18-
_ = coderdtest.NewInitialUser(t, server.Client)
19-
_ = coderdtest.NewProvisionerDaemon(t, server.Client)
17+
client := coderdtest.New(t)
18+
_ = coderdtest.NewInitialUser(t, client)
19+
_ = coderdtest.NewProvisionerDaemon(t, client)
2020
}

coderd/projects.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func (api *api) projects(rw http.ResponseWriter, r *http.Request) {
4242
projects, err := api.Database.GetProjectsByOrganizationIDs(r.Context(), organizationIDs)
4343
if errors.Is(err, sql.ErrNoRows) {
4444
err = nil
45+
projects = []database.Project{}
4546
}
4647
if err != nil {
4748
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
@@ -59,6 +60,7 @@ func (api *api) projectsByOrganization(rw http.ResponseWriter, r *http.Request)
5960
projects, err := api.Database.GetProjectsByOrganizationIDs(r.Context(), []string{organization.ID})
6061
if errors.Is(err, sql.ErrNoRows) {
6162
err = nil
63+
projects = []database.Project{}
6264
}
6365
if err != nil {
6466
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{

coderd/projects_test.go

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ package coderd_test
22

33
import (
44
"context"
5+
"net/http"
56
"testing"
67

78
"github.com/stretchr/testify/require"
89

910
"github.com/coder/coder/coderd"
1011
"github.com/coder/coder/coderd/coderdtest"
12+
"github.com/coder/coder/codersdk"
1113
"github.com/coder/coder/database"
1214
)
1315

@@ -16,20 +18,20 @@ func TestProjects(t *testing.T) {
1618

1719
t.Run("ListEmpty", func(t *testing.T) {
1820
t.Parallel()
19-
server := coderdtest.New(t)
20-
_ = coderdtest.NewInitialUser(t, server.Client)
21-
projects, err := server.Client.Projects(context.Background(), "")
21+
client := coderdtest.New(t)
22+
_ = coderdtest.NewInitialUser(t, client)
23+
projects, err := client.Projects(context.Background(), "")
2224
require.NoError(t, err)
2325
require.NotNil(t, projects)
2426
require.Len(t, projects, 0)
2527
})
2628

2729
t.Run("List", func(t *testing.T) {
2830
t.Parallel()
29-
server := coderdtest.New(t)
30-
user := coderdtest.NewInitialUser(t, server.Client)
31-
_ = coderdtest.NewProject(t, server.Client, user.Organization)
32-
projects, err := server.Client.Projects(context.Background(), "")
31+
client := coderdtest.New(t)
32+
user := coderdtest.NewInitialUser(t, client)
33+
_ = coderdtest.NewProject(t, client, user.Organization)
34+
projects, err := client.Projects(context.Background(), "")
3335
require.NoError(t, err)
3436
require.Len(t, projects, 1)
3537
})
@@ -39,20 +41,20 @@ func TestProjectsByOrganization(t *testing.T) {
3941
t.Parallel()
4042
t.Run("ListEmpty", func(t *testing.T) {
4143
t.Parallel()
42-
server := coderdtest.New(t)
43-
user := coderdtest.NewInitialUser(t, server.Client)
44-
projects, err := server.Client.Projects(context.Background(), user.Organization)
44+
client := coderdtest.New(t)
45+
user := coderdtest.NewInitialUser(t, client)
46+
projects, err := client.Projects(context.Background(), user.Organization)
4547
require.NoError(t, err)
4648
require.NotNil(t, projects)
4749
require.Len(t, projects, 0)
4850
})
4951

5052
t.Run("List", func(t *testing.T) {
5153
t.Parallel()
52-
server := coderdtest.New(t)
53-
user := coderdtest.NewInitialUser(t, server.Client)
54-
_ = coderdtest.NewProject(t, server.Client, user.Organization)
55-
projects, err := server.Client.Projects(context.Background(), "")
54+
client := coderdtest.New(t)
55+
user := coderdtest.NewInitialUser(t, client)
56+
_ = coderdtest.NewProject(t, client, user.Organization)
57+
projects, err := client.Projects(context.Background(), "")
5658
require.NoError(t, err)
5759
require.Len(t, projects, 1)
5860
})
@@ -62,32 +64,34 @@ func TestPostProjectsByOrganization(t *testing.T) {
6264
t.Parallel()
6365
t.Run("Create", func(t *testing.T) {
6466
t.Parallel()
65-
server := coderdtest.New(t)
66-
user := coderdtest.NewInitialUser(t, server.Client)
67-
_ = coderdtest.NewProject(t, server.Client, user.Organization)
67+
client := coderdtest.New(t)
68+
user := coderdtest.NewInitialUser(t, client)
69+
_ = coderdtest.NewProject(t, client, user.Organization)
6870
})
6971

7072
t.Run("AlreadyExists", func(t *testing.T) {
7173
t.Parallel()
72-
server := coderdtest.New(t)
73-
user := coderdtest.NewInitialUser(t, server.Client)
74-
project := coderdtest.NewProject(t, server.Client, user.Organization)
75-
_, err := server.Client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
74+
client := coderdtest.New(t)
75+
user := coderdtest.NewInitialUser(t, client)
76+
project := coderdtest.NewProject(t, client, user.Organization)
77+
_, err := client.CreateProject(context.Background(), user.Organization, coderd.CreateProjectRequest{
7678
Name: project.Name,
7779
Provisioner: database.ProvisionerTypeEcho,
7880
})
79-
require.NoError(t, err)
81+
var apiErr *codersdk.Error
82+
require.ErrorAs(t, err, &apiErr)
83+
require.Equal(t, http.StatusConflict, apiErr.StatusCode())
8084
})
8185
}
8286

8387
func TestProjectByOrganization(t *testing.T) {
8488
t.Parallel()
8589
t.Run("Get", func(t *testing.T) {
8690
t.Parallel()
87-
server := coderdtest.New(t)
88-
user := coderdtest.NewInitialUser(t, server.Client)
89-
project := coderdtest.NewProject(t, server.Client, user.Organization)
90-
_, err := server.Client.Project(context.Background(), user.Organization, project.Name)
91+
client := coderdtest.New(t)
92+
user := coderdtest.NewInitialUser(t, client)
93+
project := coderdtest.NewProject(t, client, user.Organization)
94+
_, err := client.Project(context.Background(), user.Organization, project.Name)
9195
require.NoError(t, err)
9296
})
9397
}
@@ -96,10 +100,10 @@ func TestPostParametersByProject(t *testing.T) {
96100
t.Parallel()
97101
t.Run("Create", func(t *testing.T) {
98102
t.Parallel()
99-
server := coderdtest.New(t)
100-
user := coderdtest.NewInitialUser(t, server.Client)
101-
project := coderdtest.NewProject(t, server.Client, user.Organization)
102-
_, err := server.Client.CreateProjectParameter(context.Background(), user.Organization, project.Name, coderd.CreateParameterValueRequest{
103+
client := coderdtest.New(t)
104+
user := coderdtest.NewInitialUser(t, client)
105+
project := coderdtest.NewProject(t, client, user.Organization)
106+
_, err := client.CreateProjectParameter(context.Background(), user.Organization, project.Name, coderd.CreateParameterValueRequest{
103107
Name: "somename",
104108
SourceValue: "tomato",
105109
SourceScheme: database.ParameterSourceSchemeData,
@@ -114,10 +118,10 @@ func TestParametersByProject(t *testing.T) {
114118
t.Parallel()
115119
t.Run("List", func(t *testing.T) {
116120
t.Parallel()
117-
server := coderdtest.New(t)
118-
user := coderdtest.NewInitialUser(t, server.Client)
119-
project := coderdtest.NewProject(t, server.Client, user.Organization)
120-
params, err := server.Client.ProjectParameters(context.Background(), user.Organization, project.Name)
121+
client := coderdtest.New(t)
122+
user := coderdtest.NewInitialUser(t, client)
123+
project := coderdtest.NewProject(t, client, user.Organization)
124+
params, err := client.ProjectParameters(context.Background(), user.Organization, project.Name)
121125
require.NoError(t, err)
122126
require.NotNil(t, params)
123127
})

coderd/projectversion_test.go

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@ func TestProjectVersionsByOrganization(t *testing.T) {
1919
t.Parallel()
2020
t.Run("ListEmpty", func(t *testing.T) {
2121
t.Parallel()
22-
server := coderdtest.New(t)
23-
user := coderdtest.NewInitialUser(t, server.Client)
24-
project := coderdtest.NewProject(t, server.Client, user.Organization)
25-
versions, err := server.Client.ProjectVersions(context.Background(), user.Organization, project.Name)
22+
client := coderdtest.New(t)
23+
user := coderdtest.NewInitialUser(t, client)
24+
project := coderdtest.NewProject(t, client, user.Organization)
25+
versions, err := client.ProjectVersions(context.Background(), user.Organization, project.Name)
2626
require.NoError(t, err)
2727
require.NotNil(t, versions)
2828
require.Len(t, versions, 0)
2929
})
3030

3131
t.Run("List", func(t *testing.T) {
3232
t.Parallel()
33-
server := coderdtest.New(t)
34-
user := coderdtest.NewInitialUser(t, server.Client)
35-
project := coderdtest.NewProject(t, server.Client, user.Organization)
36-
_ = coderdtest.NewProjectVersion(t, server.Client, user.Organization, project.Name, nil)
37-
versions, err := server.Client.ProjectVersions(context.Background(), user.Organization, project.Name)
33+
client := coderdtest.New(t)
34+
user := coderdtest.NewInitialUser(t, client)
35+
project := coderdtest.NewProject(t, client, user.Organization)
36+
_ = coderdtest.NewProjectVersion(t, client, user.Organization, project.Name, nil)
37+
versions, err := client.ProjectVersions(context.Background(), user.Organization, project.Name)
3838
require.NoError(t, err)
3939
require.Len(t, versions, 1)
4040
})
@@ -44,10 +44,10 @@ func TestProjectVersionByOrganizationAndName(t *testing.T) {
4444
t.Parallel()
4545
t.Run("Get", func(t *testing.T) {
4646
t.Parallel()
47-
server := coderdtest.New(t)
48-
user := coderdtest.NewInitialUser(t, server.Client)
49-
project := coderdtest.NewProject(t, server.Client, user.Organization)
50-
version := coderdtest.NewProjectVersion(t, server.Client, user.Organization, project.Name, nil)
47+
client := coderdtest.New(t)
48+
user := coderdtest.NewInitialUser(t, client)
49+
project := coderdtest.NewProject(t, client, user.Organization)
50+
version := coderdtest.NewProjectVersion(t, client, user.Organization, project.Name, nil)
5151
require.Equal(t, version.Import.Status, coderd.ProvisionerJobStatusPending)
5252
})
5353
}
@@ -56,18 +56,18 @@ func TestPostProjectVersionByOrganization(t *testing.T) {
5656
t.Parallel()
5757
t.Run("Create", func(t *testing.T) {
5858
t.Parallel()
59-
server := coderdtest.New(t)
60-
user := coderdtest.NewInitialUser(t, server.Client)
61-
project := coderdtest.NewProject(t, server.Client, user.Organization)
62-
_ = coderdtest.NewProjectVersion(t, server.Client, user.Organization, project.Name, nil)
59+
client := coderdtest.New(t)
60+
user := coderdtest.NewInitialUser(t, client)
61+
project := coderdtest.NewProject(t, client, user.Organization)
62+
_ = coderdtest.NewProjectVersion(t, client, user.Organization, project.Name, nil)
6363
})
6464

6565
t.Run("InvalidStorage", func(t *testing.T) {
6666
t.Parallel()
67-
server := coderdtest.New(t)
68-
user := coderdtest.NewInitialUser(t, server.Client)
69-
project := coderdtest.NewProject(t, server.Client, user.Organization)
70-
_, err := server.Client.CreateProjectVersion(context.Background(), user.Organization, project.Name, coderd.CreateProjectVersionRequest{
67+
client := coderdtest.New(t)
68+
user := coderdtest.NewInitialUser(t, client)
69+
project := coderdtest.NewProject(t, client, user.Organization)
70+
_, err := client.CreateProjectVersion(context.Background(), user.Organization, project.Name, coderd.CreateProjectVersionRequest{
7171
StorageMethod: database.ProjectStorageMethod("invalid"),
7272
StorageSource: []byte{},
7373
})
@@ -79,38 +79,38 @@ func TestProjectVersionParametersByOrganizationAndName(t *testing.T) {
7979
t.Parallel()
8080
t.Run("NotImported", func(t *testing.T) {
8181
t.Parallel()
82-
server := coderdtest.New(t)
83-
user := coderdtest.NewInitialUser(t, server.Client)
84-
project := coderdtest.NewProject(t, server.Client, user.Organization)
85-
version := coderdtest.NewProjectVersion(t, server.Client, user.Organization, project.Name, nil)
86-
_, err := server.Client.ProjectVersionParameters(context.Background(), user.Organization, project.Name, version.Name)
82+
client := coderdtest.New(t)
83+
user := coderdtest.NewInitialUser(t, client)
84+
project := coderdtest.NewProject(t, client, user.Organization)
85+
version := coderdtest.NewProjectVersion(t, client, user.Organization, project.Name, nil)
86+
_, err := client.ProjectVersionParameters(context.Background(), user.Organization, project.Name, version.Name)
8787
var apiErr *codersdk.Error
8888
require.ErrorAs(t, err, &apiErr)
8989
require.Equal(t, http.StatusPreconditionRequired, apiErr.StatusCode())
9090
})
9191

9292
t.Run("FailedImport", func(t *testing.T) {
9393
t.Parallel()
94-
server := coderdtest.New(t)
95-
user := coderdtest.NewInitialUser(t, server.Client)
96-
_ = coderdtest.NewProvisionerDaemon(t, server.Client)
97-
project := coderdtest.NewProject(t, server.Client, user.Organization)
98-
version := coderdtest.NewProjectVersion(t, server.Client, user.Organization, project.Name, &echo.Responses{
94+
client := coderdtest.New(t)
95+
user := coderdtest.NewInitialUser(t, client)
96+
_ = coderdtest.NewProvisionerDaemon(t, client)
97+
project := coderdtest.NewProject(t, client, user.Organization)
98+
version := coderdtest.NewProjectVersion(t, client, user.Organization, project.Name, &echo.Responses{
9999
Provision: []*proto.Provision_Response{{}},
100100
})
101-
coderdtest.AwaitProjectVersionImported(t, server.Client, user.Organization, project.Name, version.Name)
102-
_, err := server.Client.ProjectVersionParameters(context.Background(), user.Organization, project.Name, version.Name)
101+
coderdtest.AwaitProjectVersionImported(t, client, user.Organization, project.Name, version.Name)
102+
_, err := client.ProjectVersionParameters(context.Background(), user.Organization, project.Name, version.Name)
103103
var apiErr *codersdk.Error
104104
require.ErrorAs(t, err, &apiErr)
105105
require.Equal(t, http.StatusPreconditionFailed, apiErr.StatusCode())
106106
})
107107
t.Run("List", func(t *testing.T) {
108108
t.Parallel()
109-
server := coderdtest.New(t)
110-
user := coderdtest.NewInitialUser(t, server.Client)
111-
_ = coderdtest.NewProvisionerDaemon(t, server.Client)
112-
project := coderdtest.NewProject(t, server.Client, user.Organization)
113-
version := coderdtest.NewProjectVersion(t, server.Client, user.Organization, project.Name, &echo.Responses{
109+
client := coderdtest.New(t)
110+
user := coderdtest.NewInitialUser(t, client)
111+
_ = coderdtest.NewProvisionerDaemon(t, client)
112+
project := coderdtest.NewProject(t, client, user.Organization)
113+
version := coderdtest.NewProjectVersion(t, client, user.Organization, project.Name, &echo.Responses{
114114
Parse: []*proto.Parse_Response{{
115115
Type: &proto.Parse_Response_Complete{
116116
Complete: &proto.Parse_Complete{
@@ -121,8 +121,8 @@ func TestProjectVersionParametersByOrganizationAndName(t *testing.T) {
121121
},
122122
}},
123123
})
124-
coderdtest.AwaitProjectVersionImported(t, server.Client, user.Organization, project.Name, version.Name)
125-
params, err := server.Client.ProjectVersionParameters(context.Background(), user.Organization, project.Name, version.Name)
124+
coderdtest.AwaitProjectVersionImported(t, client, user.Organization, project.Name, version.Name)
125+
params, err := client.ProjectVersionParameters(context.Background(), user.Organization, project.Name, version.Name)
126126
require.NoError(t, err)
127127
require.Len(t, params, 1)
128128
})

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