feat: sync all features to image2api
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package adobe
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// captured from live firefly.adobe.com traffic:
|
||||
//
|
||||
// ark: 91818c89a54748463.1048135404|r=ap-southeast-1|…|rid=84|ag=101|…
|
||||
// ftr: dbd9d77a491b4437bc5c4d649a04a794_1785846934401_6890_UDF43-m4_31ck_YRQXWT0P1AE=-7389-v2_tt
|
||||
//
|
||||
// The Arkose slot is deliberately emitted empty rather than synthesized — see
|
||||
// buildARPSessionID — so the expected ftr ends in "_31ck__tt".
|
||||
var (
|
||||
arkPat = regexp.MustCompile(`^[0-9a-f]{17}\.[1-9][0-9]{9}\|r=ap-southeast-1\|.*\|rid=[0-9]{1,2}\|ag=101\|`)
|
||||
ftrPat = regexp.MustCompile(`^[0-9a-f]{32}_[0-9]{13}_[0-9]{4,5}_UDF43-m4_31ck__tt$`)
|
||||
)
|
||||
|
||||
func TestARPSessionIDShape(t *testing.T) {
|
||||
raw, err := base64.StdEncoding.DecodeString(buildARPSessionID("tok-a"))
|
||||
if err != nil {
|
||||
t.Fatalf("not base64: %v", err)
|
||||
}
|
||||
var got struct{ Sid, Ark, Ftr string }
|
||||
if err := json.Unmarshal(raw, &got); err != nil {
|
||||
t.Fatalf("not json: %v", err)
|
||||
}
|
||||
if !arkPat.MatchString(got.Ark) {
|
||||
t.Errorf("ark shape mismatch:\n%s", got.Ark)
|
||||
}
|
||||
if !ftrPat.MatchString(got.Ftr) {
|
||||
t.Errorf("ftr shape mismatch:\n%s", got.Ftr)
|
||||
}
|
||||
if len(got.Sid) != 36 {
|
||||
t.Errorf("sid not a uuid: %q", got.Sid)
|
||||
}
|
||||
}
|
||||
|
||||
// ark must differ per call — a frozen blob is a cross-account correlation key.
|
||||
func TestARKVariesAcrossCalls(t *testing.T) {
|
||||
if buildARKBlob() == buildARKBlob() {
|
||||
t.Error("ark is constant across calls")
|
||||
}
|
||||
}
|
||||
|
||||
// pid is stable per token but distinct across tokens.
|
||||
func TestPIDStablePerToken(t *testing.T) {
|
||||
defer ReleasePID("tok-x")
|
||||
defer ReleasePID("tok-y")
|
||||
if allocPID("tok-x") != allocPID("tok-x") {
|
||||
t.Error("pid changed for the same token")
|
||||
}
|
||||
if allocPID("tok-x") == allocPID("tok-y") {
|
||||
t.Error("two tokens share a pid")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user