This commit is contained in:
2026-10-02 23:24:48 +07:00
parent 6d306c43ec
commit 4d8d6caadd
3 changed files with 15 additions and 6 deletions
@@ -131,6 +131,14 @@ var ErrScenarioPublished = errors.New("Опубликованный сценар
// ErrScenarioNotOwner — сценарий принадлежит другому пользователю.
var ErrScenarioNotOwner = errors.New("Сценарий принадлежит другому пользователю")
// ErrScenarioNotFound — сценарий не найден или уже удалён.
var ErrScenarioNotFound = errors.New("Сценарий не найден")
// MaxArchiveSize возвращает максимальный размер загружаемого архива.
func MaxArchiveSize() int {
return scenario_archive.MaxArchiveSize()
}
// getScenarioForChange проверяет права актора на изменение сценария:
// не-админ должен быть автором сценария, сценарий не должен быть удалён.
// Возвращает сценарий, чтобы вызывающий код не делал повторное чтение.
@@ -409,6 +417,9 @@ func (s *ScenarioService) DownloadArchive(
) ([]byte, string, error) {
scenario, err := s.getScenarioForChange(ctx, id, actorID, isAdmin)
if err != nil {
if errors.Is(err, scenarios_repo.ErrScenarioNotFound) {
return nil, "", ErrScenarioNotFound
}
return nil, "", err
}
data, err := s.scenarioArchive.Pack(
@@ -649,7 +649,7 @@ func TestDownloadArchiveNotFound(t *testing.T) {
storage := newFakeStorage()
svc := newTestService(repo, storage)
if _, _, err := svc.DownloadArchive(context.Background(), 404, 1, true); !errors.Is(err, scenarios_repo.ErrScenarioNotFound) {
if _, _, err := svc.DownloadArchive(context.Background(), 404, 1, true); !errors.Is(err, ErrScenarioNotFound) {
t.Errorf("err = %v, want ErrScenarioNotFound", err)
}
}