188691557a
22.10.2026, первый боевой входящий перевод на 9: в режиме «процедуру вызывает bj» процедуры работали правами bj_user, Fancy отказал «Создание документа запрещено для данного пользователя» (FU_HAVE_RIGHT пропускает только SYSDBA%), поручение в DEPO не создалось. На тесте была джоба SQL Agent (dbo → execute as SYSDBA). Новый отпечаток процедур — плашка «Применить скрипты» на установках. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
26 lines
1.1 KiB
Go
26 lines
1.1 KiB
Go
package lkgateway
|
||
|
||
import (
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
// FTV_M2M_JOB ставится с WITH EXECUTE AS 'SYSDBA' — обработка от SYSDBA и при вызове из bj; остальные — как есть.
|
||
func TestDepoProcInstallBodyExecAs(t *testing.T) {
|
||
var f FancyMSSQLSettings
|
||
job := depoProcInstallBody(f, "FTV_M2M_JOB")
|
||
if !strings.Contains(job, "with execute as 'SYSDBA'\nas\n") {
|
||
t.Fatalf("JOB без EXECUTE AS:\n%s", job[:200])
|
||
}
|
||
if strings.Index(job, "with execute as") > strings.Index(job, "set nocount on") {
|
||
t.Fatal("EXECUTE AS не перед телом процедуры")
|
||
}
|
||
if depoProcInstallBody(f, "FTV_M2M_PROCESS_CREATE") != depoProcEffective(f, "FTV_M2M_PROCESS_CREATE") {
|
||
t.Fatal("CREATE изменён")
|
||
}
|
||
f.DepoProcOverrides = map[string]string{"FTV_M2M_JOB": "CREATE OR ALTER procedure dbo.FTV_M2M_JOB\nWITH EXECUTE AS OWNER\nas\nselect 1"}
|
||
if got := depoProcInstallBody(f, "FTV_M2M_JOB"); strings.Count(strings.ToLower(got), "execute as") != 1 {
|
||
t.Fatalf("второй EXECUTE AS к правке под клиента: %s", got)
|
||
}
|
||
}
|