Files
backrest/internal/auth/auth_test.go
2024-02-01 01:19:16 -08:00

70 lines
1.5 KiB
Go

package auth
import (
"errors"
"testing"
v1 "github.com/garethgeorge/backrest/gen/go/v1"
"github.com/garethgeorge/backrest/internal/config"
)
func TestLogin(t *testing.T) {
pass := makePass(t, "testPass")
pass2 := makePass(t, "testPass2")
config := &config.MemoryStore{
Config: &v1.Config{
Auth: &v1.Auth{
Users: []*v1.User{
{
Name: "test",
Password: &v1.User_PasswordBcrypt{
PasswordBcrypt: pass,
},
},
{
Name: "anotheruser",
Password: &v1.User_PasswordBcrypt{
PasswordBcrypt: pass2,
},
},
},
},
},
}
auth := NewAuthenticator([]byte("key"), config)
tests := []struct {
name string
username string
password string
wantErr error
}{
{"user 1 valid password", "test", "testPass", nil},
{"user 2 valid password", "anotheruser", "testPass2", nil},
{"user 1 wrong password", "test", "wrongPass", ErrInvalidPassword},
{"invalid user", "nonexistent", "testPass", ErrUserNotFound},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
user, err := auth.Login(test.username, test.password)
if !errors.Is(err, test.wantErr) {
t.Fatalf("Expected error %v, got %v", test.wantErr, err)
}
if err == nil && user.Name != test.username {
t.Fatalf("Expected user name to be '%s', got '%s'", test.username, user.Name)
}
})
}
}
func makePass(t *testing.T, pass string) string {
p, err := CreatePassword(pass)
if err != nil {
t.Fatalf("Error creating password: %v", err)
}
return p
}