package auth import ( "context" "local/dndex/storage" "local/dndex/storage/entity" "net/http" "net/http/httptest" "os" "strings" "testing" "github.com/google/uuid" ) func TestGenerate(t *testing.T) { os.Args = os.Args[:1] os.Setenv("AUTH", "true") defer os.Unsetenv("AUTH") fresh := func() (storage.RateLimitedGraph, *http.Request, string) { g := storage.NewRateLimitedGraph() key := uuid.New().String() namespace := uuid.New().String() one := entity.One{ ID: UserKey, Title: key, } if err := g.Insert(context.TODO(), namespace, one); err != nil { t.Fatal(err) } r := httptest.NewRequest(http.MethodPost, "/", strings.NewReader(UserKey+`=`+namespace)) r.Header.Set("content-type", "application/x-www-form-urlencoded") return g, r, key } t.Run("ok", func(t *testing.T) { g, r, key := fresh() salt := uuid.New().String() encoded, err := Generate(g, r, salt) if err != nil { t.Fatal(err) } var token Token if err := token.Decode(salt+key, encoded); err != nil { t.Fatal(err) } }) }