You've already forked openaccounting-server
mirror of
https://github.com/openaccounting/oa-server.git
synced 2025-12-09 09:00:42 +13:00
91 lines
2.0 KiB
Go
91 lines
2.0 KiB
Go
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)
|
|
}
|
|
}
|