6e6ab3a4fd
- Имена папок: тестовый контур — igate_exchange_test, боевой — igate_exchange (было igate_exchange и igate_exchange_prod); bj переименовывает открытые по прежней схеме сам — при сверке, в первый раз через 30 с после запуска. - После сохранения — все открытые папки с контуром: \\IP\igate_exchange_test (тестовый TEST3), \\IP\igate_exchange (боевой). - Закрыть папки — Samba выключается (сервер не отвечает по SMB, пока папок нет). - Установщик (bj-installer, preseed Debian, слой пакетов образа Ubuntu): samba, winbind, libnss-winbind — заранее, чтобы в закрытом контуре папки открывались без интернета; необязательной частью (нет на диске и нет сети — установка bj продолжается); службы выключены до открытия папок. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 lines
1.8 KiB
Go
42 lines
1.8 KiB
Go
package lkgateway
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Папки шлюза «через домен»: доступ — группам с ролью в bj и доменным сотрудникам bj (включённым).
|
|
func TestIgateShareValid(t *testing.T) {
|
|
prev := globalUsers
|
|
globalUsers = &userStore{users: map[string]*User{}}
|
|
defer func() { globalUsers = prev }()
|
|
globalUsers.users["azuev"] = &User{Login: "azuev", Source: "ad", Active: true, Role: "operator"}
|
|
globalUsers.users["old"] = &User{Login: "old", Source: "ad", Active: false, Role: "viewer"}
|
|
globalUsers.users["admin"] = &User{Login: "admin", Source: "local", Active: true, Role: "admin"}
|
|
a := AuthSettings{ADGroups: []ADGroupRole{{Group: "CN=BJ-Operators,OU=Groups,DC=corp,DC=local", Role: "operator"}, {Group: "Депозитарий \"Главный\"", Role: "viewer"}}}
|
|
got, err := igateShareValidWG(a, "CORP")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
want := `@"CORP\BJ-Operators", @"CORP\Депозитарий Главный", "CORP\azuev"`
|
|
if got != want {
|
|
t.Fatalf("\n got %s\nwant %s", got, want)
|
|
}
|
|
if strings.Contains(got, "old") || strings.Contains(got, "admin") {
|
|
t.Fatal("в доступ попали отключённый или локальный пользователь")
|
|
}
|
|
globalUsers = &userStore{users: map[string]*User{}}
|
|
if _, err := igateShareValidWG(AuthSettings{}, "CORP"); err == nil {
|
|
t.Fatal("пустой список доступа должен быть ошибкой")
|
|
}
|
|
}
|
|
|
|
func TestIgateShareOldNames(t *testing.T) {
|
|
if !igateShareOldNames([]any{"igate_exchange", "igate_exchange_prod"}) {
|
|
t.Fatal("прежняя схема имён не распознана")
|
|
}
|
|
if igateShareOldNames([]any{"igate_exchange_test", "igate_exchange"}) {
|
|
t.Fatal("новая схема принята за прежнюю")
|
|
}
|
|
}
|