Files
openaccounting-server/core/auth/auth_test.go

91 lines
2.0 KiB
Go
Raw Normal View History

2018-10-19 15:31:41 -04:00
package auth
import (
"errors"
"github.com/openaccounting/oa-server/core/model/db"
"github.com/openaccounting/oa-server/core/model/types"
"github.com/openaccounting/oa-server/core/util"
"github.com/stretchr/testify/assert"
"testing"
"time"
)
type TdUser struct {
db.Datastore
testNum int
}
func (td *TdUser) GetVerifiedUserByEmail(email string) (*types.User, error) {
switch td.testNum {
case 1:
return td.GetVerifiedUserByEmail_1(email)
case 2:
return td.GetVerifiedUserByEmail_2(email)
}
return nil, errors.New("test error")
}
func (td *TdUser) GetVerifiedUserByEmail_1(email string) (*types.User, error) {
return &types.User{
"1",
time.Unix(0, 0),
time.Unix(0, 0),
"John",
"Doe",
"johndoe@email.com",
"password",
"$2a$10$KrtvADe7jwrmYIe3GXFbNupOQaPIvyOKeng5826g4VGOD47TpAisG",
true,
"",
false,
"",
}, nil
}
func (td *TdUser) GetVerifiedUserByEmail_2(email string) (*types.User, error) {
return nil, errors.New("sql error")
}
func TestAuthenticateUser(t *testing.T) {
tests := map[string]struct {
err error
email string
password string
saltedHash string
testNum int
}{
"successful": {
err: nil,
email: "johndoe@email.com",
password: "password",
saltedHash: "$2a$10$KrtvADe7jwrmYIe3GXFbNupOQaPIvyOKeng5826g4VGOD47TpAisG",
testNum: 1,
},
"non-existing user": {
err: errors.New("Invalid email or password"),
email: "nouser@email.com",
password: "password",
saltedHash: "",
testNum: 2,
},
"wrong password": {
err: errors.New("Invalid email or password"),
email: "johndoe@email.com",
password: "bad",
saltedHash: "$2a$10$KrtvADe7jwrmYIe3GXFbNupOQaPIvyOKeng5826g4VGOD47TpAisG",
testNum: 1,
},
}
for name, test := range tests {
t.Logf("Running test case: %s", name)
authService := NewAuthService(&TdUser{testNum: test.testNum}, new(util.StandardBcrypt))
_, err := authService.AuthenticateUser(test.email, test.password)
assert.Equal(t, err, test.err)
}
}