// Copyright 2026 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package gitrepo

import (
	"os"
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestCreateDelegateHooksPermissions(t *testing.T) {
	hookDir := t.TempDir()
	existingHookDir := filepath.Join(hookDir, "post-receive.d")
	require.NoError(t, os.MkdirAll(existingHookDir, 0o777))
	require.NoError(t, os.Chmod(existingHookDir, 0o777))

	require.NoError(t, createDelegateHooks(hookDir))

	hookNames, _, _ := getHookTemplates()
	for _, hookName := range hookNames {
		for _, path := range []string{
			filepath.Join(hookDir, hookName),
			filepath.Join(hookDir, hookName+".d"),
			filepath.Join(hookDir, hookName+".d", "gitea"),
		} {
			info, err := os.Stat(path)
			require.NoError(t, err)
			require.Equal(t, os.FileMode(0o755), info.Mode().Perm(), path)
		}
	}
}
