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  }