65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package support
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/google/uuid"
|
||
|
|
)
|
||
|
|
|
||
|
|
// TestCreateInputAuthValidation covers pre-DB authz-adjacent validation used by
|
||
|
|
// ticket CRUD (subject/body/category/priority). No DATABASE_URL required.
|
||
|
|
func TestCreateInputAuthValidation(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
s := NewService(nil)
|
||
|
|
ctx := context.Background()
|
||
|
|
cid := uuid.MustParse("11111111-1111-1111-1111-111111111111")
|
||
|
|
uid := uuid.MustParse("22222222-2222-2222-2222-222222222222")
|
||
|
|
|
||
|
|
cases := []struct {
|
||
|
|
name string
|
||
|
|
in CreateInput
|
||
|
|
want error
|
||
|
|
}{
|
||
|
|
{name: "empty subject", in: CreateInput{Subject: " ", Body: "hello"}, want: ErrSubjectRequired},
|
||
|
|
{name: "empty body", in: CreateInput{Subject: "Help", Body: ""}, want: ErrBodyRequired},
|
||
|
|
{name: "bad category", in: CreateInput{Subject: "Help", Body: "x", Category: "nope"}, want: ErrInvalidCategory},
|
||
|
|
{name: "bad priority", in: CreateInput{Subject: "Help", Body: "x", Priority: "urgent"}, want: ErrInvalidPriority},
|
||
|
|
}
|
||
|
|
for _, tc := range cases {
|
||
|
|
t.Run(tc.name, func(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
_, err := s.Create(ctx, cid, uid, tc.in)
|
||
|
|
if !errors.Is(err, tc.want) {
|
||
|
|
t.Fatalf("err=%v want %v", err, tc.want)
|
||
|
|
}
|
||
|
|
if msg, ok := ClientError(err); !ok || msg == "" {
|
||
|
|
t.Fatalf("ClientError(%v) = %q ok=%v", err, msg, ok)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNormalizeCategoryDefaultOther(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
got, err := normalizeCategory("")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if got != "other" {
|
||
|
|
t.Fatalf("got %q want other", got)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNormalizePriorityDefaultNormal(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
got, err := normalizePriority("")
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if got != "normal" {
|
||
|
|
t.Fatalf("got %q want normal", got)
|
||
|
|
}
|
||
|
|
}
|