Files
VoCat/internal/server/developer_settings_test.go

53 lines
1.7 KiB
Go

package server
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"strings"
"testing"
"vocat/internal/developer"
"vocat/internal/store"
)
func TestDeveloperOnlySettingsAreHiddenWhenModeIsOff(t *testing.T) {
server := &Server{developerEnabled: false}
for _, handler := range []func(http.ResponseWriter, *http.Request){
server.handleDeveloperSettings,
server.handleHTTPSSettings,
server.handleHTTPSCertificate,
} {
response := httptest.NewRecorder()
handler(response, httptest.NewRequest(http.MethodGet, "/api/settings/developer", nil))
if response.Code != http.StatusNotFound {
t.Fatalf("developer-only endpoint status = %d, want 404", response.Code)
}
}
}
func TestDeveloperSettingsUpdatesGlobalSMSLimit(t *testing.T) {
ctx := context.Background()
database, err := store.Open(ctx, ":memory:")
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() { _ = database.Close() })
enabled, _ := json.Marshal(map[string]bool{"enabled": true})
if err := database.UpsertAppSetting(ctx, store.AppSetting{Key: developer.EnabledSettingKey, Value: enabled}); err != nil {
t.Fatal(err)
}
server := &Server{store: database, developerEnabled: true, logger: regionTestLogger(), maxRequestBodyBytes: 4096}
request := httptest.NewRequest(http.MethodPut, "/api/settings/developer", strings.NewReader(`{"sms_hourly_limit":17}`))
request.Header.Set("Content-Type", "application/json")
response := httptest.NewRecorder()
server.handleDeveloperSettings(response, request)
if response.Code != http.StatusOK {
t.Fatalf("status = %d, body=%s", response.Code, response.Body.String())
}
if got := developer.SMSHourlyLimit(ctx, database); got != 17 {
t.Fatalf("SMS hourly limit = %d, want 17", got)
}
}