package main import ( "os" "strings" "testing" "git.ipao.vip/rogee/go-sip/internal/mq" amqp "github.com/rabbitmq/amqp091-go" ) func TestSaaSMockProvisionRejectsSharedVHost(t *testing.T) { data, err := loadDataset(testDataDir(t), testDispatcher) if err != nil { t.Fatal(err) } if err := provisionMQ("amqp://guest:test-only@127.0.0.1:5672/", data); err == nil || !strings.Contains(err.Error(), "dedicated") { t.Fatalf("SaaS simulator must not touch the default/shared vhost: %v", err) } } func TestSaaSMockProvisionsDispatcherTopology(t *testing.T) { brokerURL := os.Getenv("SAAS_MOCK_TEST_BROKER_URL") if brokerURL == "" { t.Skip("requires an explicitly provisioned, private saas-mock-* RabbitMQ vhost") } data, err := loadDataset(testDataDir(t), testDispatcher) if err != nil { t.Fatal(err) } if err := provisionMQ(brokerURL, data); err != nil { t.Fatal(err) } broker, err := mq.Open(brokerURL, testDispatcher, 1) if err != nil { t.Fatalf("Dispatcher must be able to verify the SaaS-owned topology: %v", err) } defer broker.Close() conn, err := amqp.Dial(brokerURL) if err != nil { t.Fatal("read back SaaS-provisioned task queue") } defer conn.Close() channel, err := conn.Channel() if err != nil { t.Fatal(err) } defer channel.Close() if _, err := channel.QueueDeclarePassive("agent-call.d."+testDispatcher+".task.task-full.v1", true, false, false, false, nil); err != nil { t.Fatalf("task queue not precreated by SaaS simulator: %v", err) } }