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