70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package cgpcli
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestAccountRights(t *testing.T) {
|
|
cli := getTestCli(t)
|
|
defer cli.Close()
|
|
|
|
// Создаем временного "админа" для теста
|
|
domain := "test.domain.name"
|
|
testAcc := fmt.Sprintf("test-admin-%d@%s", time.Now().Unix(), domain)
|
|
|
|
err := cli.CreateAccount(testAcc, nil, MultiMailbox, "", false)
|
|
if err != nil {
|
|
t.Fatalf("Failed to create test account: %v", err)
|
|
}
|
|
defer cli.DeleteAccount(testAcc)
|
|
|
|
t.Run("SetAndVerifyRights", func(t *testing.T) {
|
|
// Список прав для установки
|
|
// CanModifySettings, CanCreateAccounts
|
|
targetRights := []string{"CanModifySettings", "CanCreateDomains"}
|
|
|
|
err := cli.SetAccountRights(testAcc, targetRights)
|
|
if err != nil {
|
|
t.Fatalf("SetAccountRights failed: %v", err)
|
|
}
|
|
|
|
// Проверяем через GetAccountRights (метод из accounts.go)
|
|
currentRights, err := cli.GetAccountRights(testAcc)
|
|
if err != nil {
|
|
t.Fatalf("GetAccountRights failed: %v", err)
|
|
}
|
|
|
|
if len(currentRights) != len(targetRights) {
|
|
t.Errorf("Expected %d rights, got %d", len(targetRights), len(currentRights))
|
|
}
|
|
|
|
// Простая проверка наличия
|
|
found := 0
|
|
for _, r := range currentRights {
|
|
for _, tR := range targetRights {
|
|
if r == tR {
|
|
found++
|
|
}
|
|
}
|
|
}
|
|
if found != len(targetRights) {
|
|
t.Errorf("Rights mismatch. Expected %v, got %v", targetRights, currentRights)
|
|
}
|
|
})
|
|
|
|
t.Run("ClearRights", func(t *testing.T) {
|
|
// Очистка прав (пустой список)
|
|
err := cli.SetAccountRights(testAcc, []string{})
|
|
if err != nil {
|
|
t.Errorf("Failed to clear rights: %v", err)
|
|
}
|
|
|
|
current, _ := cli.GetAccountRights(testAcc)
|
|
if len(current) > 0 {
|
|
t.Errorf("Rights should be empty, got %v", current)
|
|
}
|
|
})
|
|
}
|