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  }