package healthcheck

import (
	"os"
	"testing"

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

func TestCheckPathPermission(t *testing.T) {
	t.Run("file with read and write permissions", func(t *testing.T) {
		filename := "testfile_read_write.txt"
		_, err := os.Create(filename)
		defer func() {
			_ = os.Remove(filename)
		}()
		assert.NoError(t, err)

		permission := CheckPathPermission(filename)
		assert.NoError(t, permission.Error)
		assert.Equal(t, true, permission.isReadable)
		assert.Equal(t, true, permission.isWritable)
	})

	t.Run("non-existing file", func(t *testing.T) {
		filename := "non_existing_file.txt"
		permission := CheckPathPermission(filename)
		assert.Error(t, permission.Error)
	})

	t.Run("file without write permission", func(t *testing.T) {
		filename := "testfile_read_only.txt"
		file, err := os.Create(filename)
		assert.NoError(t, err)

		err = file.Chmod(0444) // read-only permissions
		assert.NoError(t, err)

		defer func() {
			_ = os.Remove(filename)
		}()
		permission := CheckPathPermission(filename)

		assert.NoError(t, permission.Error)
		assert.Equal(t, true, permission.isReadable)
		assert.Equal(t, false, permission.isWritable)
	})
}
