mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-12 03:05:14 +00:00
84 lines
1.6 KiB
Go
84 lines
1.6 KiB
Go
package handler_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/micro/services/users/handler"
|
|
pb "github.com/micro/services/users/proto"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestLogin(t *testing.T) {
|
|
h := testHandler(t)
|
|
|
|
// create some mock data
|
|
var cRsp pb.CreateResponse
|
|
cReq := pb.CreateRequest{
|
|
FirstName: "John",
|
|
LastName: "Doe",
|
|
Email: "john@doe.com",
|
|
Password: "passwordabc",
|
|
}
|
|
err := h.Create(context.TODO(), &cReq, &cRsp)
|
|
assert.NoError(t, err)
|
|
if cRsp.User == nil {
|
|
t.Fatal("No user returned")
|
|
return
|
|
}
|
|
|
|
tt := []struct {
|
|
Name string
|
|
Email string
|
|
Password string
|
|
Error error
|
|
User *pb.User
|
|
}{
|
|
{
|
|
Name: "MissingEmail",
|
|
Password: "passwordabc",
|
|
Error: handler.ErrMissingEmail,
|
|
},
|
|
{
|
|
Name: "MissingPassword",
|
|
Email: "john@doe.com",
|
|
Error: handler.ErrInvalidPassword,
|
|
},
|
|
{
|
|
Name: "UserNotFound",
|
|
Email: "foo@bar.com",
|
|
Password: "passwordabc",
|
|
Error: handler.ErrNotFound,
|
|
},
|
|
{
|
|
Name: "IncorrectPassword",
|
|
Email: "john@doe.com",
|
|
Password: "passwordabcdef",
|
|
Error: handler.ErrIncorrectPassword,
|
|
},
|
|
{
|
|
Name: "Valid",
|
|
Email: "john@doe.com",
|
|
Password: "passwordabc",
|
|
User: cRsp.User,
|
|
},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
t.Run(tc.Name, func(t *testing.T) {
|
|
var rsp pb.LoginResponse
|
|
err := h.Login(context.TODO(), &pb.LoginRequest{
|
|
Email: tc.Email, Password: tc.Password,
|
|
}, &rsp)
|
|
assert.Equal(t, tc.Error, err)
|
|
|
|
if tc.User != nil {
|
|
assertUsersMatch(t, tc.User, rsp.User)
|
|
assert.NotEmpty(t, rsp.Token)
|
|
} else {
|
|
assert.Nil(t, tc.User)
|
|
}
|
|
})
|
|
}
|
|
}
|