[messages] add unit tests

This commit is contained in:
Aleksandr Soloshenko 2025-03-30 17:03:18 +07:00 committed by Aleksandr
parent 11bdf0e033
commit 8cdb4a1d13
2 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,86 @@
package converters_test
import (
"testing"
"time"
"github.com/android-sms-gateway/client-go/smsgateway"
"github.com/android-sms-gateway/server/internal/sms-gateway/handlers/converters"
"github.com/android-sms-gateway/server/internal/sms-gateway/modules/messages"
"github.com/capcom6/go-helpers/anys"
"github.com/go-playground/assert/v2"
)
func TestMessageToDTO(t *testing.T) {
// Set up a fixed time for testing
now := time.Now().UTC()
// Define test cases
tests := []struct {
name string
input messages.MessageOut
expected smsgateway.MobileMessage
}{
{
name: "Full message with all fields",
input: messages.MessageOut{
MessageIn: messages.MessageIn{
ID: "msg-123",
Message: "Test message content",
PhoneNumbers: []string{"+1234567890", "+9876543210"},
IsEncrypted: true,
SimNumber: anys.AsPointer(uint8(2)),
WithDeliveryReport: anys.AsPointer(true),
TTL: anys.AsPointer(uint64(3600)),
ValidUntil: anys.AsPointer(now.Add(24 * time.Hour)),
Priority: 100,
},
CreatedAt: now,
},
expected: smsgateway.MobileMessage{
Message: smsgateway.Message{
ID: "msg-123",
Message: "Test message content",
PhoneNumbers: []string{"+1234567890", "+9876543210"},
IsEncrypted: true,
SimNumber: anys.AsPointer(uint8(2)),
WithDeliveryReport: anys.AsPointer(true),
TTL: anys.AsPointer(uint64(3600)),
ValidUntil: anys.AsPointer(now.Add(24 * time.Hour)),
Priority: 100,
},
CreatedAt: now,
},
},
{
name: "Minimal message with required fields only",
input: messages.MessageOut{
MessageIn: messages.MessageIn{
ID: "msg-456",
Message: "Another test message",
PhoneNumbers: []string{"+1122334455"},
},
CreatedAt: now,
},
expected: smsgateway.MobileMessage{
Message: smsgateway.Message{
ID: "msg-456",
Message: "Another test message",
PhoneNumbers: []string{"+1122334455"},
},
CreatedAt: now,
},
},
}
// Execute tests
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
// Call the function under test
result := converters.MessageToDTO(tc.input)
// Assert the results
assert.Equal(t, tc.expected, result)
})
}
}

28
test/e2e/clients_test.go Normal file
View File

@ -0,0 +1,28 @@
package e2e
import (
"time"
"github.com/go-resty/resty/v2"
)
const (
PublicURL = "http://localhost:3000/api"
PrivateURL = "http://localhost:3001/api"
)
var (
publicMobileClient = resty.New().
SetBaseURL(PublicURL + "/mobile/v1").
SetTimeout(300 * time.Millisecond)
privateMobileClient = resty.New().
SetBaseURL(PrivateURL + "/mobile/v1").
SetTimeout(300 * time.Millisecond)
publicUserClient = resty.New().
SetBaseURL(PublicURL + "/3rdparty/v1").
SetTimeout(300 * time.Millisecond)
privateUserClient = resty.New().
SetBaseURL(PrivateURL + "/3rdparty/v1").
SetTimeout(300 * time.Millisecond)
)