asg-server/test/e2e/device_selection_test.go
2025-08-08 06:14:08 +07:00

74 lines
1.6 KiB
Go

package e2e
import (
"testing"
"github.com/capcom6/go-helpers/anys"
)
func TestDeviceSelection(t *testing.T) {
// Register first device
firstDevice := mobileDeviceRegister(t, publicMobileClient)
client := publicUserClient.Clone().SetBasicAuth(firstDevice.Login, firstDevice.Password)
// Register a second device to test explicit device selection
secondDevice := mobileDeviceRegister(
t,
publicMobileClient,
(&mobileDeviceRegisterOptions{}).
withCredentials(firstDevice.Login, firstDevice.Password),
)
cases := []struct {
name string
deviceID *string
expectedStatusCode int
}{
{
name: "explicit device selection",
deviceID: anys.AsPointer(secondDevice.ID),
expectedStatusCode: 202,
},
{
name: "invalid device ID",
deviceID: anys.AsPointer("invalid-device-id"),
expectedStatusCode: 400,
},
{
name: "no device ID (random selection)",
deviceID: nil,
expectedStatusCode: 202,
},
}
req := map[string]any{
"textMessage": map[string]any{
"text": "test",
},
"phoneNumbers": []string{
"+79999999999",
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
if c.deviceID != nil {
req["deviceId"] = *c.deviceID
} else {
delete(req, "deviceId")
}
res, err := client.R().
SetHeader("Content-Type", "application/json").
SetBody(req).
Post("messages")
if err != nil {
t.Fatal(err)
}
if res.StatusCode() != c.expectedStatusCode {
t.Fatal(res.StatusCode(), res.String())
}
})
}
}