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 }