mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 08:55:24 +00:00
e279dc1682
Add support for updating keys used in the TUF update system.
93 lines
2.4 KiB
Go
93 lines
2.4 KiB
Go
package file_test
|
|
|
|
import (
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/fleetdm/fleet/v4/pkg/file"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCopy(t *testing.T) {
|
|
t.Parallel()
|
|
tmp := t.TempDir()
|
|
|
|
// Setup
|
|
originalPath := filepath.Join(tmp, "original")
|
|
dstPath := filepath.Join(tmp, "copy")
|
|
expectedContents := []byte("foo")
|
|
expectedMode := fs.FileMode(0644)
|
|
require.NoError(t, os.WriteFile(originalPath, expectedContents, os.ModePerm))
|
|
require.NoError(t, os.WriteFile(dstPath, []byte("this should be overwritten"), expectedMode))
|
|
|
|
// Test
|
|
require.NoError(t, file.Copy(originalPath, dstPath, expectedMode))
|
|
|
|
contents, err := os.ReadFile(originalPath)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expectedContents, contents)
|
|
|
|
contents, err = os.ReadFile(dstPath)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expectedContents, contents)
|
|
|
|
info, err := os.Stat(dstPath)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expectedMode, info.Mode())
|
|
|
|
// Copy of nonexistent path fails
|
|
require.Error(t, file.Copy(filepath.Join(tmp, "notexist"), dstPath, os.ModePerm))
|
|
|
|
// Copy to nonexistent directory
|
|
require.Error(t, file.Copy(originalPath, filepath.Join("tmp", "notexist", "foo"), os.ModePerm))
|
|
}
|
|
|
|
func TestCopyWithPerms(t *testing.T) {
|
|
t.Parallel()
|
|
tmp := t.TempDir()
|
|
|
|
// Setup
|
|
originalPath := filepath.Join(tmp, "original")
|
|
dstPath := filepath.Join(tmp, "copy")
|
|
expectedContents := []byte("foo")
|
|
expectedMode := fs.FileMode(0755)
|
|
require.NoError(t, os.WriteFile(originalPath, expectedContents, expectedMode))
|
|
|
|
// Test
|
|
require.NoError(t, file.CopyWithPerms(originalPath, dstPath))
|
|
|
|
contents, err := os.ReadFile(dstPath)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expectedContents, contents)
|
|
|
|
info, err := os.Stat(dstPath)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, expectedMode, info.Mode())
|
|
}
|
|
|
|
func TestExists(t *testing.T) {
|
|
t.Parallel()
|
|
tmp := t.TempDir()
|
|
|
|
// Setup
|
|
path := filepath.Join(tmp, "file")
|
|
require.NoError(t, os.WriteFile(path, []byte(""), os.ModePerm))
|
|
require.NoError(t, os.MkdirAll(filepath.Join(tmp, "dir", "nested"), os.ModePerm))
|
|
|
|
// Test
|
|
exists, err := file.Exists(path)
|
|
require.NoError(t, err)
|
|
assert.True(t, exists)
|
|
|
|
exists, err = file.Exists(filepath.Join(tmp, "notexist"))
|
|
require.NoError(t, err)
|
|
assert.False(t, exists)
|
|
|
|
exists, err = file.Exists(filepath.Join(tmp, "dir"))
|
|
require.NoError(t, err)
|
|
assert.False(t, exists)
|
|
}
|