mirror of
https://github.com/makayabou/asg-server.git
synced 2026-05-02 17:43:36 +02:00
74 lines
1.6 KiB
Go
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.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())
|
|
}
|
|
})
|
|
}
|
|
}
|