github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/model/team_test.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package model
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestTeamJson(t *testing.T) {
    15  	o := Team{Id: NewId(), DisplayName: NewId()}
    16  	json := o.ToJson()
    17  	ro := TeamFromJson(strings.NewReader(json))
    18  
    19  	require.Equal(t, o.Id, ro.Id, "Ids do not match")
    20  }
    21  
    22  func TestTeamIsValid(t *testing.T) {
    23  	o := Team{}
    24  
    25  	err := o.IsValid()
    26  	require.NotNil(t, err, "should be invalid")
    27  
    28  	o.Id = NewId()
    29  	err = o.IsValid()
    30  	require.NotNil(t, err, "should be invalid")
    31  
    32  	o.CreateAt = GetMillis()
    33  	err = o.IsValid()
    34  	require.NotNil(t, err, "should be invalid")
    35  
    36  	o.UpdateAt = GetMillis()
    37  	err = o.IsValid()
    38  	require.NotNil(t, err, "should be invalid")
    39  
    40  	o.Email = strings.Repeat("01234567890", 20)
    41  	err = o.IsValid()
    42  	require.NotNil(t, err, "should be invalid")
    43  
    44  	o.Email = "corey+test@hulen.com"
    45  	o.DisplayName = strings.Repeat("01234567890", 20)
    46  	err = o.IsValid()
    47  	require.NotNil(t, err, "should be invalid")
    48  
    49  	o.DisplayName = "1234"
    50  	o.Name = "ZZZZZZZ"
    51  	err = o.IsValid()
    52  	require.NotNil(t, err, "should be invalid")
    53  
    54  	o.Name = "zzzzz"
    55  	o.Type = TEAM_OPEN
    56  	o.InviteId = NewId()
    57  	err = o.IsValid()
    58  	require.Nil(t, err, err)
    59  }
    60  
    61  func TestTeamPreSave(t *testing.T) {
    62  	o := Team{DisplayName: "test"}
    63  	o.PreSave()
    64  	o.Etag()
    65  }
    66  
    67  func TestTeamPreUpdate(t *testing.T) {
    68  	o := Team{DisplayName: "test"}
    69  	o.PreUpdate()
    70  }
    71  
    72  var domains = []struct {
    73  	value    string
    74  	expected bool
    75  }{
    76  	{"spin-punch", true},
    77  	{"-spin-punch", false},
    78  	{"spin-punch-", false},
    79  	{"spin_punch", false},
    80  	{"a", false},
    81  	{"aa", true},
    82  	{"aaa", true},
    83  	{"aaa-999b", true},
    84  	{"b00b", true},
    85  	{"b)", false},
    86  	{"test", true},
    87  }
    88  
    89  func TestValidTeamName(t *testing.T) {
    90  	for _, v := range domains {
    91  		actual := IsValidTeamName(v.value)
    92  		assert.Equal(t, v.expected, actual)
    93  	}
    94  }
    95  
    96  var tReservedDomains = []struct {
    97  	value    string
    98  	expected bool
    99  }{
   100  	{"admin", true},
   101  	{"Admin-punch", true},
   102  	{"spin-punch-admin", false},
   103  }
   104  
   105  func TestReservedTeamName(t *testing.T) {
   106  	for _, v := range tReservedDomains {
   107  		actual := IsReservedTeamName(v.value)
   108  		assert.Equal(t, v.expected, actual)
   109  	}
   110  }
   111  
   112  func TestCleanTeamName(t *testing.T) {
   113  	actual := CleanTeamName("Jimbo's Admin")
   114  	require.Equal(t, "jimbos-admin", actual, "didn't clean name properly")
   115  
   116  	actual = CleanTeamName("Admin Really cool")
   117  	require.Equal(t, "really-cool", actual, "didn't clean name properly")
   118  
   119  	actual = CleanTeamName("super-duper-guys")
   120  	require.Equal(t, "super-duper-guys", actual, "didn't clean name properly")
   121  }
   122  
   123  func TestTeamPatch(t *testing.T) {
   124  	p := &TeamPatch{
   125  		DisplayName:      new(string),
   126  		Description:      new(string),
   127  		CompanyName:      new(string),
   128  		AllowedDomains:   new(string),
   129  		AllowOpenInvite:  new(bool),
   130  		GroupConstrained: new(bool),
   131  	}
   132  
   133  	*p.DisplayName = NewId()
   134  	*p.Description = NewId()
   135  	*p.CompanyName = NewId()
   136  	*p.AllowedDomains = NewId()
   137  	*p.AllowOpenInvite = true
   138  	*p.GroupConstrained = true
   139  
   140  	o := Team{Id: NewId()}
   141  	o.Patch(p)
   142  
   143  	require.Equal(t, *p.DisplayName, o.DisplayName, "DisplayName did not update")
   144  	require.Equal(t, *p.Description, o.Description, "Description did not update")
   145  	require.Equal(t, *p.CompanyName, o.CompanyName, "CompanyName did not update")
   146  	require.Equal(t, *p.AllowedDomains, o.AllowedDomains, "AllowedDomains did not update")
   147  	require.Equal(t, *p.AllowOpenInvite, o.AllowOpenInvite, "AllowOpenInvite did not update")
   148  	require.Equal(t, *p.GroupConstrained, *o.GroupConstrained)
   149  }