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)