@@ -2,30 +2,161 @@ package api_test
22
33import (
44 "testing"
5+ "time"
56
67 "context"
8+
79 "github.com/codesphere-cloud/cs-go/api"
10+ "github.com/codesphere-cloud/cs-go/api/errors"
811 "github.com/codesphere-cloud/cs-go/api/openapi_client"
912 "github.com/stretchr/testify/assert"
1013 "github.com/stretchr/testify/mock"
1114)
1215
13- func TestListWorkspaces (t * testing.T ) {
16+ func getTestingClient (t * testing.T ) ( * api. Client , * openapi_client. MockWorkspacesAPI ) {
1417 wsApiMock := openapi_client .NewMockWorkspacesAPI (t )
1518 apis := openapi_client.APIClient {
1619 WorkspacesAPI : wsApiMock ,
1720 }
18- client := api .NewClientWithCustomApi (context .TODO (), api.Configuration {}, & apis )
21+ return api .NewClientWithCustomApi (context .TODO (), api.Configuration {}, & apis ), wsApiMock
22+ }
23+
24+ func TestListWorkspaces (t * testing.T ) {
25+ client , wsApiMock := getTestingClient (t )
1926
2027 workspaces := []api.Workspace {
2128 {Id : 0 , Name : "fakeForTeam0" },
2229 {Id : 1 , Name : "fakeForTeam1" },
2330 }
2431 teamId := 42
2532
26- wsApiMock .EXPECT ().WorkspacesListWorkspaces (mock .Anything , float32 (teamId )).Return (openapi_client.ApiWorkspacesListWorkspacesRequest {ApiService : wsApiMock })
33+ wsApiMock .EXPECT ().WorkspacesListWorkspaces (mock .Anything , float32 (teamId )).
34+ Return (openapi_client.ApiWorkspacesListWorkspacesRequest {ApiService : wsApiMock })
2735 wsApiMock .EXPECT ().WorkspacesListWorkspacesExecute (mock .Anything ).Return (workspaces , nil , nil )
2836 workspaces , err := client .ListWorkspaces (teamId )
2937 assert .Nil (t , err , "should be nil" )
3038 assert .Equal (t , workspaces , workspaces )
3139}
40+
41+ func TestWaitForWorkspaceRunningSuccess (t * testing.T ) {
42+ client , wsApiMock := getTestingClient (t )
43+
44+ ws := api.Workspace {
45+ Id : 0 , Name : "fakeWorkspace" ,
46+ }
47+
48+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatus (mock .Anything , float32 (0 )).
49+ Return (openapi_client.ApiWorkspacesGetWorkspaceStatusRequest {ApiService : wsApiMock })
50+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatusExecute (mock .Anything ).Return (& api.WorkspaceStatus {
51+ IsRunning : true ,
52+ }, nil , nil )
53+
54+ err := client .WaitForWorkspaceRunning (
55+ & ws ,
56+ api.WaitForWorkspaceRunningOptions {Timeout : 1 * time .Millisecond , Delay : 1 * time .Millisecond },
57+ )
58+
59+ assert .Nil (t , err , "should be nil" )
60+ }
61+
62+ func TestWaitForWorkspaceRunningTimeout (t * testing.T ) {
63+ client , wsApiMock := getTestingClient (t )
64+
65+ ws := api.Workspace {
66+ Id : 0 , Name : "fakeWorkspace" ,
67+ }
68+
69+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatus (mock .Anything , float32 (0 )).
70+ Return (openapi_client.ApiWorkspacesGetWorkspaceStatusRequest {ApiService : wsApiMock })
71+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatusExecute (mock .Anything ).Return (& api.WorkspaceStatus {
72+ IsRunning : false ,
73+ }, nil , nil )
74+
75+ err := client .WaitForWorkspaceRunning (
76+ & ws ,
77+ api.WaitForWorkspaceRunningOptions {Timeout : 1 * time .Millisecond , Delay : 1 * time .Millisecond },
78+ )
79+
80+ assert .IsType (t , err , & errors.TimedOutError {}, "expected timeout error" )
81+ }
82+
83+ func TestWaitForWorkspaceRunningOnRetry (t * testing.T ) {
84+ client , wsApiMock := getTestingClient (t )
85+
86+ ws := api.Workspace {
87+ Id : 42 , Name : "fakeWorkspace" ,
88+ }
89+
90+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatus (mock .Anything , float32 (42 )).
91+ Return (openapi_client.ApiWorkspacesGetWorkspaceStatusRequest {ApiService : wsApiMock })
92+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatusExecute (mock .Anything ).Return (& api.WorkspaceStatus {
93+ IsRunning : false ,
94+ }, nil , nil ).Once ()
95+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatusExecute (mock .Anything ).Return (& api.WorkspaceStatus {
96+ IsRunning : true ,
97+ }, nil , nil ).Once ()
98+
99+ err := client .WaitForWorkspaceRunning (
100+ & ws ,
101+ api.WaitForWorkspaceRunningOptions {Timeout : 10 * time .Millisecond , Delay : 1 * time .Millisecond },
102+ )
103+
104+ assert .Nil (t , err , "should be nil" )
105+ }
106+
107+ func TestDeployWorkspace (t * testing.T ) {
108+ client , wsApiMock := getTestingClient (t )
109+
110+ ws := api.Workspace {
111+ Id : 42 , Name : "fakeWorkspace" ,
112+ }
113+
114+ wsApiMock .EXPECT ().WorkspacesCreateWorkspace (mock .Anything ).
115+ Return (openapi_client.ApiWorkspacesCreateWorkspaceRequest {ApiService : wsApiMock })
116+ wsApiMock .EXPECT ().WorkspacesCreateWorkspaceExecute (mock .Anything ).Return (& ws , nil , nil )
117+
118+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatus (mock .Anything , float32 (42 )).
119+ Return (openapi_client.ApiWorkspacesGetWorkspaceStatusRequest {ApiService : wsApiMock })
120+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatusExecute (mock .Anything ).Return (& api.WorkspaceStatus {
121+ IsRunning : true ,
122+ }, nil , nil )
123+
124+ err := client .DeployWorkspace (
125+ api.DeployWorkspaceArgs {Timeout : 1 * time .Millisecond },
126+ )
127+
128+ assert .Nil (t , err , "should be nil" )
129+ }
130+
131+ func TestDeployWorkspaceWithEnvVars (t * testing.T ) {
132+ client , wsApiMock := getTestingClient (t )
133+
134+ ws := api.Workspace {
135+ Id : 42 , Name : "fakeWorkspace" ,
136+ }
137+ args := api.DeployWorkspaceArgs {
138+ Timeout : 1 * time .Millisecond ,
139+ EnvVars : map [string ]string {
140+ "foo" : "bar" ,
141+ "some" : "thing" ,
142+ },
143+ }
144+
145+ wsApiMock .EXPECT ().WorkspacesCreateWorkspace (mock .Anything ).
146+ Return (openapi_client.ApiWorkspacesCreateWorkspaceRequest {ApiService : wsApiMock })
147+ wsApiMock .EXPECT ().WorkspacesCreateWorkspaceExecute (mock .Anything ).Return (& ws , nil , nil )
148+
149+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatus (mock .Anything , float32 (42 )).
150+ Return (openapi_client.ApiWorkspacesGetWorkspaceStatusRequest {ApiService : wsApiMock })
151+ wsApiMock .EXPECT ().WorkspacesGetWorkspaceStatusExecute (mock .Anything ).Return (& api.WorkspaceStatus {
152+ IsRunning : true ,
153+ }, nil , nil )
154+
155+ wsApiMock .EXPECT ().WorkspacesSetEnvVar (mock .Anything , float32 (42 )).
156+ Return (openapi_client.ApiWorkspacesSetEnvVarRequest {ApiService : wsApiMock })
157+ wsApiMock .EXPECT ().WorkspacesSetEnvVarExecute (mock .Anything ).Return (nil , nil ).Once ()
158+
159+ err := client .DeployWorkspace (args )
160+
161+ assert .Nil (t , err , "should be nil" )
162+ }
0 commit comments