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())
 | 
						|
}
 |