| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //go:build unit
- package admin
- import (
- "bytes"
- "net/http"
- "net/http/httptest"
- "testing"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/gin-gonic/gin"
- "github.com/stretchr/testify/require"
- )
- func bindSMTPRequest[T any](t *testing.T, body string) T {
- t.Helper()
- req := httptest.NewRequest(http.MethodPost, "/", bytes.NewBufferString(body))
- req.Header.Set("Content-Type", "application/json")
- c, _ := gin.CreateTestContext(httptest.NewRecorder())
- c.Request = req
- var payload T
- require.NoError(t, c.ShouldBindJSON(&payload))
- return payload
- }
- func TestTestSMTPRequestUseTLSOmissionFallsBackToSavedSetting(t *testing.T) {
- req := bindSMTPRequest[TestSMTPRequest](t, `{}`)
- require.Nil(t, req.SMTPUseTLS)
- require.True(t, resolveSMTPUseTLS(req.SMTPUseTLS, &service.SMTPConfig{UseTLS: true}))
- }
- func TestTestSMTPRequestExplicitFalseOverridesSavedUseTLS(t *testing.T) {
- req := bindSMTPRequest[TestSMTPRequest](t, `{"smtp_use_tls":false}`)
- require.NotNil(t, req.SMTPUseTLS)
- require.False(t, resolveSMTPUseTLS(req.SMTPUseTLS, &service.SMTPConfig{UseTLS: true}))
- }
- func TestTestSMTPRequestExplicitTrueOverridesMissingSavedUseTLS(t *testing.T) {
- req := bindSMTPRequest[TestSMTPRequest](t, `{"smtp_use_tls":true}`)
- require.NotNil(t, req.SMTPUseTLS)
- require.True(t, resolveSMTPUseTLS(req.SMTPUseTLS, nil))
- }
- func TestSendTestEmailRequestPreservesUseTLSOmissionSemantics(t *testing.T) {
- omitted := bindSMTPRequest[SendTestEmailRequest](t, `{"email":"admin@example.com"}`)
- explicitFalse := bindSMTPRequest[SendTestEmailRequest](t, `{"email":"admin@example.com","smtp_use_tls":false}`)
- saved := &service.SMTPConfig{UseTLS: true}
- require.True(t, resolveSMTPUseTLS(omitted.SMTPUseTLS, saved))
- require.False(t, resolveSMTPUseTLS(explicitFalse.SMTPUseTLS, saved))
- }
|