github.com/argoproj/argo-cd/v2@v2.10.9/applicationset/services/pull_request/gitlab_test.go (about) 1 package pull_request 2 3 import ( 4 "context" 5 "io" 6 "net/http" 7 "net/http/httptest" 8 "os" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func writeMRListResponse(t *testing.T, w io.Writer) { 15 f, err := os.Open("fixtures/gitlab_mr_list_response.json") 16 if err != nil { 17 t.Fatalf("error opening fixture file: %v", err) 18 } 19 20 if _, err = io.Copy(w, f); err != nil { 21 t.Fatalf("error writing response: %v", err) 22 } 23 } 24 25 func TestGitLabServiceCustomBaseURL(t *testing.T) { 26 mux := http.NewServeMux() 27 server := httptest.NewServer(mux) 28 defer server.Close() 29 30 path := "/api/v4/projects/278964/merge_requests" 31 32 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 33 assert.Equal(t, path+"?per_page=100", r.URL.RequestURI()) 34 writeMRListResponse(t, w) 35 }) 36 37 svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", nil, "", "", false) 38 assert.NoError(t, err) 39 40 _, err = svc.List(context.Background()) 41 assert.NoError(t, err) 42 } 43 44 func TestGitLabServiceToken(t *testing.T) { 45 mux := http.NewServeMux() 46 server := httptest.NewServer(mux) 47 defer server.Close() 48 49 path := "/api/v4/projects/278964/merge_requests" 50 51 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 52 assert.Equal(t, "token-123", r.Header.Get("Private-Token")) 53 writeMRListResponse(t, w) 54 }) 55 56 svc, err := NewGitLabService(context.Background(), "token-123", server.URL, "278964", nil, "", "", false) 57 assert.NoError(t, err) 58 59 _, err = svc.List(context.Background()) 60 assert.NoError(t, err) 61 } 62 63 func TestList(t *testing.T) { 64 mux := http.NewServeMux() 65 server := httptest.NewServer(mux) 66 defer server.Close() 67 68 path := "/api/v4/projects/278964/merge_requests" 69 70 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 71 assert.Equal(t, path+"?per_page=100", r.URL.RequestURI()) 72 writeMRListResponse(t, w) 73 }) 74 75 svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "", "", false) 76 assert.NoError(t, err) 77 78 prs, err := svc.List(context.Background()) 79 assert.NoError(t, err) 80 assert.Len(t, prs, 1) 81 assert.Equal(t, prs[0].Number, 15442) 82 assert.Equal(t, prs[0].Branch, "use-structured-logging-for-db-load-balancer") 83 assert.Equal(t, prs[0].TargetBranch, "master") 84 assert.Equal(t, prs[0].HeadSHA, "2fc4e8b972ff3208ec63b6143e34ad67ff343ad7") 85 } 86 87 func TestListWithLabels(t *testing.T) { 88 mux := http.NewServeMux() 89 server := httptest.NewServer(mux) 90 defer server.Close() 91 92 path := "/api/v4/projects/278964/merge_requests" 93 94 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 95 assert.Equal(t, path+"?labels=feature%2Cready&per_page=100", r.URL.RequestURI()) 96 writeMRListResponse(t, w) 97 }) 98 99 svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{"feature", "ready"}, "", "", false) 100 assert.NoError(t, err) 101 102 _, err = svc.List(context.Background()) 103 assert.NoError(t, err) 104 } 105 106 func TestListWithState(t *testing.T) { 107 mux := http.NewServeMux() 108 server := httptest.NewServer(mux) 109 defer server.Close() 110 111 path := "/api/v4/projects/278964/merge_requests" 112 113 mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { 114 assert.Equal(t, path+"?per_page=100&state=opened", r.URL.RequestURI()) 115 writeMRListResponse(t, w) 116 }) 117 118 svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "opened", "", false) 119 assert.NoError(t, err) 120 121 _, err = svc.List(context.Background()) 122 assert.NoError(t, err) 123 }