github.com/topsteplocal/gophish@v0.6.0/models/result_test.go (about) 1 package models 2 3 import ( 4 "fmt" 5 "net/mail" 6 "regexp" 7 "time" 8 9 "gopkg.in/check.v1" 10 ) 11 12 func (s *ModelsSuite) TestGenerateResultId(c *check.C) { 13 r := Result{} 14 r.GenerateId() 15 match, err := regexp.Match("[a-zA-Z0-9]{7}", []byte(r.RId)) 16 c.Assert(err, check.Equals, nil) 17 c.Assert(match, check.Equals, true) 18 } 19 20 func (s *ModelsSuite) TestFormatAddress(c *check.C) { 21 r := Result{ 22 FirstName: "John", 23 LastName: "Doe", 24 Email: "johndoe@example.com", 25 } 26 expected := &mail.Address{ 27 Name: "John Doe", 28 Address: "johndoe@example.com", 29 } 30 c.Assert(r.FormatAddress(), check.Equals, expected.String()) 31 32 r = Result{ 33 Email: "johndoe@example.com", 34 } 35 c.Assert(r.FormatAddress(), check.Equals, r.Email) 36 } 37 38 func (s *ModelsSuite) TestResultSendingStatus(ch *check.C) { 39 c := s.createCampaignDependencies(ch) 40 ch.Assert(PostCampaign(&c, c.UserId), check.Equals, nil) 41 // This campaign wasn't scheduled, so we expect the status to 42 // be sending 43 fmt.Println("Campaign STATUS") 44 fmt.Println(c.Status) 45 for _, r := range c.Results { 46 ch.Assert(r.Status, check.Equals, STATUS_SENDING) 47 } 48 } 49 func (s *ModelsSuite) TestResultScheduledStatus(ch *check.C) { 50 c := s.createCampaignDependencies(ch) 51 c.LaunchDate = time.Now().UTC().Add(time.Hour * time.Duration(1)) 52 ch.Assert(PostCampaign(&c, c.UserId), check.Equals, nil) 53 // This campaign wasn't scheduled, so we expect the status to 54 // be sending 55 for _, r := range c.Results { 56 ch.Assert(r.Status, check.Equals, STATUS_SCHEDULED) 57 } 58 } 59 60 func (s *ModelsSuite) TestDuplicateResults(ch *check.C) { 61 group := Group{Name: "Test Group"} 62 group.Targets = []Target{ 63 Target{Email: "test1@example.com", FirstName: "First", LastName: "Example"}, 64 Target{Email: "test1@example.com", FirstName: "Duplicate", LastName: "Duplicate"}, 65 Target{Email: "test2@example.com", FirstName: "Second", LastName: "Example"}, 66 } 67 group.UserId = 1 68 ch.Assert(PostGroup(&group), check.Equals, nil) 69 70 // Add a template 71 t := Template{Name: "Test Template"} 72 t.Subject = "{{.RId}} - Subject" 73 t.Text = "{{.RId}} - Text" 74 t.HTML = "{{.RId}} - HTML" 75 t.UserId = 1 76 ch.Assert(PostTemplate(&t), check.Equals, nil) 77 78 // Add a landing page 79 p := Page{Name: "Test Page"} 80 p.HTML = "<html>Test</html>" 81 p.UserId = 1 82 ch.Assert(PostPage(&p), check.Equals, nil) 83 84 // Add a sending profile 85 smtp := SMTP{Name: "Test Page"} 86 smtp.UserId = 1 87 smtp.Host = "example.com" 88 smtp.FromAddress = "test@test.com" 89 ch.Assert(PostSMTP(&smtp), check.Equals, nil) 90 91 c := Campaign{Name: "Test campaign"} 92 c.UserId = 1 93 c.Template = t 94 c.Page = p 95 c.SMTP = smtp 96 c.Groups = []Group{group} 97 98 ch.Assert(PostCampaign(&c, c.UserId), check.Equals, nil) 99 ch.Assert(len(c.Results), check.Equals, 2) 100 ch.Assert(c.Results[0].Email, check.Equals, group.Targets[0].Email) 101 ch.Assert(c.Results[1].Email, check.Equals, group.Targets[2].Email) 102 }