github.com/dzsibi/gophish@v0.7.1-0.20190719042945-1f16c7237d0d/models/group_test.go (about) 1 package models 2 3 import ( 4 "github.com/jinzhu/gorm" 5 "gopkg.in/check.v1" 6 ) 7 8 func (s *ModelsSuite) TestPostGroup(c *check.C) { 9 g := Group{Name: "Test Group"} 10 g.Targets = []Target{Target{BaseRecipient: BaseRecipient{Email: "test@example.com"}}} 11 g.UserId = 1 12 err := PostGroup(&g) 13 c.Assert(err, check.Equals, nil) 14 c.Assert(g.Name, check.Equals, "Test Group") 15 c.Assert(g.Targets[0].Email, check.Equals, "test@example.com") 16 } 17 18 func (s *ModelsSuite) TestPostGroupNoName(c *check.C) { 19 g := Group{Name: ""} 20 g.Targets = []Target{Target{BaseRecipient: BaseRecipient{Email: "test@example.com"}}} 21 g.UserId = 1 22 err := PostGroup(&g) 23 c.Assert(err, check.Equals, ErrGroupNameNotSpecified) 24 } 25 26 func (s *ModelsSuite) TestPostGroupNoTargets(c *check.C) { 27 g := Group{Name: "No Target Group"} 28 g.Targets = []Target{} 29 g.UserId = 1 30 err := PostGroup(&g) 31 c.Assert(err, check.Equals, ErrNoTargetsSpecified) 32 } 33 34 func (s *ModelsSuite) TestGetGroups(c *check.C) { 35 // Add groups. 36 PostGroup(&Group{ 37 Name: "Test Group 1", 38 Targets: []Target{ 39 Target{ 40 BaseRecipient: BaseRecipient{Email: "test1@example.com"}, 41 }, 42 }, 43 UserId: 1, 44 }) 45 PostGroup(&Group{ 46 Name: "Test Group 2", 47 Targets: []Target{ 48 Target{ 49 BaseRecipient: BaseRecipient{Email: "test2@example.com"}, 50 }, 51 }, 52 UserId: 1, 53 }) 54 55 // Get groups and test result. 56 groups, err := GetGroups(1) 57 c.Assert(err, check.Equals, nil) 58 c.Assert(len(groups), check.Equals, 2) 59 c.Assert(len(groups[0].Targets), check.Equals, 1) 60 c.Assert(len(groups[1].Targets), check.Equals, 1) 61 c.Assert(groups[0].Name, check.Equals, "Test Group 1") 62 c.Assert(groups[1].Name, check.Equals, "Test Group 2") 63 c.Assert(groups[0].Targets[0].Email, check.Equals, "test1@example.com") 64 c.Assert(groups[1].Targets[0].Email, check.Equals, "test2@example.com") 65 } 66 67 func (s *ModelsSuite) TestGetGroupsNoGroups(c *check.C) { 68 groups, err := GetGroups(1) 69 c.Assert(err, check.Equals, nil) 70 c.Assert(len(groups), check.Equals, 0) 71 } 72 73 func (s *ModelsSuite) TestGetGroup(c *check.C) { 74 // Add group. 75 originalGroup := &Group{ 76 Name: "Test Group", 77 Targets: []Target{ 78 Target{ 79 BaseRecipient: BaseRecipient{Email: "test@example.com"}, 80 }, 81 }, 82 UserId: 1, 83 } 84 c.Assert(PostGroup(originalGroup), check.Equals, nil) 85 86 // Get group and test result. 87 group, err := GetGroup(originalGroup.Id, 1) 88 c.Assert(err, check.Equals, nil) 89 c.Assert(len(group.Targets), check.Equals, 1) 90 c.Assert(group.Name, check.Equals, "Test Group") 91 c.Assert(group.Targets[0].Email, check.Equals, "test@example.com") 92 } 93 94 func (s *ModelsSuite) TestGetGroupNoGroups(c *check.C) { 95 _, err := GetGroup(1, 1) 96 c.Assert(err, check.Equals, gorm.ErrRecordNotFound) 97 } 98 99 func (s *ModelsSuite) TestGetGroupByName(c *check.C) { 100 // Add group. 101 PostGroup(&Group{ 102 Name: "Test Group", 103 Targets: []Target{ 104 Target{ 105 BaseRecipient: BaseRecipient{Email: "test@example.com"}, 106 }, 107 }, 108 UserId: 1, 109 }) 110 111 // Get group and test result. 112 group, err := GetGroupByName("Test Group", 1) 113 c.Assert(err, check.Equals, nil) 114 c.Assert(len(group.Targets), check.Equals, 1) 115 c.Assert(group.Name, check.Equals, "Test Group") 116 c.Assert(group.Targets[0].Email, check.Equals, "test@example.com") 117 } 118 119 func (s *ModelsSuite) TestGetGroupByNameNoGroups(c *check.C) { 120 _, err := GetGroupByName("Test Group", 1) 121 c.Assert(err, check.Equals, gorm.ErrRecordNotFound) 122 } 123 124 func (s *ModelsSuite) TestPutGroup(c *check.C) { 125 // Add test group. 126 group := Group{Name: "Test Group"} 127 group.Targets = []Target{ 128 Target{BaseRecipient: BaseRecipient{Email: "test1@example.com", FirstName: "First", LastName: "Example"}}, 129 Target{BaseRecipient: BaseRecipient{Email: "test2@example.com", FirstName: "Second", LastName: "Example"}}, 130 } 131 group.UserId = 1 132 PostGroup(&group) 133 134 // Update one of group's targets. 135 group.Targets[0].FirstName = "Updated" 136 err := PutGroup(&group) 137 c.Assert(err, check.Equals, nil) 138 139 // Verify updated target information. 140 targets, _ := GetTargets(group.Id) 141 c.Assert(targets[0].Email, check.Equals, "test1@example.com") 142 c.Assert(targets[0].FirstName, check.Equals, "Updated") 143 c.Assert(targets[0].LastName, check.Equals, "Example") 144 c.Assert(targets[1].Email, check.Equals, "test2@example.com") 145 c.Assert(targets[1].FirstName, check.Equals, "Second") 146 c.Assert(targets[1].LastName, check.Equals, "Example") 147 } 148 149 func (s *ModelsSuite) TestPutGroupEmptyAttribute(c *check.C) { 150 // Add test group. 151 group := Group{Name: "Test Group"} 152 group.Targets = []Target{ 153 Target{BaseRecipient: BaseRecipient{Email: "test1@example.com", FirstName: "First", LastName: "Example"}}, 154 Target{BaseRecipient: BaseRecipient{Email: "test2@example.com", FirstName: "Second", LastName: "Example"}}, 155 } 156 group.UserId = 1 157 PostGroup(&group) 158 159 // Update one of group's targets. 160 group.Targets[0].FirstName = "" 161 err := PutGroup(&group) 162 c.Assert(err, check.Equals, nil) 163 164 // Verify updated empty attribute was saved. 165 targets, _ := GetTargets(group.Id) 166 c.Assert(targets[0].Email, check.Equals, "test1@example.com") 167 c.Assert(targets[0].FirstName, check.Equals, "") 168 c.Assert(targets[0].LastName, check.Equals, "Example") 169 c.Assert(targets[1].Email, check.Equals, "test2@example.com") 170 c.Assert(targets[1].FirstName, check.Equals, "Second") 171 c.Assert(targets[1].LastName, check.Equals, "Example") 172 }