github.com/minio/console@v1.4.1/pkg/logger/logger_test.go (about) 1 // This file is part of MinIO Console Server 2 // Copyright (c) 2022 MinIO, Inc. 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Affero General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Affero General Public License for more details. 13 // 14 // You should have received a copy of the GNU Affero General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 package logger 18 19 import ( 20 "context" 21 "fmt" 22 "net/http" 23 "os" 24 "testing" 25 ) 26 27 func testServer(_ http.ResponseWriter, _ *http.Request) { 28 } 29 30 func TestInitializeLogger(t *testing.T) { 31 testServerWillStart := make(chan interface{}) 32 http.HandleFunc("/", testServer) 33 go func() { 34 close(testServerWillStart) 35 err := http.ListenAndServe("127.0.0.1:1337", nil) 36 if err != nil { 37 return 38 } 39 }() 40 <-testServerWillStart 41 42 loggerWebhookEnable := fmt.Sprintf("%s_TEST", EnvLoggerWebhookEnable) 43 loggerWebhookEndpoint := fmt.Sprintf("%s_TEST", EnvLoggerWebhookEndpoint) 44 loggerWebhookAuthToken := fmt.Sprintf("%s_TEST", EnvLoggerWebhookAuthToken) 45 loggerWebhookClientCert := fmt.Sprintf("%s_TEST", EnvLoggerWebhookClientCert) 46 loggerWebhookClientKey := fmt.Sprintf("%s_TEST", EnvLoggerWebhookClientKey) 47 loggerWebhookQueueSize := fmt.Sprintf("%s_TEST", EnvLoggerWebhookQueueSize) 48 49 auditWebhookEnable := fmt.Sprintf("%s_TEST", EnvAuditWebhookEnable) 50 auditWebhookEndpoint := fmt.Sprintf("%s_TEST", EnvAuditWebhookEndpoint) 51 auditWebhookAuthToken := fmt.Sprintf("%s_TEST", EnvAuditWebhookAuthToken) 52 auditWebhookClientCert := fmt.Sprintf("%s_TEST", EnvAuditWebhookClientCert) 53 auditWebhookClientKey := fmt.Sprintf("%s_TEST", EnvAuditWebhookClientKey) 54 auditWebhookQueueSize := fmt.Sprintf("%s_TEST", EnvAuditWebhookQueueSize) 55 56 type args struct { 57 ctx context.Context 58 transport *http.Transport 59 } 60 tests := []struct { 61 name string 62 args args 63 wantErr bool 64 setEnvVars func() 65 unsetEnvVars func() 66 }{ 67 { 68 name: "logger or auditlog is not enabled", 69 args: args{ 70 ctx: context.Background(), 71 transport: http.DefaultTransport.(*http.Transport).Clone(), 72 }, 73 wantErr: false, 74 setEnvVars: func() { 75 }, 76 unsetEnvVars: func() { 77 }, 78 }, 79 { 80 name: "logger webhook initialized correctly", 81 args: args{ 82 ctx: context.Background(), 83 transport: http.DefaultTransport.(*http.Transport).Clone(), 84 }, 85 wantErr: false, 86 setEnvVars: func() { 87 os.Setenv(loggerWebhookEnable, "on") 88 os.Setenv(loggerWebhookEndpoint, "http://127.0.0.1:1337/logger") 89 os.Setenv(loggerWebhookAuthToken, "test") 90 os.Setenv(loggerWebhookClientCert, "") 91 os.Setenv(loggerWebhookClientKey, "") 92 os.Setenv(loggerWebhookQueueSize, "1000") 93 }, 94 unsetEnvVars: func() { 95 os.Unsetenv(loggerWebhookEnable) 96 os.Unsetenv(loggerWebhookEndpoint) 97 os.Unsetenv(loggerWebhookAuthToken) 98 os.Unsetenv(loggerWebhookClientCert) 99 os.Unsetenv(loggerWebhookClientKey) 100 os.Unsetenv(loggerWebhookQueueSize) 101 }, 102 }, 103 { 104 name: "logger webhook failed to initialize", 105 args: args{ 106 ctx: context.Background(), 107 transport: http.DefaultTransport.(*http.Transport).Clone(), 108 }, 109 wantErr: true, 110 setEnvVars: func() { 111 os.Setenv(loggerWebhookEnable, "on") 112 os.Setenv(loggerWebhookEndpoint, "https://aklsjdakljdjkalsd.com") 113 os.Setenv(loggerWebhookAuthToken, "test") 114 os.Setenv(loggerWebhookClientCert, "") 115 os.Setenv(loggerWebhookClientKey, "") 116 os.Setenv(loggerWebhookQueueSize, "1000") 117 }, 118 unsetEnvVars: func() { 119 os.Unsetenv(loggerWebhookEnable) 120 os.Unsetenv(loggerWebhookEndpoint) 121 os.Unsetenv(loggerWebhookAuthToken) 122 os.Unsetenv(loggerWebhookClientCert) 123 os.Unsetenv(loggerWebhookClientKey) 124 os.Unsetenv(loggerWebhookQueueSize) 125 }, 126 }, 127 { 128 name: "auditlog webhook initialized correctly", 129 args: args{ 130 ctx: context.Background(), 131 transport: http.DefaultTransport.(*http.Transport).Clone(), 132 }, 133 wantErr: false, 134 setEnvVars: func() { 135 os.Setenv(auditWebhookEnable, "on") 136 os.Setenv(auditWebhookEndpoint, "http://127.0.0.1:1337/audit") 137 os.Setenv(auditWebhookAuthToken, "test") 138 os.Setenv(auditWebhookClientCert, "") 139 os.Setenv(auditWebhookClientKey, "") 140 os.Setenv(auditWebhookQueueSize, "1000") 141 }, 142 unsetEnvVars: func() { 143 os.Unsetenv(auditWebhookEnable) 144 os.Unsetenv(auditWebhookEndpoint) 145 os.Unsetenv(auditWebhookAuthToken) 146 os.Unsetenv(auditWebhookClientCert) 147 os.Unsetenv(auditWebhookClientKey) 148 os.Unsetenv(auditWebhookQueueSize) 149 }, 150 }, 151 { 152 name: "auditlog webhook failed to initialize", 153 args: args{ 154 ctx: context.Background(), 155 transport: http.DefaultTransport.(*http.Transport).Clone(), 156 }, 157 wantErr: true, 158 setEnvVars: func() { 159 os.Setenv(auditWebhookEnable, "on") 160 os.Setenv(auditWebhookEndpoint, "https://aklsjdakljdjkalsd.com") 161 os.Setenv(auditWebhookAuthToken, "test") 162 os.Setenv(auditWebhookClientCert, "") 163 os.Setenv(auditWebhookClientKey, "") 164 os.Setenv(auditWebhookQueueSize, "1000") 165 }, 166 unsetEnvVars: func() { 167 os.Unsetenv(auditWebhookEnable) 168 os.Unsetenv(auditWebhookEndpoint) 169 os.Unsetenv(auditWebhookAuthToken) 170 os.Unsetenv(auditWebhookClientCert) 171 os.Unsetenv(auditWebhookClientKey) 172 os.Unsetenv(auditWebhookQueueSize) 173 }, 174 }, 175 } 176 for _, tt := range tests { 177 t.Run(tt.name, func(_ *testing.T) { 178 if tt.setEnvVars != nil { 179 tt.setEnvVars() 180 } 181 if err := InitializeLogger(tt.args.ctx, tt.args.transport); (err != nil) != tt.wantErr { 182 t.Errorf("InitializeLogger() error = %v, wantErr %v", err, tt.wantErr) 183 } 184 if tt.unsetEnvVars != nil { 185 tt.unsetEnvVars() 186 } 187 }) 188 } 189 } 190 191 func TestEnableJSON(t *testing.T) { 192 tests := []struct { 193 name string 194 }{ 195 { 196 name: "enable json", 197 }, 198 } 199 for _, tt := range tests { 200 t.Run(tt.name, func(_ *testing.T) { 201 EnableJSON() 202 if !IsJSON() { 203 t.Errorf("EnableJSON() = %v, want %v", IsJSON(), true) 204 } 205 }) 206 } 207 } 208 209 func TestEnableQuiet(t *testing.T) { 210 tests := []struct { 211 name string 212 }{ 213 { 214 name: "enable quiet", 215 }, 216 } 217 for _, tt := range tests { 218 t.Run(tt.name, func(_ *testing.T) { 219 EnableQuiet() 220 if !IsQuiet() { 221 t.Errorf("EnableQuiet() = %v, want %v", IsQuiet(), true) 222 } 223 }) 224 } 225 } 226 227 func TestEnableAnonymous(t *testing.T) { 228 tests := []struct { 229 name string 230 }{ 231 { 232 name: "enable anonymous", 233 }, 234 } 235 for _, tt := range tests { 236 t.Run(tt.name, func(_ *testing.T) { 237 EnableAnonymous() 238 if !IsAnonymous() { 239 t.Errorf("EnableAnonymous() = %v, want %v", IsAnonymous(), true) 240 } 241 }) 242 } 243 }