code.gitea.io/gitea@v1.19.3/modules/log/smtp_test.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package log 5 6 import ( 7 "fmt" 8 "net/smtp" 9 "strings" 10 "testing" 11 "time" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestSMTPLogger(t *testing.T) { 17 prefix := "TestPrefix " 18 level := INFO 19 flags := LstdFlags | LUTC | Lfuncname 20 username := "testuser" 21 password := "testpassword" 22 host := "testhost" 23 subject := "testsubject" 24 sendTos := []string{"testto1", "testto2"} 25 26 logger := NewSMTPLogger() 27 smtpLogger, ok := logger.(*SMTPLogger) 28 assert.True(t, ok) 29 30 err := logger.Init(fmt.Sprintf("{\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d,\"username\":\"%s\",\"password\":\"%s\",\"host\":\"%s\",\"subject\":\"%s\",\"sendTos\":[\"%s\",\"%s\"]}", prefix, level.String(), flags, username, password, host, subject, sendTos[0], sendTos[1])) 31 assert.NoError(t, err) 32 33 assert.Equal(t, flags, smtpLogger.Flags) 34 assert.Equal(t, level, smtpLogger.Level) 35 assert.Equal(t, level, logger.GetLevel()) 36 37 location, _ := time.LoadLocation("EST") 38 39 date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location) 40 41 dateString := date.UTC().Format("2006/01/02 15:04:05") 42 43 event := Event{ 44 level: INFO, 45 msg: "TEST MSG", 46 caller: "CALLER", 47 filename: "FULL/FILENAME", 48 line: 1, 49 time: date, 50 } 51 52 expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) 53 54 var envToHost string 55 var envFrom string 56 var envTo []string 57 var envMsg []byte 58 smtpLogger.sendMailFn = func(addr string, a smtp.Auth, from string, to []string, msg []byte) error { 59 envToHost = addr 60 envFrom = from 61 envTo = to 62 envMsg = msg 63 return nil 64 } 65 66 err = logger.LogEvent(&event) 67 assert.NoError(t, err) 68 assert.Equal(t, host, envToHost) 69 assert.Equal(t, username, envFrom) 70 assert.Equal(t, sendTos, envTo) 71 assert.Contains(t, string(envMsg), expected) 72 73 logger.Flush() 74 75 event.level = WARN 76 expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg) 77 err = logger.LogEvent(&event) 78 assert.NoError(t, err) 79 assert.Equal(t, host, envToHost) 80 assert.Equal(t, username, envFrom) 81 assert.Equal(t, sendTos, envTo) 82 assert.Contains(t, string(envMsg), expected) 83 84 logger.Close() 85 }