mirror of
https://github.com/gophish/gophish
synced 2024-11-15 00:37:14 +00:00
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package worker
|
|
|
|
import (
|
|
"github.com/gophish/gophish/config"
|
|
"github.com/gophish/gophish/models"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
// WorkerSuite is a suite of tests to cover API related functions
|
|
type WorkerSuite struct {
|
|
suite.Suite
|
|
ApiKey string
|
|
}
|
|
|
|
func (s *WorkerSuite) SetupSuite() {
|
|
config.Conf.DBName = "sqlite3"
|
|
config.Conf.DBPath = ":memory:"
|
|
config.Conf.MigrationsPath = "../db/db_sqlite3/migrations/"
|
|
err := models.Setup()
|
|
if err != nil {
|
|
s.T().Fatalf("Failed creating database: %v", err)
|
|
}
|
|
s.Nil(err)
|
|
}
|
|
|
|
func (s *WorkerSuite) TearDownTest() {
|
|
campaigns, _ := models.GetCampaigns(1)
|
|
for _, campaign := range campaigns {
|
|
models.DeleteCampaign(campaign.Id)
|
|
}
|
|
}
|
|
|
|
func (s *WorkerSuite) SetupTest() {
|
|
config.Conf.TestFlag = true
|
|
// Add a group
|
|
group := models.Group{Name: "Test Group"}
|
|
group.Targets = []models.Target{
|
|
models.Target{BaseRecipient: models.BaseRecipient{Email: "test1@example.com", FirstName: "First", LastName: "Example"}},
|
|
models.Target{BaseRecipient: models.BaseRecipient{Email: "test2@example.com", FirstName: "Second", LastName: "Example"}},
|
|
}
|
|
group.UserId = 1
|
|
models.PostGroup(&group)
|
|
|
|
// Add a template
|
|
t := models.Template{Name: "Test Template"}
|
|
t.Subject = "Test subject"
|
|
t.Text = "Text text"
|
|
t.HTML = "<html>Test</html>"
|
|
t.UserId = 1
|
|
models.PostTemplate(&t)
|
|
|
|
// Add a landing page
|
|
p := models.Page{Name: "Test Page"}
|
|
p.HTML = "<html>Test</html>"
|
|
p.UserId = 1
|
|
models.PostPage(&p)
|
|
|
|
// Add a sending profile
|
|
smtp := models.SMTP{Name: "Test Page"}
|
|
smtp.UserId = 1
|
|
smtp.Host = "example.com"
|
|
smtp.FromAddress = "test@test.com"
|
|
models.PostSMTP(&smtp)
|
|
|
|
// Setup and "launch" our campaign
|
|
// Set the status such that no emails are attempted
|
|
c := models.Campaign{Name: "Test campaign"}
|
|
c.UserId = 1
|
|
c.Template = t
|
|
c.Page = p
|
|
c.SMTP = smtp
|
|
c.Groups = []models.Group{group}
|
|
models.PostCampaign(&c, c.UserId)
|
|
c.UpdateStatus(models.CAMPAIGN_EMAILS_SENT)
|
|
}
|
|
|
|
func (s *WorkerSuite) TestMailSendSuccess() {
|
|
// TODO
|
|
}
|