@@ -34,3 +34,185 @@ func createDummyCredentials(name, endpointName string) *params.GithubCredentials
3434 }
3535 return CreateGithubCredentials (createCredsParams )
3636}
37+
38+ func TestGithubCredentialsErrorOnDuplicateCredentialsName () {
39+ name := "dummy"
40+ endpointName := "github.com"
41+ creds := createDummyCredentials (name , endpointName )
42+ defer DeleteGithubCredential (int64 (creds .ID ))
43+
44+ createCredsParams := params.CreateGithubCredentialsParams {
45+ Name : name ,
46+ Endpoint : endpointName ,
47+ Description : "GARM test credentials" ,
48+ AuthType : params .GithubAuthTypePAT ,
49+ PAT : params.GithubPAT {
50+ OAuth2Token : "dummy" ,
51+ },
52+ }
53+ if _ , err := createGithubCredentials (cli , authToken , createCredsParams ); err == nil {
54+ panic ("expected error when creating credentials with duplicate name" )
55+ }
56+ }
57+
58+ func TestGithubCredentialsFailsToDeleteWhenInUse () {
59+ name := "dummy"
60+ endpointName := "github.com"
61+ creds := createDummyCredentials (name , endpointName )
62+
63+ repo := CreateRepo ("dummy-owner" , "dummy-repo" , creds .Name , "superSecret@123BlaBla" )
64+ defer func () {
65+ deleteRepo (cli , authToken , repo .ID )
66+ deleteGithubCredentials (cli , authToken , int64 (creds .ID ))
67+ }()
68+
69+ if err := deleteGithubCredentials (cli , authToken , int64 (creds .ID )); err == nil {
70+ panic ("expected error when deleting credentials in use" )
71+ }
72+ }
73+
74+ func TestGithubCredentialsFailsOnInvalidAuthType () {
75+ name := "dummy"
76+ endpointName := "github.com"
77+
78+ createCredsParams := params.CreateGithubCredentialsParams {
79+ Name : name ,
80+ Endpoint : endpointName ,
81+ Description : "GARM test credentials" ,
82+ AuthType : params .GithubAuthType ("invalid" ),
83+ PAT : params.GithubPAT {
84+ OAuth2Token : "dummy" ,
85+ },
86+ }
87+ _ , err := createGithubCredentials (cli , authToken , createCredsParams )
88+ if err == nil {
89+ panic ("expected error when creating credentials with invalid auth type" )
90+ }
91+ expectAPIStatusCode (err , 400 )
92+ }
93+
94+ func TestGithubCredentialsFailsWhenAuthTypeParamsAreIncorrect () {
95+ name := "dummy"
96+ endpointName := "github.com"
97+
98+ createCredsParams := params.CreateGithubCredentialsParams {
99+ Name : name ,
100+ Endpoint : endpointName ,
101+ Description : "GARM test credentials" ,
102+ AuthType : params .GithubAuthTypePAT ,
103+ App : params.GithubApp {
104+ AppID : 123 ,
105+ InstallationID : 456 ,
106+ PrivateKeyBytes : getTestFileContents ("certs/srv-key.pem" ),
107+ },
108+ }
109+ _ , err := createGithubCredentials (cli , authToken , createCredsParams )
110+ if err == nil {
111+ panic ("expected error when creating credentials with invalid auth type params" )
112+ }
113+ expectAPIStatusCode (err , 400 )
114+ }
115+
116+ func TestGithubCredentialsFailsWhenAuthTypeParamsAreMissing () {
117+ name := "dummy"
118+ endpointName := "github.com"
119+
120+ createCredsParams := params.CreateGithubCredentialsParams {
121+ Name : name ,
122+ Endpoint : endpointName ,
123+ Description : "GARM test credentials" ,
124+ AuthType : params .GithubAuthTypeApp ,
125+ }
126+ _ , err := createGithubCredentials (cli , authToken , createCredsParams )
127+ if err == nil {
128+ panic ("expected error when creating credentials with missing auth type params" )
129+ }
130+ expectAPIStatusCode (err , 400 )
131+ }
132+
133+ func TestGithubCredentialsUpdateFailsWhenBothPATAndAppAreSupplied () {
134+ name := "dummy"
135+ endpointName := "github.com"
136+ creds := createDummyCredentials (name , endpointName )
137+ defer DeleteGithubCredential (int64 (creds .ID ))
138+
139+ updateCredsParams := params.UpdateGithubCredentialsParams {
140+ PAT : & params.GithubPAT {
141+ OAuth2Token : "dummy" ,
142+ },
143+ App : & params.GithubApp {
144+ AppID : 123 ,
145+ InstallationID : 456 ,
146+ PrivateKeyBytes : getTestFileContents ("certs/srv-key.pem" ),
147+ },
148+ }
149+ _ , err := updateGithubCredentials (cli , authToken , int64 (creds .ID ), updateCredsParams )
150+ if err == nil {
151+ panic ("expected error when updating credentials with both PAT and App" )
152+ }
153+ expectAPIStatusCode (err , 400 )
154+ }
155+
156+ func TestGithubCredentialsFailWhenAppKeyIsInvalid () {
157+ name := "dummy"
158+ endpointName := "github.com"
159+
160+ createCredsParams := params.CreateGithubCredentialsParams {
161+ Name : name ,
162+ Endpoint : endpointName ,
163+ Description : "GARM test credentials" ,
164+ AuthType : params .GithubAuthTypeApp ,
165+ App : params.GithubApp {
166+ AppID : 123 ,
167+ InstallationID : 456 ,
168+ PrivateKeyBytes : []byte ("invalid" ),
169+ },
170+ }
171+ _ , err := createGithubCredentials (cli , authToken , createCredsParams )
172+ if err == nil {
173+ panic ("expected error when creating credentials with invalid app key" )
174+ }
175+ expectAPIStatusCode (err , 400 )
176+ }
177+
178+ func TestGithubCredentialsFailWhenEndpointDoesntExist () {
179+ name := "dummy"
180+ endpointName := "nonexistent"
181+
182+ createCredsParams := params.CreateGithubCredentialsParams {
183+ Name : name ,
184+ Endpoint : endpointName ,
185+ Description : "GARM test credentials" ,
186+ AuthType : params .GithubAuthTypePAT ,
187+ PAT : params.GithubPAT {
188+ OAuth2Token : "dummy" ,
189+ },
190+ }
191+ _ , err := createGithubCredentials (cli , authToken , createCredsParams )
192+ if err == nil {
193+ panic ("expected error when creating credentials with invalid endpoint" )
194+ }
195+ expectAPIStatusCode (err , 404 )
196+ }
197+
198+ func TestGithubCredentialsFailsOnDuplicateName () {
199+ name := "dummy"
200+ endpointName := "github.com"
201+ creds := createDummyCredentials (name , endpointName )
202+ defer DeleteGithubCredential (int64 (creds .ID ))
203+
204+ createCredsParams := params.CreateGithubCredentialsParams {
205+ Name : name ,
206+ Endpoint : endpointName ,
207+ Description : "GARM test credentials" ,
208+ AuthType : params .GithubAuthTypePAT ,
209+ PAT : params.GithubPAT {
210+ OAuth2Token : "dummy" ,
211+ },
212+ }
213+ _ , err := createGithubCredentials (cli , authToken , createCredsParams )
214+ if err == nil {
215+ panic ("expected error when creating credentials with duplicate name" )
216+ }
217+ expectAPIStatusCode (err , 409 )
218+ }
0 commit comments