Files
Bridge-and-Join-s/internal/lkgateway/igateshare_test.go
T
zuevav 6e6ab3a4fd Папки шлюза: тестовый — igate_exchange_test, боевой — igate_exchange; все папки в сообщении; Samba — в установщике
- Имена папок: тестовый контур — 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>
2026-10-07 10:10:18 +03:00

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("новая схема принята за прежнюю")
}
}