@@ -4,8 +4,18 @@ import (
44 "testing"
55
66 "github.com/splitio/go-split-commons/v9/conf"
7+ "github.com/splitio/go-split-commons/v9/dtos"
8+ "github.com/splitio/go-toolkit/v5/logging"
79)
810
11+ // MockLogger implements logging.LoggerInterface for testing
12+ type MockLogger struct {
13+ logging.LoggerInterface
14+ }
15+
16+ func (m * MockLogger ) Error (msg ... interface {}) {}
17+
18+
919func TestSdkConfNormalization (t * testing.T ) {
1020 cfg := Default ()
1121 cfg .OperationMode = "invalid_mode"
@@ -45,6 +55,94 @@ func TestSdkConfNormalization(t *testing.T) {
4555 }
4656}
4757
58+ func TestSanitizeGlobalFallbackTreatment (t * testing.T ) {
59+ logger := & MockLogger {}
60+
61+ // Test nil input
62+ result := SanitizeGlobalFallbackTreatment (nil , logger )
63+ if result != nil {
64+ t .Error ("Expected nil result for nil input" )
65+ }
66+
67+ // Test valid treatment
68+ validTreatment := "on"
69+ global := & dtos.FallbackTreatment {Treatment : & validTreatment }
70+ result = SanitizeGlobalFallbackTreatment (global , logger )
71+ if result == nil || * result .Treatment != validTreatment {
72+ t .Error ("Expected valid treatment to be returned as is" )
73+ }
74+
75+ // Test invalid treatment (too long)
76+ longTreatment := "thisIsAVeryLongTreatmentThatExceedsTheMaxLengthOfOneHundredCharactersAndShouldDefinitelyBeTruncatedBecauseItIsTooLongToBeValid"
77+ global = & dtos.FallbackTreatment {Treatment : & longTreatment }
78+ result = SanitizeGlobalFallbackTreatment (global , logger )
79+ if result != nil {
80+ t .Error ("Expected nil result for invalid treatment" )
81+ }
82+
83+ // Test invalid treatment (invalid characters)
84+ invalidTreatment := "invalid treatment"
85+ global = & dtos.FallbackTreatment {Treatment : & invalidTreatment }
86+ result = SanitizeGlobalFallbackTreatment (global , logger )
87+ if result != nil {
88+ t .Error ("Expected nil result for treatment with invalid characters" )
89+ }
90+ }
91+
92+ func TestSanitizeByFlagFallBackTreatment (t * testing.T ) {
93+ logger := & MockLogger {}
94+
95+ // Test empty map
96+ result := SanitizeByFlagFallBackTreatment (nil , logger )
97+ if len (result ) != 0 {
98+ t .Error ("Expected empty map for nil input" )
99+ }
100+
101+ // Test valid entries
102+ validTreatment := "on"
103+ validFlag := "feature1"
104+ byFlag := map [string ]dtos.FallbackTreatment {
105+ validFlag : {Treatment : & validTreatment },
106+ }
107+ result = SanitizeByFlagFallBackTreatment (byFlag , logger )
108+ if len (result ) != 1 || * result [validFlag ].Treatment != validTreatment {
109+ t .Error ("Expected valid flag and treatment to be included" )
110+ }
111+
112+ // Test invalid flag name (contains space)
113+ invalidFlag := "invalid flag"
114+ byFlag = map [string ]dtos.FallbackTreatment {
115+ invalidFlag : {Treatment : & validTreatment },
116+ }
117+ result = SanitizeByFlagFallBackTreatment (byFlag , logger )
118+ if len (result ) != 0 {
119+ t .Error ("Expected invalid flag name to be excluded" )
120+ }
121+
122+ // Test invalid treatment
123+ invalidTreatment := "invalid treatment"
124+ byFlag = map [string ]dtos.FallbackTreatment {
125+ validFlag : {Treatment : & invalidTreatment },
126+ }
127+ result = SanitizeByFlagFallBackTreatment (byFlag , logger )
128+ if len (result ) != 0 {
129+ t .Error ("Expected invalid treatment to be excluded" )
130+ }
131+
132+ // Test multiple entries with mix of valid and invalid
133+ validTreatment2 := "off"
134+ validFlag2 := "feature2"
135+ byFlag = map [string ]dtos.FallbackTreatment {
136+ validFlag : {Treatment : & validTreatment },
137+ validFlag2 : {Treatment : & validTreatment2 },
138+ invalidFlag : {Treatment : & validTreatment },
139+ }
140+ result = SanitizeByFlagFallBackTreatment (byFlag , logger )
141+ if len (result ) != 2 || * result [validFlag ].Treatment != validTreatment || * result [validFlag2 ].Treatment != validTreatment2 {
142+ t .Error ("Expected only valid entries to be included" )
143+ }
144+ }
145+
48146func TestValidRates (t * testing.T ) {
49147 cfg := Default ()
50148 err := Normalize ("asd" , cfg )
0 commit comments