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  }