code.gitea.io/gitea@v1.21.7/routers/web/admin/users_test.go (about)

     1  // Copyright 2017 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package admin
     5  
     6  import (
     7  	"testing"
     8  
     9  	"code.gitea.io/gitea/models/unittest"
    10  	user_model "code.gitea.io/gitea/models/user"
    11  	"code.gitea.io/gitea/modules/contexttest"
    12  	"code.gitea.io/gitea/modules/setting"
    13  	api "code.gitea.io/gitea/modules/structs"
    14  	"code.gitea.io/gitea/modules/web"
    15  	"code.gitea.io/gitea/services/forms"
    16  
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  func TestNewUserPost_MustChangePassword(t *testing.T) {
    21  	unittest.PrepareTestEnv(t)
    22  	ctx, _ := contexttest.MockContext(t, "admin/users/new")
    23  
    24  	u := unittest.AssertExistsAndLoadBean(t, &user_model.User{
    25  		IsAdmin: true,
    26  		ID:      2,
    27  	})
    28  
    29  	ctx.Doer = u
    30  
    31  	username := "gitea"
    32  	email := "gitea@gitea.io"
    33  
    34  	form := forms.AdminCreateUserForm{
    35  		LoginType:          "local",
    36  		LoginName:          "local",
    37  		UserName:           username,
    38  		Email:              email,
    39  		Password:           "abc123ABC!=$",
    40  		SendNotify:         false,
    41  		MustChangePassword: true,
    42  	}
    43  
    44  	web.SetForm(ctx, &form)
    45  	NewUserPost(ctx)
    46  
    47  	assert.NotEmpty(t, ctx.Flash.SuccessMsg)
    48  
    49  	u, err := user_model.GetUserByName(ctx, username)
    50  
    51  	assert.NoError(t, err)
    52  	assert.Equal(t, username, u.Name)
    53  	assert.Equal(t, email, u.Email)
    54  	assert.True(t, u.MustChangePassword)
    55  }
    56  
    57  func TestNewUserPost_MustChangePasswordFalse(t *testing.T) {
    58  	unittest.PrepareTestEnv(t)
    59  	ctx, _ := contexttest.MockContext(t, "admin/users/new")
    60  
    61  	u := unittest.AssertExistsAndLoadBean(t, &user_model.User{
    62  		IsAdmin: true,
    63  		ID:      2,
    64  	})
    65  
    66  	ctx.Doer = u
    67  
    68  	username := "gitea"
    69  	email := "gitea@gitea.io"
    70  
    71  	form := forms.AdminCreateUserForm{
    72  		LoginType:          "local",
    73  		LoginName:          "local",
    74  		UserName:           username,
    75  		Email:              email,
    76  		Password:           "abc123ABC!=$",
    77  		SendNotify:         false,
    78  		MustChangePassword: false,
    79  	}
    80  
    81  	web.SetForm(ctx, &form)
    82  	NewUserPost(ctx)
    83  
    84  	assert.NotEmpty(t, ctx.Flash.SuccessMsg)
    85  
    86  	u, err := user_model.GetUserByName(ctx, username)
    87  
    88  	assert.NoError(t, err)
    89  	assert.Equal(t, username, u.Name)
    90  	assert.Equal(t, email, u.Email)
    91  	assert.False(t, u.MustChangePassword)
    92  }
    93  
    94  func TestNewUserPost_InvalidEmail(t *testing.T) {
    95  	unittest.PrepareTestEnv(t)
    96  	ctx, _ := contexttest.MockContext(t, "admin/users/new")
    97  
    98  	u := unittest.AssertExistsAndLoadBean(t, &user_model.User{
    99  		IsAdmin: true,
   100  		ID:      2,
   101  	})
   102  
   103  	ctx.Doer = u
   104  
   105  	username := "gitea"
   106  	email := "gitea@gitea.io\r\n"
   107  
   108  	form := forms.AdminCreateUserForm{
   109  		LoginType:          "local",
   110  		LoginName:          "local",
   111  		UserName:           username,
   112  		Email:              email,
   113  		Password:           "abc123ABC!=$",
   114  		SendNotify:         false,
   115  		MustChangePassword: false,
   116  	}
   117  
   118  	web.SetForm(ctx, &form)
   119  	NewUserPost(ctx)
   120  
   121  	assert.NotEmpty(t, ctx.Flash.ErrorMsg)
   122  }
   123  
   124  func TestNewUserPost_VisibilityDefaultPublic(t *testing.T) {
   125  	unittest.PrepareTestEnv(t)
   126  	ctx, _ := contexttest.MockContext(t, "admin/users/new")
   127  
   128  	u := unittest.AssertExistsAndLoadBean(t, &user_model.User{
   129  		IsAdmin: true,
   130  		ID:      2,
   131  	})
   132  
   133  	ctx.Doer = u
   134  
   135  	username := "gitea"
   136  	email := "gitea@gitea.io"
   137  
   138  	form := forms.AdminCreateUserForm{
   139  		LoginType:          "local",
   140  		LoginName:          "local",
   141  		UserName:           username,
   142  		Email:              email,
   143  		Password:           "abc123ABC!=$",
   144  		SendNotify:         false,
   145  		MustChangePassword: false,
   146  	}
   147  
   148  	web.SetForm(ctx, &form)
   149  	NewUserPost(ctx)
   150  
   151  	assert.NotEmpty(t, ctx.Flash.SuccessMsg)
   152  
   153  	u, err := user_model.GetUserByName(ctx, username)
   154  
   155  	assert.NoError(t, err)
   156  	assert.Equal(t, username, u.Name)
   157  	assert.Equal(t, email, u.Email)
   158  	// As default user visibility
   159  	assert.Equal(t, setting.Service.DefaultUserVisibilityMode, u.Visibility)
   160  }
   161  
   162  func TestNewUserPost_VisibilityPrivate(t *testing.T) {
   163  	unittest.PrepareTestEnv(t)
   164  	ctx, _ := contexttest.MockContext(t, "admin/users/new")
   165  
   166  	u := unittest.AssertExistsAndLoadBean(t, &user_model.User{
   167  		IsAdmin: true,
   168  		ID:      2,
   169  	})
   170  
   171  	ctx.Doer = u
   172  
   173  	username := "gitea"
   174  	email := "gitea@gitea.io"
   175  
   176  	form := forms.AdminCreateUserForm{
   177  		LoginType:          "local",
   178  		LoginName:          "local",
   179  		UserName:           username,
   180  		Email:              email,
   181  		Password:           "abc123ABC!=$",
   182  		SendNotify:         false,
   183  		MustChangePassword: false,
   184  		Visibility:         api.VisibleTypePrivate,
   185  	}
   186  
   187  	web.SetForm(ctx, &form)
   188  	NewUserPost(ctx)
   189  
   190  	assert.NotEmpty(t, ctx.Flash.SuccessMsg)
   191  
   192  	u, err := user_model.GetUserByName(ctx, username)
   193  
   194  	assert.NoError(t, err)
   195  	assert.Equal(t, username, u.Name)
   196  	assert.Equal(t, email, u.Email)
   197  	// As default user visibility
   198  	assert.True(t, u.Visibility.IsPrivate())
   199  }