sessions/internal/domain/api_key_test.go

78 lines
1.5 KiB
Go

package domain_test
import (
"fmt"
"testing"
"gitea.dwysokinski.me/twhelp/sessions/internal/domain"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
)
func TestNewCreateAPIKeyParams(t *testing.T) {
t.Parallel()
tests := []struct {
name string
key string
userID int64
expectedErr error
}{
{
name: "OK",
key: uuid.NewString(),
userID: 1,
expectedErr: nil,
},
{
name: "ERR: username is required",
key: "",
expectedErr: domain.ValidationError{
Field: "Key",
Err: domain.ErrRequired,
},
},
{
name: "ERR: userID < 1",
key: uuid.NewString(),
userID: 0,
expectedErr: domain.ValidationError{
Field: "UserID",
Err: domain.MinError{
Min: 1,
},
},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
params, err := domain.NewCreateAPIKeyParams(tt.key, tt.userID)
if tt.expectedErr != nil {
assert.Equal(t, tt.expectedErr, err)
assert.Zero(t, params)
return
}
assert.NoError(t, err)
assert.Equal(t, tt.key, params.Key())
assert.Equal(t, tt.userID, params.UserID())
})
}
}
func TestAPIKeyNotFoundError(t *testing.T) {
t.Parallel()
err := domain.APIKeyNotFoundError{
Key: uuid.NewString(),
}
var _ domain.Error = err
assert.Equal(t, fmt.Sprintf("API key (key=%s) not found", err.Key), err.Error())
assert.Equal(t, err.Error(), err.UserError())
assert.Equal(t, domain.ErrorCodeEntityNotFound, err.Code())
}