Files
sing-box/protocol/cloudflare/credentials_test.go
2026-03-31 15:32:56 +08:00

44 lines
1.1 KiB
Go

//go:build with_cloudflared
package cloudflare
import (
"encoding/base64"
"testing"
"github.com/google/uuid"
)
func TestParseToken(t *testing.T) {
tunnelID := uuid.New()
secret := []byte("test-secret-32-bytes-long-xxxxx")
tokenJSON := `{"a":"account123","t":"` + tunnelID.String() + `","s":"` + base64.StdEncoding.EncodeToString(secret) + `"}`
token := base64.StdEncoding.EncodeToString([]byte(tokenJSON))
credentials, err := parseToken(token)
if err != nil {
t.Fatal("parseToken: ", err)
}
if credentials.AccountTag != "account123" {
t.Error("expected AccountTag account123, got ", credentials.AccountTag)
}
if credentials.TunnelID != tunnelID {
t.Error("expected TunnelID ", tunnelID, ", got ", credentials.TunnelID)
}
}
func TestParseTokenInvalidBase64(t *testing.T) {
_, err := parseToken("not-valid-base64!!!")
if err == nil {
t.Fatal("expected error for invalid base64")
}
}
func TestParseTokenInvalidJSON(t *testing.T) {
token := base64.StdEncoding.EncodeToString([]byte("{bad json"))
_, err := parseToken(token)
if err == nil {
t.Fatal("expected error for invalid JSON")
}
}