package api

import (
	"fmt"
	"testing"
	"time"
)

func TestIssueAndVerifyToken(t *testing.T) {
	secret := "test-secret"
	token := issueToken(secret, time.Hour)
	if !verifyToken(secret, token) {
		t.Fatal("expected valid token")
	}
}

func TestVerifyTokenWrongSecret(t *testing.T) {
	token := issueToken("a", time.Hour)
	if verifyToken("b", token) {
		t.Fatal("expected invalid token for wrong secret")
	}
}

func TestVerifyTokenExpired(t *testing.T) {
	secret := "test-secret"
	exp := time.Now().Add(-time.Hour).Unix()
	token := fmtToken(secret, exp)
	if verifyToken(secret, token) {
		t.Fatal("expected expired token to be rejected")
	}
}

func fmtToken(secret string, exp int64) string {
	return fmt.Sprintf("%d.%s", exp, signToken(secret, exp))
}
