Skip to content

Commit ed988e9

Browse files
committed
Adding garm test suite
1 parent 4c7c9b0 commit ed988e9

24 files changed

+1636
-1735
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ integration: build ## Run integration tests
8484
}
8585
trap cleanup EXIT
8686
@./test/integration/scripts/setup-garm.sh
87-
@$(GO) run ./test/integration/main.go
87+
@$(GO) test -v ./test/integration/. -timeout=30m
8888

8989
##@ Development
9090

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package e2e
1+
package integration
22

33
import (
44
"github.com/go-openapi/runtime"
@@ -67,16 +67,6 @@ func deleteGithubCredentials(apiCli *client.GarmAPI, apiAuthToken runtime.Client
6767
apiAuthToken)
6868
}
6969

70-
func getGithubCredential(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, credentialsID int64) (*params.GithubCredentials, error) {
71-
getCredentialsResponse, err := apiCli.Credentials.GetCredentials(
72-
clientCredentials.NewGetCredentialsParams().WithID(credentialsID),
73-
apiAuthToken)
74-
if err != nil {
75-
return nil, err
76-
}
77-
return &getCredentialsResponse.Payload, nil
78-
}
79-
8070
func updateGithubCredentials(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, credentialsID int64, credentialsParams params.UpdateGithubCredentialsParams) (*params.GithubCredentials, error) {
8171
updateCredentialsResponse, err := apiCli.Credentials.UpdateCredentials(
8272
clientCredentials.NewUpdateCredentialsParams().WithID(credentialsID).WithBody(credentialsParams),
@@ -501,16 +491,6 @@ func updatePool(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWrite
501491
return &updatePoolResponse.Payload, nil
502492
}
503493

504-
func listPoolInstances(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, poolID string) (params.Instances, error) {
505-
listPoolInstancesResponse, err := apiCli.Instances.ListPoolInstances(
506-
clientInstances.NewListPoolInstancesParams().WithPoolID(poolID),
507-
apiAuthToken)
508-
if err != nil {
509-
return nil, err
510-
}
511-
return listPoolInstancesResponse.Payload, nil
512-
}
513-
514494
func deletePool(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, poolID string) error {
515495
return apiCli.Pools.DeletePool(
516496
clientPools.NewDeletePoolParams().WithPoolID(poolID),
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
package integration
2+
3+
import (
4+
"github.com/cloudbase/garm/params"
5+
)
6+
7+
const (
8+
defaultEndpointName string = "github.com"
9+
dummyCredentialsName string = "dummy"
10+
)
11+
12+
func (suite *GarmSuite) TestGithubCredentialsErrorOnDuplicateCredentialsName() {
13+
t := suite.T()
14+
t.Log("Testing error on duplicate credentials name")
15+
creds, err := suite.createDummyCredentials(dummyCredentialsName, defaultEndpointName)
16+
suite.NoError(err)
17+
defer suite.DeleteGithubCredential(int64(creds.ID))
18+
19+
createCredsParams := params.CreateGithubCredentialsParams{
20+
Name: dummyCredentialsName,
21+
Endpoint: defaultEndpointName,
22+
Description: "GARM test credentials",
23+
AuthType: params.GithubAuthTypePAT,
24+
PAT: params.GithubPAT{
25+
OAuth2Token: "dummy",
26+
},
27+
}
28+
_, err = createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
29+
suite.Error(err, "expected error when creating credentials with duplicate name")
30+
}
31+
32+
func (suite *GarmSuite) TestGithubCredentialsFailsToDeleteWhenInUse() {
33+
t := suite.T()
34+
t.Log("Testing error when deleting credentials in use")
35+
creds, err := suite.createDummyCredentials(dummyCredentialsName, defaultEndpointName)
36+
suite.NoError(err)
37+
38+
orgName := "dummy-owner"
39+
repoName := "dummy-repo"
40+
createParams := params.CreateRepoParams{
41+
Owner: orgName,
42+
Name: repoName,
43+
CredentialsName: creds.Name,
44+
WebhookSecret: "superSecret@123BlaBla",
45+
}
46+
47+
t.Logf("Create repository with owner_name: %s, repo_name: %s", orgName, repoName)
48+
repo, err := createRepo(suite.cli, suite.authToken, createParams)
49+
suite.NoError(err)
50+
defer func() {
51+
deleteRepo(suite.cli, suite.authToken, repo.ID)
52+
deleteGithubCredentials(suite.cli, suite.authToken, int64(creds.ID))
53+
}()
54+
55+
err = deleteGithubCredentials(suite.cli, suite.authToken, int64(creds.ID))
56+
suite.Error(err, "expected error when deleting credentials in use")
57+
}
58+
59+
func (suite *GarmSuite) TestGithubCredentialsFailsOnInvalidAuthType() {
60+
t := suite.T()
61+
t.Log("Testing error on invalid auth type")
62+
createCredsParams := params.CreateGithubCredentialsParams{
63+
Name: dummyCredentialsName,
64+
Endpoint: defaultEndpointName,
65+
Description: "GARM test credentials",
66+
AuthType: params.GithubAuthType("invalid"),
67+
PAT: params.GithubPAT{
68+
OAuth2Token: "dummy",
69+
},
70+
}
71+
_, err := createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
72+
suite.Error(err, "expected error when creating credentials with invalid auth type")
73+
expectAPIStatusCode(err, 400)
74+
}
75+
76+
func (suite *GarmSuite) TestGithubCredentialsFailsWhenAuthTypeParamsAreIncorrect() {
77+
t := suite.T()
78+
t.Log("Testing error when auth type params are incorrect")
79+
privateKeyBytes, err := getTestFileContents("certs/srv-key.pem")
80+
suite.NoError(err)
81+
createCredsParams := params.CreateGithubCredentialsParams{
82+
Name: dummyCredentialsName,
83+
Endpoint: defaultEndpointName,
84+
Description: "GARM test credentials",
85+
AuthType: params.GithubAuthTypePAT,
86+
App: params.GithubApp{
87+
AppID: 123,
88+
InstallationID: 456,
89+
PrivateKeyBytes: privateKeyBytes,
90+
},
91+
}
92+
_, err = createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
93+
suite.Error(err, "expected error when creating credentials with invalid auth type params")
94+
95+
expectAPIStatusCode(err, 400)
96+
}
97+
98+
func (suite *GarmSuite) TestGithubCredentialsFailsWhenAuthTypeParamsAreMissing() {
99+
t := suite.T()
100+
t.Log("Testing error when auth type params are missing")
101+
createCredsParams := params.CreateGithubCredentialsParams{
102+
Name: dummyCredentialsName,
103+
Endpoint: defaultEndpointName,
104+
Description: "GARM test credentials",
105+
AuthType: params.GithubAuthTypeApp,
106+
}
107+
_, err := createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
108+
suite.Error(err, "expected error when creating credentials with missing auth type params")
109+
expectAPIStatusCode(err, 400)
110+
}
111+
112+
func (suite *GarmSuite) TestGithubCredentialsUpdateFailsWhenBothPATAndAppAreSupplied() {
113+
t := suite.T()
114+
t.Log("Testing error when both PAT and App are supplied")
115+
creds, err := suite.createDummyCredentials(dummyCredentialsName, defaultEndpointName)
116+
suite.NoError(err)
117+
defer suite.DeleteGithubCredential(int64(creds.ID))
118+
119+
privateKeyBytes, err := getTestFileContents("certs/srv-key.pem")
120+
suite.NoError(err)
121+
updateCredsParams := params.UpdateGithubCredentialsParams{
122+
PAT: &params.GithubPAT{
123+
OAuth2Token: "dummy",
124+
},
125+
App: &params.GithubApp{
126+
AppID: 123,
127+
InstallationID: 456,
128+
PrivateKeyBytes: privateKeyBytes,
129+
},
130+
}
131+
_, err = updateGithubCredentials(suite.cli, suite.authToken, int64(creds.ID), updateCredsParams)
132+
suite.Error(err, "expected error when updating credentials with both PAT and App")
133+
expectAPIStatusCode(err, 400)
134+
}
135+
136+
func (suite *GarmSuite) TestGithubCredentialsFailWhenAppKeyIsInvalid() {
137+
t := suite.T()
138+
t.Log("Testing error when app key is invalid")
139+
createCredsParams := params.CreateGithubCredentialsParams{
140+
Name: dummyCredentialsName,
141+
Endpoint: defaultEndpointName,
142+
Description: "GARM test credentials",
143+
AuthType: params.GithubAuthTypeApp,
144+
App: params.GithubApp{
145+
AppID: 123,
146+
InstallationID: 456,
147+
PrivateKeyBytes: []byte("invalid"),
148+
},
149+
}
150+
_, err := createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
151+
suite.Error(err, "expected error when creating credentials with invalid app key")
152+
expectAPIStatusCode(err, 400)
153+
}
154+
155+
func (suite *GarmSuite) TestGithubCredentialsFailWhenEndpointDoesntExist() {
156+
t := suite.T()
157+
t.Log("Testing error when endpoint doesn't exist")
158+
createCredsParams := params.CreateGithubCredentialsParams{
159+
Name: dummyCredentialsName,
160+
Endpoint: "iDontExist.example.com",
161+
Description: "GARM test credentials",
162+
AuthType: params.GithubAuthTypePAT,
163+
PAT: params.GithubPAT{
164+
OAuth2Token: "dummy",
165+
},
166+
}
167+
_, err := createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
168+
suite.Error(err, "expected error when creating credentials with invalid endpoint")
169+
expectAPIStatusCode(err, 404)
170+
}
171+
172+
func (suite *GarmSuite) TestGithubCredentialsFailsOnDuplicateName() {
173+
t := suite.T()
174+
t.Log("Testing error on duplicate credentials name")
175+
creds, err := suite.createDummyCredentials(dummyCredentialsName, defaultEndpointName)
176+
suite.NoError(err)
177+
defer suite.DeleteGithubCredential(int64(creds.ID))
178+
179+
createCredsParams := params.CreateGithubCredentialsParams{
180+
Name: dummyCredentialsName,
181+
Endpoint: defaultEndpointName,
182+
Description: "GARM test credentials",
183+
AuthType: params.GithubAuthTypePAT,
184+
PAT: params.GithubPAT{
185+
OAuth2Token: "dummy",
186+
},
187+
}
188+
_, err = createGithubCredentials(suite.cli, suite.authToken, createCredsParams)
189+
suite.Error(err, "expected error when creating credentials with duplicate name")
190+
expectAPIStatusCode(err, 409)
191+
}
192+
193+
func (suite *GarmSuite) createDummyCredentials(name, endpointName string) (*params.GithubCredentials, error) {
194+
createCredsParams := params.CreateGithubCredentialsParams{
195+
Name: name,
196+
Endpoint: endpointName,
197+
Description: "GARM test credentials",
198+
AuthType: params.GithubAuthTypePAT,
199+
PAT: params.GithubPAT{
200+
OAuth2Token: "dummy",
201+
},
202+
}
203+
return suite.CreateGithubCredentials(createCredsParams)
204+
}
205+
206+
func (suite *GarmSuite) CreateGithubCredentials(credentialsParams params.CreateGithubCredentialsParams) (*params.GithubCredentials, error) {
207+
t := suite.T()
208+
t.Log("Create GitHub credentials")
209+
credentials, err := createGithubCredentials(suite.cli, suite.authToken, credentialsParams)
210+
if err != nil {
211+
return nil, err
212+
}
213+
214+
return credentials, nil
215+
}
216+
217+
func (suite *GarmSuite) DeleteGithubCredential(id int64) error {
218+
t := suite.T()
219+
t.Log("Delete GitHub credential")
220+
if err := deleteGithubCredentials(suite.cli, suite.authToken, id); err != nil {
221+
return err
222+
}
223+
return nil
224+
}

test/integration/e2e/client.go

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)