Files
go-sip/cmd/saas-server/identity_test.go
T

69 lines
1.9 KiB
Go

package main
import (
"bytes"
"encoding/json"
"math"
"os"
"path/filepath"
"testing"
)
func TestTestIdentitiesAreOnlyMappedInMemory(t *testing.T) {
dir, sourceID := fixture(t)
original, err := loadSnapshots(dir, sourceID)
if err != nil {
t.Fatal(err)
}
mapped, err := testSnapshots(original)
if err != nil {
t.Fatal(err)
}
if mapped.dispatcherID != sourceID || mapped.tenantID != 90000+original.tenantID {
t.Fatal("wrong identity convention")
}
if _, ok := mapped.tasks["test-1"]; !ok {
t.Fatal("task not prefixed")
}
if _, ok := mapped.tasks["1"]; ok {
t.Fatal("formal task ID still active")
}
var task map[string]any
json.Unmarshal(mapped.tasks["test-1"], &task)
if task["tenant_id"] != float64(90000+original.tenantID) || task["task_id"] != "test-1" {
t.Fatal(task)
}
if !bytes.Equal(mapped.sip, original.sip) || !bytes.Equal(mapped.providers, original.providers) {
t.Fatal("SIP/provider config changed")
}
after, err := loadSnapshots(dir, sourceID)
if err != nil {
t.Fatal(err)
}
for path, want := range map[string][]byte{"sip.json": original.sip, "providers.json": original.providers, "quota.json": original.quota, "tasks/1.json": original.tasks["1"]} {
got, e := os.ReadFile(filepath.Join(dir, path))
if e != nil || !bytes.Equal(want, got) {
t.Fatalf("input changed: %s", path)
}
}
if !bytes.Equal(after.tasks["1"], original.tasks["1"]) {
t.Fatal("source mutated")
}
original.tenantID = math.MaxInt64
if _, err = testSnapshots(original); err == nil {
t.Fatal("overflow accepted")
}
original.tenantID = 1
original.tasks["test-1"] = original.tasks["1"]
if _, err = testSnapshots(original); err == nil {
t.Fatal("colliding task prefix accepted")
}
}
func TestFeedbackQueueDoesNotConsumeFormalQueue(t *testing.T) {
const id = "c046b893-8628-4589-ae50-619d049248a6"
if got := feedbackQueueName(id); got != "agent-call.saas.test.d."+id+".v1" {
t.Fatal(got)
}
}