@@ -241,6 +241,77 @@ func Test_projectRestClient_GetEnvironmentVariable(t *testing.T) {
241241 }
242242}
243243
244+ func Test_projectRestClient_CreateProject (t * testing.T ) {
245+ const (
246+ vcsType = "github"
247+ orgName = "test-org"
248+ projName = "test-proj"
249+ testId = "this-is-the-id"
250+ projectSlug = "github/test-org/test-proj"
251+ )
252+ tests := []struct {
253+ name string
254+ handler http.HandlerFunc
255+ want * project.CreateProjectInfo
256+ wantErr bool
257+ }{
258+ {
259+ name : "Should handle a successful request" ,
260+ handler : func (w http.ResponseWriter , r * http.Request ) {
261+ orgSlug := fmt .Sprintf ("%s/%s" , vcsType , orgName )
262+ assert .Equal (t , r .Header .Get ("circle-token" ), "token" )
263+ assert .Equal (t , r .Header .Get ("accept" ), "application/json" )
264+ assert .Equal (t , r .Header .Get ("user-agent" ), version .UserAgent ())
265+ assert .Equal (t , r .Method , "POST" )
266+ assert .Equal (t , r .URL .Path , fmt .Sprintf ("/api/v2/organization/%s/project" , orgSlug ))
267+ w .Header ().Set ("Content-Type" , "application/json" )
268+ w .WriteHeader (http .StatusOK )
269+ _ , err := w .Write ([]byte (`
270+ {
271+ "id": "` + testId + `",
272+ "name": "` + projName + `",
273+ "slug": "` + projectSlug + `",
274+ "organization_name": "` + orgName + `"
275+ }` ))
276+ assert .NilError (t , err )
277+ },
278+ want : & project.CreateProjectInfo {
279+ Id : testId ,
280+ Name : projName ,
281+ Slug : projectSlug ,
282+ OrgName : orgName ,
283+ },
284+ },
285+ {
286+ name : "Should handle an error request" ,
287+ handler : func (w http.ResponseWriter , _ * http.Request ) {
288+ w .Header ().Set ("content-type" , "application/json" )
289+ w .WriteHeader (http .StatusInternalServerError )
290+ _ , err := w .Write ([]byte (`{"message": "error"}` ))
291+ assert .NilError (t , err )
292+ },
293+ wantErr : true ,
294+ },
295+ }
296+ for _ , tt := range tests {
297+ t .Run (tt .name , func (t * testing.T ) {
298+ server := httptest .NewServer (tt .handler )
299+ defer server .Close ()
300+ p , err := getProjectRestClient (server )
301+ assert .NilError (t , err )
302+
303+ got , err := p .CreateProject (vcsType , orgName , projName )
304+ if (err != nil ) != tt .wantErr {
305+ t .Errorf ("projectRestClient.CreateProject() error = %v, wantErr %v" , err , tt .wantErr )
306+ return
307+ }
308+ if ! reflect .DeepEqual (got , tt .want ) {
309+ t .Errorf ("projectRestClient.CreateProject() = %v, want %v" , got , tt .want )
310+ }
311+ })
312+ }
313+ }
314+
244315func Test_projectRestClient_CreateEnvironmentVariable (t * testing.T ) {
245316 const (
246317 vcsType = "github"
0 commit comments