|
|
@@ -1233,7 +1233,7 @@ func TestPermList(t *testing.T) {
|
|
|
usePubKey := true
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermDownload, dataprovider.PermUpload, dataprovider.PermDelete, dataprovider.PermRename,
|
|
|
- dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
|
+ dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1263,7 +1263,7 @@ func TestPermDownload(t *testing.T) {
|
|
|
usePubKey := true
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermUpload, dataprovider.PermDelete, dataprovider.PermRename,
|
|
|
- dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
|
+ dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1305,7 +1305,7 @@ func TestPermUpload(t *testing.T) {
|
|
|
usePubKey := false
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermDownload, dataprovider.PermDelete, dataprovider.PermRename,
|
|
|
- dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
|
+ dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1334,11 +1334,48 @@ func TestPermUpload(t *testing.T) {
|
|
|
os.RemoveAll(user.GetHomeDir())
|
|
|
}
|
|
|
|
|
|
+func TestPermOverwrite(t *testing.T) {
|
|
|
+ usePubKey := false
|
|
|
+ u := getTestUser(usePubKey)
|
|
|
+ u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermDownload, dataprovider.PermUpload, dataprovider.PermDelete,
|
|
|
+ dataprovider.PermRename, dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
|
+ user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to add user: %v", err)
|
|
|
+ }
|
|
|
+ client, err := getSftpClient(user, usePubKey)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to create sftp client: %v", err)
|
|
|
+ } else {
|
|
|
+ defer client.Close()
|
|
|
+ testFileName := "test_file.dat"
|
|
|
+ testFilePath := filepath.Join(homeBasePath, testFileName)
|
|
|
+ testFileSize := int64(65535)
|
|
|
+ err = createTestFile(testFilePath, testFileSize)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to create test file: %v", err)
|
|
|
+ }
|
|
|
+ err = sftpUploadFile(testFilePath, testFileName, testFileSize, client)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("error uploading file: %v", err)
|
|
|
+ }
|
|
|
+ err = sftpUploadFile(testFilePath, testFileName, testFileSize, client)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf("file overwrite without permission should not succeed")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _, err = api.RemoveUser(user, http.StatusOK)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to remove user: %v", err)
|
|
|
+ }
|
|
|
+ os.RemoveAll(user.GetHomeDir())
|
|
|
+}
|
|
|
+
|
|
|
func TestPermDelete(t *testing.T) {
|
|
|
usePubKey := false
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermDownload, dataprovider.PermUpload, dataprovider.PermRename,
|
|
|
- dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
|
+ dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1375,7 +1412,7 @@ func TestPermRename(t *testing.T) {
|
|
|
usePubKey := false
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermDownload, dataprovider.PermUpload, dataprovider.PermDelete,
|
|
|
- dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks}
|
|
|
+ dataprovider.PermCreateDirs, dataprovider.PermCreateSymlinks, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1416,7 +1453,7 @@ func TestPermCreateDirs(t *testing.T) {
|
|
|
usePubKey := false
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermDownload, dataprovider.PermUpload, dataprovider.PermDelete,
|
|
|
- dataprovider.PermRename, dataprovider.PermCreateSymlinks}
|
|
|
+ dataprovider.PermRename, dataprovider.PermCreateSymlinks, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1453,7 +1490,7 @@ func TestPermSymlink(t *testing.T) {
|
|
|
usePubKey := false
|
|
|
u := getTestUser(usePubKey)
|
|
|
u.Permissions = []string{dataprovider.PermListItems, dataprovider.PermDownload, dataprovider.PermUpload, dataprovider.PermDelete,
|
|
|
- dataprovider.PermRename, dataprovider.PermCreateDirs}
|
|
|
+ dataprovider.PermRename, dataprovider.PermCreateDirs, dataprovider.PermOverwrite}
|
|
|
user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
if err != nil {
|
|
|
t.Errorf("unable to add user: %v", err)
|
|
|
@@ -1794,6 +1831,47 @@ func TestSCPPermUpload(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func TestSCPPermOverwrite(t *testing.T) {
|
|
|
+ if len(scpPath) == 0 {
|
|
|
+ t.Skip("scp command not found, unable to execute this test")
|
|
|
+ }
|
|
|
+ usePubKey := true
|
|
|
+ u := getTestUser(usePubKey)
|
|
|
+ u.Permissions = []string{dataprovider.PermUpload, dataprovider.PermCreateDirs}
|
|
|
+ user, _, err := api.AddUser(u, http.StatusOK)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to add user: %v", err)
|
|
|
+ }
|
|
|
+ testFileName := "test_file.dat"
|
|
|
+ testFilePath := filepath.Join(homeBasePath, testFileName)
|
|
|
+ testFileSize := int64(65536)
|
|
|
+ err = createTestFile(testFilePath, testFileSize)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to create test file: %v", err)
|
|
|
+ }
|
|
|
+ remoteUpPath := fmt.Sprintf("%[email protected]:%v", user.Username, "/tmp")
|
|
|
+ err = scpUpload(testFilePath, remoteUpPath, true, false)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("scp upload error: %v", err)
|
|
|
+ }
|
|
|
+ err = scpUpload(testFilePath, remoteUpPath, true, false)
|
|
|
+ if err == nil {
|
|
|
+ t.Errorf("scp upload must fail, the user cannot ovewrite existing files")
|
|
|
+ }
|
|
|
+ err = os.Remove(testFilePath)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("error removing test file")
|
|
|
+ }
|
|
|
+ err = os.RemoveAll(user.GetHomeDir())
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("error removing uploaded files")
|
|
|
+ }
|
|
|
+ _, err = api.RemoveUser(user, http.StatusOK)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("unable to remove user: %v", err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func TestSCPPermDownload(t *testing.T) {
|
|
|
if len(scpPath) == 0 {
|
|
|
t.Skip("scp command not found, unable to execute this test")
|