@@ -1576,3 +1576,73 @@ func TestValidateLabel(t *testing.T) {
15761576 })
15771577 }
15781578}
1579+
1580+ func TestValidateAllowedDomains (t * testing.T ) {
1581+ tests := []struct {
1582+ name string
1583+ domains []string
1584+ wantErr bool
1585+ }{
1586+ {
1587+ name : "Test 1: Success: Empty slice" ,
1588+ domains : []string {},
1589+ wantErr : false ,
1590+ },
1591+ {
1592+ name : "Test 2: Success: Nil slice" ,
1593+ domains : nil ,
1594+ wantErr : false ,
1595+ },
1596+ {
1597+ name : "Test 3: Success: Valid domains" ,
1598+ domains : []string {"example.com" , "api.nginx.com" , "sub.domain.io" },
1599+ wantErr : false ,
1600+ },
1601+ {
1602+ name : "Test 4: Failure: Domain contains space" ,
1603+ domains : []string {"valid.com" , "bad domain.com" },
1604+ wantErr : true ,
1605+ },
1606+ {
1607+ name : "Test 5: Failure: Empty string domain" ,
1608+ domains : []string {"valid.com" , "" },
1609+ wantErr : true ,
1610+ },
1611+ {
1612+ name : "Test 6: Failure: Domain contains forward slash /" ,
1613+ domains : []string {"domain.com/path" },
1614+ wantErr : true ,
1615+ },
1616+ {
1617+ name : "Test 7: Failure: Domain contains backward slash \\ " ,
1618+ domains : []string {"domain.com\\ path" },
1619+ wantErr : true ,
1620+ },
1621+ {
1622+ name : "Test 8: Failure: Mixed valid and invalid (first is invalid)" ,
1623+ domains : []string {" only.com" , "good.com" },
1624+ wantErr : true ,
1625+ },
1626+ }
1627+
1628+ for _ , tt := range tests {
1629+ t .Run (tt .name , func (t * testing.T ) {
1630+ var logBuffer bytes.Buffer
1631+ logHandler := slog .NewTextHandler (& logBuffer , & slog.HandlerOptions {Level : slog .LevelError })
1632+
1633+ originalLogger := slog .Default ()
1634+ slog .SetDefault (slog .New (logHandler ))
1635+ defer slog .SetDefault (originalLogger )
1636+
1637+ actualErr := validateAllowedDomains (tt .domains )
1638+
1639+ if tt .wantErr {
1640+ require .Error (t , actualErr , "Expected an error but got nil." )
1641+ assert .Contains (t , logBuffer .String (), "domain is not specified in allowed_domains" ,
1642+ "Expected the error log message to be present in the output." )
1643+ } else {
1644+ assert .NoError (t , actualErr , "Did not expect an error but got one: %v" , actualErr )
1645+ }
1646+ })
1647+ }
1648+ }
0 commit comments