@@ -15,6 +15,7 @@ import (
1515 "testing"
1616 "time"
1717
18+ "github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
1819 "github.com/openshift-pipelines/pipelines-as-code/pkg/params"
1920 "github.com/openshift-pipelines/pipelines-as-code/pkg/params/clients"
2021 "github.com/openshift-pipelines/pipelines-as-code/pkg/params/info"
@@ -309,13 +310,15 @@ func TestSetClient(t *testing.T) {
309310 name string
310311 apiURL string
311312 opts * info.Event
313+ repo * v1alpha1.Repository
312314 wantErrSubstr string
315+ muxToken func (w http.ResponseWriter , r * http.Request )
313316 muxUser func (w http.ResponseWriter , r * http.Request )
314317 }{
315318 {
316- name : "bad/no username " ,
319+ name : "bad/no token " ,
317320 opts : info .NewEvent (),
318- wantErrSubstr : "no spec.git_provider.user " ,
321+ wantErrSubstr : "no spec.git_provider.secret " ,
319322 },
320323 {
321324 name : "bad/no secret" ,
@@ -330,57 +333,125 @@ func TestSetClient(t *testing.T) {
330333 name : "bad/no url" ,
331334 opts : & info.Event {
332335 Provider : & info.Provider {
333- User : "foo" ,
334336 Token : "bar" ,
335337 },
336338 },
337339 wantErrSubstr : "no spec.git_provider.url" ,
338340 },
339341 {
340- name : "bad/invalid user" ,
342+ name : "bad/invalid user in whomi" ,
343+ opts : & info.Event {
344+ Provider : & info.Provider {
345+ Token : "bar" ,
346+ URL : "https://fakebitbucketdc" ,
347+ },
348+ },
349+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
350+ w .WriteHeader (http .StatusUnauthorized )
351+ _ , _ = w .Write ([]byte (`{"errors": [{"message": "Unauthorized"}]}` ))
352+ },
353+ apiURL : "https://fakebitbucketdc/rest" ,
354+ wantErrSubstr : "token validation failed: unauthorized" ,
355+ },
356+ {
357+ name : "bad/invalid user at rest after whomi" ,
341358 opts : & info.Event {
342359 Provider : & info.Provider {
343360 User : "foo" ,
344361 Token : "bar" ,
345- URL : "https://foo.bar " ,
362+ URL : "https://fakebitbucketdc " ,
346363 },
347364 },
365+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
366+ fmt .Fprint (w , `foo` )
367+ },
348368 muxUser : func (w http.ResponseWriter , _ * http.Request ) {
349369 w .WriteHeader (http .StatusUnauthorized )
350370 _ , _ = w .Write ([]byte (`{"errors": [{"message": "Unauthorized"}]}` ))
351371 },
352- apiURL : "https://foo.bar/rest" ,
353- wantErrSubstr : "cannot get user foo with token" ,
372+ apiURL : "https://fakebitbucketdc/rest" ,
373+ wantErrSubstr : "token validation failed: unauthorized" ,
374+ },
375+ {
376+ name : "internal error at whoami" ,
377+ opts : & info.Event {
378+ Provider : & info.Provider {
379+ User : "foo" ,
380+ Token : "bar" ,
381+ URL : "https://fakebitbucketdc" ,
382+ },
383+ },
384+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
385+ w .WriteHeader (http .StatusInternalServerError )
386+ },
387+ apiURL : "https://fakebitbucketdc/rest" ,
388+ wantErrSubstr : "token validation failed: Internal Server Error" ,
354389 },
355390 {
356- name : "bad/unknown error " ,
391+ name : "not found at whoami " ,
357392 opts : & info.Event {
358393 Provider : & info.Provider {
359394 User : "foo" ,
360395 Token : "bar" ,
361- URL : "https://foo.bar " ,
396+ URL : "https://fakebitbucketdc " ,
362397 },
363398 },
399+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
400+ w .WriteHeader (http .StatusNotFound )
401+ },
402+ apiURL : "https://fakebitbucketdc/rest" ,
403+ wantErrSubstr : "token validation failed: http status: 404 : " ,
404+ },
405+ {
406+ name : "not found at whoami with error message" ,
407+ opts : & info.Event {
408+ Provider : & info.Provider {
409+ User : "foo" ,
410+ Token : "bar" ,
411+ URL : "https://fakebitbucketdc" ,
412+ },
413+ },
414+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
415+ w .WriteHeader (http .StatusNotFound )
416+ _ , _ = w .Write ([]byte (`{"errors": [{"message": "Not Found"}]}` ))
417+ },
418+ apiURL : "https://fakebitbucketdc/rest" ,
419+ wantErrSubstr : "token validation failed: http status: 404 : Not Found" ,
420+ },
421+ {
422+ name : "internal error at users rest" ,
423+ opts : & info.Event {
424+ Provider : & info.Provider {
425+ User : "foo" ,
426+ Token : "bar" ,
427+ URL : "https://fakebitbucketdc" ,
428+ },
429+ },
430+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
431+ fmt .Fprint (w , `foo` )
432+ },
364433 muxUser : func (w http.ResponseWriter , _ * http.Request ) {
365434 w .WriteHeader (http .StatusInternalServerError )
366435 _ , _ = w .Write ([]byte (`{"errors": [{"message": "Internal Server Error"}]}` ))
367436 },
368- apiURL : "https://foo.bar /rest" ,
369- wantErrSubstr : "cannot get user foo : Internal Server Error" ,
437+ apiURL : "https://fakebitbucketdc /rest" ,
438+ wantErrSubstr : "token validation failed : Internal Server Error" ,
370439 },
371440 {
372441 name : "good/url append /rest" ,
373442 opts : & info.Event {
374443 Provider : & info.Provider {
375- User : "foo" ,
376444 Token : "bar" ,
377- URL : "https://foo.bar " ,
445+ URL : "https://fakebitbucketdc " ,
378446 },
379447 },
448+ muxToken : func (w http.ResponseWriter , _ * http.Request ) {
449+ fmt .Fprint (w , `foo` )
450+ },
380451 muxUser : func (w http.ResponseWriter , _ * http.Request ) {
381452 fmt .Fprint (w , `{"name": "foo"}` )
382453 },
383- apiURL : "https://foo.bar /rest" ,
454+ apiURL : "https://fakebitbucketdc /rest" ,
384455 },
385456 }
386457 for _ , tt := range tests {
@@ -395,11 +466,14 @@ func TestSetClient(t *testing.T) {
395466 ctx , _ := rtesting .SetupFakeContext (t )
396467 client , mux , tearDown , tURL := bbtest .SetupBBDataCenterClient ()
397468 defer tearDown ()
469+ if tt .muxToken != nil {
470+ mux .HandleFunc ("/whoami" , tt .muxToken )
471+ }
398472 if tt .muxUser != nil {
399473 mux .HandleFunc ("/users/foo" , tt .muxUser )
400474 }
401475 v := & Provider {client : client , baseURL : tURL }
402- err := v .SetClient (ctx , fakeRun , tt .opts , nil , nil )
476+ err := v .SetClient (ctx , fakeRun , tt .opts , tt . repo , nil )
403477 if tt .wantErrSubstr != "" {
404478 assert .ErrorContains (t , err , tt .wantErrSubstr )
405479 return
0 commit comments