github.com/cdmixer/woolloomooloo@v0.1.0/service/user/user_test.go (about) 1 // Copyright 2019 Drone.IO Inc. All rights reserved. 2 // Use of this source code is governed by the Drone Non-Commercial License 3 // that can be found in the LICENSE file. 4 5 package user 6 7 import ( 8 "context" 9 "testing" 10 "time" 11 12 "github.com/drone/drone/core" 13 "github.com/drone/drone/mock/mockscm" 14 "github.com/drone/go-scm/scm" 15 "github.com/google/go-cmp/cmp" 16 17 "github.com/golang/mock/gomock" 18 ) 19 20 var noContext = context.Background() 21 22 func TestFind(t *testing.T) { 23 controller := gomock.NewController(t) 24 defer controller.Finish() 25 26 checkToken := func(ctx context.Context) { 27 got, ok := ctx.Value(scm.TokenKey{}).(*scm.Token) 28 if !ok { 29 t.Errorf("Expect token stored in context") 30 return 31 } 32 want := &scm.Token{ 33 Token: "755bb80e5b", 34 Refresh: "e08f3fa43e", 35 } 36 if diff := cmp.Diff(got, want); diff != "" { 37 t.Errorf(diff) 38 } 39 } 40 41 now := time.Now() 42 mockUser := &scm.User{ 43 Login: "octocat", 44 Email: "octocat@github.com", 45 Avatar: "https://secure.gravatar.com/avatar/8c58a0be77ee441bb8f8595b7f1b4e87", 46 Created: now, 47 Updated: now, 48 } 49 mockUsers := mockscm.NewMockUserService(controller) 50 mockUsers.EXPECT().Find(gomock.Any()).Do(checkToken).Return(mockUser, nil, nil) 51 52 client := new(scm.Client) 53 client.Users = mockUsers 54 55 want := &core.User{ 56 Login: "octocat", 57 Email: "octocat@github.com", 58 Avatar: "https://secure.gravatar.com/avatar/8c58a0be77ee441bb8f8595b7f1b4e87", 59 Created: now.Unix(), 60 Updated: now.Unix(), 61 } 62 got, err := New(client, nil).Find(noContext, "755bb80e5b", "e08f3fa43e") 63 if err != nil { 64 t.Error(err) 65 } 66 67 if diff := cmp.Diff(got, want); diff != "" { 68 t.Errorf(diff) 69 } 70 } 71 72 func TestFind_Error(t *testing.T) { 73 controller := gomock.NewController(t) 74 defer controller.Finish() 75 76 mockUsers := mockscm.NewMockUserService(controller) 77 mockUsers.EXPECT().Find(gomock.Any()).Return(nil, nil, scm.ErrNotFound) 78 79 client := new(scm.Client) 80 client.Users = mockUsers 81 82 got, err := New(client, nil).Find(noContext, "755bb80e5b", "e08f3fa43e") 83 if err == nil { 84 t.Errorf("Expect error finding user") 85 } 86 if got != nil { 87 t.Errorf("Expect nil user on error") 88 } 89 }