mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
| package domain
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	"golang.org/x/crypto/bcrypt"
 | |
| )
 | |
| 
 | |
| func TestUser_IsDisabled(t *testing.T) {
 | |
| 	user := &User{}
 | |
| 	assert.False(t, user.IsDisabled())
 | |
| 
 | |
| 	now := time.Now()
 | |
| 	user.Disabled = &now
 | |
| 	assert.True(t, user.IsDisabled())
 | |
| }
 | |
| 
 | |
| func TestUser_IsLocked(t *testing.T) {
 | |
| 	user := &User{}
 | |
| 	assert.False(t, user.IsLocked())
 | |
| 
 | |
| 	now := time.Now()
 | |
| 	user.Locked = &now
 | |
| 	assert.True(t, user.IsLocked())
 | |
| }
 | |
| 
 | |
| func TestUser_IsApiEnabled(t *testing.T) {
 | |
| 	user := &User{}
 | |
| 	assert.False(t, user.IsApiEnabled())
 | |
| 
 | |
| 	user.ApiToken = "token"
 | |
| 	assert.True(t, user.IsApiEnabled())
 | |
| }
 | |
| 
 | |
| func TestUser_CanChangePassword(t *testing.T) {
 | |
| 	user := &User{Source: UserSourceDatabase}
 | |
| 	assert.NoError(t, user.CanChangePassword())
 | |
| 
 | |
| 	user.Source = UserSourceLdap
 | |
| 	assert.Error(t, user.CanChangePassword())
 | |
| 
 | |
| 	user.Source = UserSourceOauth
 | |
| 	assert.Error(t, user.CanChangePassword())
 | |
| }
 | |
| 
 | |
| func TestUser_EditAllowed(t *testing.T) {
 | |
| 	user := &User{Source: UserSourceDatabase}
 | |
| 	newUser := &User{Source: UserSourceDatabase}
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Notes = "notes can be changed"
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Disabled = &time.Time{}
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Lastname = "lastname or other fields can be changed"
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	user.Source = UserSourceLdap
 | |
| 	newUser.Source = UserSourceLdap
 | |
| 	newUser.Disabled = nil
 | |
| 	newUser.Lastname = ""
 | |
| 	newUser.Notes = "notes can be changed"
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Disabled = &time.Time{}
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Lastname = "lastname or other fields can not be changed"
 | |
| 	assert.Error(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	user.Source = UserSourceOauth
 | |
| 	newUser.Source = UserSourceOauth
 | |
| 	newUser.Disabled = nil
 | |
| 	newUser.Lastname = ""
 | |
| 	newUser.Notes = "notes can be changed"
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Disabled = &time.Time{}
 | |
| 	assert.NoError(t, user.EditAllowed(newUser))
 | |
| 
 | |
| 	newUser.Lastname = "lastname or other fields can not be changed"
 | |
| 	assert.Error(t, user.EditAllowed(newUser))
 | |
| }
 | |
| 
 | |
| func TestUser_DeleteAllowed(t *testing.T) {
 | |
| 	user := &User{}
 | |
| 	assert.NoError(t, user.DeleteAllowed())
 | |
| }
 | |
| 
 | |
| func TestUser_CheckPassword(t *testing.T) {
 | |
| 	password := "password"
 | |
| 	hashedPassword, _ := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
 | |
| 
 | |
| 	user := &User{Source: UserSourceDatabase, Password: PrivateString(hashedPassword)}
 | |
| 	assert.NoError(t, user.CheckPassword(password))
 | |
| 
 | |
| 	user.Password = ""
 | |
| 	assert.Error(t, user.CheckPassword(password))
 | |
| 
 | |
| 	user.Source = UserSourceLdap
 | |
| 	assert.Error(t, user.CheckPassword(password))
 | |
| }
 | |
| 
 | |
| func TestUser_CheckApiToken(t *testing.T) {
 | |
| 	user := &User{}
 | |
| 	assert.Error(t, user.CheckApiToken("token"))
 | |
| 
 | |
| 	user.ApiToken = "token"
 | |
| 	assert.NoError(t, user.CheckApiToken("token"))
 | |
| 
 | |
| 	assert.Error(t, user.CheckApiToken("wrong_token"))
 | |
| }
 | |
| 
 | |
| func TestUser_HashPassword(t *testing.T) {
 | |
| 	user := &User{Password: "password"}
 | |
| 	assert.NoError(t, user.HashPassword())
 | |
| 	assert.NotEmpty(t, user.Password)
 | |
| 
 | |
| 	user.Password = ""
 | |
| 	assert.NoError(t, user.HashPassword())
 | |
| }
 |