github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/routers/api/user/repo_test.go (about)

     1  package user_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"errors"
     6  	"io/ioutil"
     7  	"net/http"
     8  	"net/http/httptest"
     9  	"testing"
    10  
    11  	"github.com/covergates/covergates/core"
    12  	"github.com/covergates/covergates/mock"
    13  	"github.com/covergates/covergates/routers/api/request"
    14  	"github.com/covergates/covergates/routers/api/user"
    15  	"github.com/gin-gonic/gin"
    16  	"github.com/golang/mock/gomock"
    17  )
    18  
    19  func TestHandleSynchronizeRepo(t *testing.T) {
    20  	ctrl := gomock.NewController(t)
    21  	defer ctrl.Finish()
    22  
    23  	// data
    24  	u := &core.User{
    25  		Login: "test",
    26  	}
    27  
    28  	// mock
    29  	service := mock.NewMockRepoService(ctrl)
    30  	service.EXPECT().Synchronize(gomock.Any(), gomock.Eq(u)).Times(1).Return(nil)
    31  	service.EXPECT().Synchronize(gomock.Any(), gomock.Eq(u)).Times(1).Return(errors.New(""))
    32  
    33  	r := gin.Default()
    34  	r.Use(func(c *gin.Context) {
    35  		request.WithUser(c, u)
    36  	})
    37  	r.PATCH("/user/repos", user.HandleSynchronizeRepo(service))
    38  
    39  	req, _ := http.NewRequest("PATCH", "/user/repos", nil)
    40  
    41  	testRequest(r, req, func(w *httptest.ResponseRecorder) {
    42  		result := w.Result()
    43  		if result.StatusCode != 200 {
    44  			t.Fatal()
    45  		}
    46  	})
    47  
    48  	testRequest(r, req, func(w *httptest.ResponseRecorder) {
    49  		result := w.Result()
    50  		if result.StatusCode != 500 {
    51  			t.Fatal()
    52  		}
    53  	})
    54  }
    55  
    56  func TestHandleListRepo(t *testing.T) {
    57  	ctrl := gomock.NewController(t)
    58  	defer ctrl.Finish()
    59  
    60  	// data
    61  	u := &core.User{}
    62  
    63  	// mock
    64  	store := mock.NewMockUserStore(ctrl)
    65  	store.EXPECT().ListRepositories(gomock.Eq(u)).Return([]*core.Repo{}, nil)
    66  	store.EXPECT().ListRepositories(gomock.Eq(u)).Return(nil, errors.New(""))
    67  
    68  	r := gin.Default()
    69  	r.Use(func(c *gin.Context) {
    70  		request.WithUser(c, u)
    71  	})
    72  	r.GET("/user/repos", user.HandleListRepo(store))
    73  
    74  	req, _ := http.NewRequest("GET", "/user/repos", nil)
    75  
    76  	testRequest(r, req, func(w *httptest.ResponseRecorder) {
    77  		result := w.Result()
    78  		if result.StatusCode != 200 {
    79  			t.Fatal()
    80  		}
    81  	})
    82  
    83  	testRequest(r, req, func(w *httptest.ResponseRecorder) {
    84  		result := w.Result()
    85  		if result.StatusCode != 500 {
    86  			t.Fatal()
    87  		}
    88  		defer result.Body.Close()
    89  		data, _ := ioutil.ReadAll(result.Body)
    90  		var repos []*core.Repo
    91  		if err := json.Unmarshal(data, &repos); err != nil {
    92  			t.Fatal(err)
    93  		}
    94  		if len(repos) != 0 {
    95  			t.Fatal()
    96  		}
    97  	})
    98  }