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