@@ -2,7 +2,9 @@ package coderd_test
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
"net/http"
7
+ "strconv"
6
8
"testing"
7
9
"time"
8
10
@@ -28,6 +30,90 @@ func TestWorkspaceBuild(t *testing.T) {
28
30
require .NoError (t , err )
29
31
}
30
32
33
+ func TestWorkspaceBuildByBuildNumber (t * testing.T ) {
34
+ t .Parallel ()
35
+ t .Run ("Successful" , func (t * testing.T ) {
36
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
37
+ first := coderdtest .CreateFirstUser (t , client )
38
+ user , err := client .User (context .Background (), codersdk .Me )
39
+ require .NoError (t , err , "fetch me" )
40
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
41
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
42
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
43
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
44
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
45
+ context .Background (),
46
+ user .Username ,
47
+ workspace .Name ,
48
+ strconv .FormatInt (int64 (workspace .LatestBuild .BuildNumber ), 10 ),
49
+ )
50
+ require .NoError (t , err )
51
+ })
52
+
53
+ t .Run ("BuildNumberNotInt" , func (t * testing.T ) {
54
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
55
+ first := coderdtest .CreateFirstUser (t , client )
56
+ user , err := client .User (context .Background (), codersdk .Me )
57
+ require .NoError (t , err , "fetch me" )
58
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
59
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
60
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
61
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
62
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
63
+ context .Background (),
64
+ user .Username ,
65
+ workspace .Name ,
66
+ "buildNumber" ,
67
+ )
68
+ var apiError * codersdk.Error
69
+ require .ErrorAs (t , err , & apiError )
70
+ require .Equal (t , http .StatusBadRequest , apiError .StatusCode ())
71
+ require .ErrorContains (t , apiError , "Failed to parse build number as integer." )
72
+ })
73
+
74
+ t .Run ("WorkspaceNotFound" , func (t * testing.T ) {
75
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
76
+ first := coderdtest .CreateFirstUser (t , client )
77
+ user , err := client .User (context .Background (), codersdk .Me )
78
+ require .NoError (t , err , "fetch me" )
79
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
80
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
81
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
82
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
83
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
84
+ context .Background (),
85
+ user .Username ,
86
+ "workspaceName" ,
87
+ strconv .FormatInt (int64 (workspace .LatestBuild .BuildNumber ), 10 ),
88
+ )
89
+ var apiError * codersdk.Error
90
+ require .ErrorAs (t , err , & apiError )
91
+ require .Equal (t , http .StatusNotFound , apiError .StatusCode ())
92
+ require .ErrorContains (t , apiError , "Workspace \" workspaceName\" does not exist." )
93
+ })
94
+
95
+ t .Run ("WorkspaceBuildNotFound" , func (t * testing.T ) {
96
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
97
+ first := coderdtest .CreateFirstUser (t , client )
98
+ user , err := client .User (context .Background (), codersdk .Me )
99
+ require .NoError (t , err , "fetch me" )
100
+ version := coderdtest .CreateTemplateVersion (t , client , first .OrganizationID , nil )
101
+ template := coderdtest .CreateTemplate (t , client , first .OrganizationID , version .ID )
102
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
103
+ workspace := coderdtest .CreateWorkspace (t , client , first .OrganizationID , template .ID )
104
+ _ , err = client .WorkspaceBuildByUsernameAndWorkspaceNameAndBuildNumber (
105
+ context .Background (),
106
+ user .Username ,
107
+ workspace .Name ,
108
+ "200" ,
109
+ )
110
+ var apiError * codersdk.Error
111
+ require .ErrorAs (t , err , & apiError )
112
+ require .Equal (t , http .StatusNotFound , apiError .StatusCode ())
113
+ require .ErrorContains (t , apiError , fmt .Sprintf ("Workspace %q Build 200 does not exist." , workspace .Name ))
114
+ })
115
+ }
116
+
31
117
func TestWorkspaceBuilds (t * testing.T ) {
32
118
t .Parallel ()
33
119
t .Run ("Single" , func (t * testing.T ) {
0 commit comments