github.com/gophish/gophish@v0.12.2-0.20230915144530-8e7929441393/models/smtp_test.go (about) 1 package models 2 3 import ( 4 "fmt" 5 6 "github.com/jinzhu/gorm" 7 8 check "gopkg.in/check.v1" 9 ) 10 11 func (s *ModelsSuite) TestPostSMTP(c *check.C) { 12 smtp := SMTP{ 13 Name: "Test SMTP", 14 Host: "1.1.1.1:25", 15 FromAddress: "foo@example.com", 16 UserId: 1, 17 } 18 err := PostSMTP(&smtp) 19 c.Assert(err, check.Equals, nil) 20 ss, err := GetSMTPs(1) 21 c.Assert(err, check.Equals, nil) 22 c.Assert(len(ss), check.Equals, 1) 23 } 24 25 func (s *ModelsSuite) TestPostSMTPNoHost(c *check.C) { 26 smtp := SMTP{ 27 Name: "Test SMTP", 28 FromAddress: "foo@example.com", 29 UserId: 1, 30 } 31 err := PostSMTP(&smtp) 32 c.Assert(err, check.Equals, ErrHostNotSpecified) 33 } 34 35 func (s *ModelsSuite) TestPostSMTPNoFrom(c *check.C) { 36 smtp := SMTP{ 37 Name: "Test SMTP", 38 UserId: 1, 39 Host: "1.1.1.1:25", 40 } 41 err := PostSMTP(&smtp) 42 c.Assert(err, check.Equals, ErrFromAddressNotSpecified) 43 } 44 45 func (s *ModelsSuite) TestPostInvalidFrom(c *check.C) { 46 smtp := SMTP{ 47 Name: "Test SMTP", 48 Host: "1.1.1.1:25", 49 FromAddress: "Foo Bar <foo@example.com>", 50 UserId: 1, 51 } 52 err := PostSMTP(&smtp) 53 c.Assert(err, check.Equals, ErrInvalidFromAddress) 54 } 55 56 func (s *ModelsSuite) TestPostInvalidFromEmail(c *check.C) { 57 smtp := SMTP{ 58 Name: "Test SMTP", 59 Host: "1.1.1.1:25", 60 FromAddress: "example.com", 61 UserId: 1, 62 } 63 err := PostSMTP(&smtp) 64 c.Assert(err, check.Equals, ErrInvalidFromAddress) 65 } 66 67 func (s *ModelsSuite) TestPostSMTPValidHeader(c *check.C) { 68 smtp := SMTP{ 69 Name: "Test SMTP", 70 Host: "1.1.1.1:25", 71 FromAddress: "foo@example.com", 72 UserId: 1, 73 Headers: []Header{ 74 Header{Key: "Reply-To", Value: "test@example.com"}, 75 Header{Key: "X-Mailer", Value: "gophish"}, 76 }, 77 } 78 err := PostSMTP(&smtp) 79 c.Assert(err, check.Equals, nil) 80 ss, err := GetSMTPs(1) 81 c.Assert(err, check.Equals, nil) 82 c.Assert(len(ss), check.Equals, 1) 83 } 84 85 func (s *ModelsSuite) TestSMTPGetDialer(ch *check.C) { 86 host := "localhost" 87 port := 25 88 smtp := SMTP{ 89 Host: fmt.Sprintf("%s:%d", host, port), 90 IgnoreCertErrors: false, 91 } 92 d, err := smtp.GetDialer() 93 ch.Assert(err, check.Equals, nil) 94 95 dialer := d.(*Dialer).Dialer 96 ch.Assert(dialer.Host, check.Equals, host) 97 ch.Assert(dialer.Port, check.Equals, port) 98 ch.Assert(dialer.TLSConfig.ServerName, check.Equals, host) 99 ch.Assert(dialer.TLSConfig.InsecureSkipVerify, check.Equals, smtp.IgnoreCertErrors) 100 } 101 102 func (s *ModelsSuite) TestGetInvalidSMTP(ch *check.C) { 103 _, err := GetSMTP(-1, 1) 104 ch.Assert(err, check.Equals, gorm.ErrRecordNotFound) 105 } 106 107 func (s *ModelsSuite) TestDefaultDeniedDial(ch *check.C) { 108 host := "169.254.169.254" 109 port := 25 110 smtp := SMTP{ 111 Host: fmt.Sprintf("%s:%d", host, port), 112 } 113 d, err := smtp.GetDialer() 114 ch.Assert(err, check.Equals, nil) 115 _, err = d.Dial() 116 ch.Assert(err, check.ErrorMatches, ".*upstream connection denied.*") 117 }