52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|