| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package service
- import (
- "reflect"
- "testing"
- "github.com/mhsanaei/3x-ui/v3/internal/util/reflect_util"
- "github.com/mhsanaei/3x-ui/v3/internal/web/entity"
- )
- func allSettingJSONTags(t *testing.T) map[string]bool {
- t.Helper()
- tags := make(map[string]bool)
- for _, field := range reflect_util.GetFields(reflect.TypeFor[entity.AllSetting]()) {
- if tag := field.Tag.Get("json"); tag != "" {
- tags[tag] = true
- }
- }
- return tags
- }
- func TestGetFactoryDefaultsExposesBrowserSafeKeys(t *testing.T) {
- defaults := (&SettingService{}).GetFactoryDefaults()
- tests := []struct {
- key string
- want string
- }{
- {key: "webPort", want: "2053"},
- {key: "subPort", want: "2096"},
- }
- for _, tc := range tests {
- t.Run(tc.key, func(t *testing.T) {
- got, ok := defaults[tc.key]
- if !ok {
- t.Fatalf("expected key %q in factory defaults", tc.key)
- }
- if got != tc.want {
- t.Errorf("factory default for %q = %q, want %q", tc.key, got, tc.want)
- }
- })
- }
- }
- func TestGetFactoryDefaultsOmitsSensitiveMaterial(t *testing.T) {
- defaults := (&SettingService{}).GetFactoryDefaults()
- for _, key := range []string{
- "secret",
- "panelGuid",
- "nodeMtlsCaCertPem",
- "nodeMtlsCaKeyPem",
- "nodeMtlsClientCertPem",
- "nodeMtlsClientKeyPem",
- "xrayTemplateConfig",
- "tgBotToken",
- "twoFactorToken",
- "ldapPassword",
- "smtpPassword",
- } {
- t.Run(key, func(t *testing.T) {
- if _, ok := defaults[key]; ok {
- t.Errorf("factory defaults must not expose %q", key)
- }
- })
- }
- }
- func TestGetFactoryDefaultsInvariant(t *testing.T) {
- defaults := (&SettingService{}).GetFactoryDefaults()
- tags := allSettingJSONTags(t)
- for key := range defaults {
- t.Run(key, func(t *testing.T) {
- if !tags[key] {
- t.Errorf("key %q is not an entity.AllSetting json tag", key)
- }
- if factoryDefaultSecretKeys[key] {
- t.Errorf("key %q is in the credential deny-list and must not be returned", key)
- }
- })
- }
- }
|