mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 20:12:39 +08:00
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
//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))
|
|
}
|