|
@@ -8867,7 +8867,7 @@ func TestShareUsage(t *testing.T) {
|
|
|
req.Header.Add("Content-Type", writer.FormDataContentType())
|
|
|
req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
rr = executeRequest(req)
|
|
|
- checkResponseCode(t, http.StatusInternalServerError, rr)
|
|
|
+ checkResponseCode(t, http.StatusForbidden, rr)
|
|
|
assert.Contains(t, rr.Body.String(), "permission denied")
|
|
|
|
|
|
body = new(bytes.Buffer)
|
|
@@ -8913,6 +8913,110 @@ func TestShareUsage(t *testing.T) {
|
|
|
executeRequest(req)
|
|
|
}
|
|
|
|
|
|
+func TestShareUncompressed(t *testing.T) {
|
|
|
+ user, _, err := httpdtest.AddUser(getTestUser(), http.StatusCreated)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ testFileName := "testfile.dat"
|
|
|
+ testFileSize := int64(65536)
|
|
|
+ testFilePath := filepath.Join(user.GetHomeDir(), testFileName)
|
|
|
+ err = createTestFile(testFilePath, testFileSize)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ token, err := getJWTAPIUserTokenFromTestServer(defaultUsername, defaultPassword)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ share := dataprovider.Share{
|
|
|
+ Name: "test share",
|
|
|
+ Scope: dataprovider.ShareScopeRead,
|
|
|
+ Paths: []string{"/"},
|
|
|
+ Password: defaultPassword,
|
|
|
+ MaxTokens: 0,
|
|
|
+ }
|
|
|
+ asJSON, err := json.Marshal(share)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req, err := http.NewRequest(http.MethodPost, userSharesPath, bytes.NewBuffer(asJSON))
|
|
|
+ assert.NoError(t, err)
|
|
|
+ setBearerForReq(req, token)
|
|
|
+ rr := executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusCreated, rr)
|
|
|
+ objectID := rr.Header().Get("X-Object-ID")
|
|
|
+ assert.NotEmpty(t, objectID)
|
|
|
+
|
|
|
+ req, err = http.NewRequest(http.MethodGet, webClientPubSharesPath+"/"+objectID, nil)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusOK, rr)
|
|
|
+ assert.Equal(t, "application/zip", rr.Header().Get("Content-Type"))
|
|
|
+
|
|
|
+ req, err = http.NewRequest(http.MethodGet, webClientPubSharesPath+"/"+objectID+"?compress=false", nil)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusOK, rr)
|
|
|
+ assert.Equal(t, "application/zip", rr.Header().Get("Content-Type"))
|
|
|
+
|
|
|
+ share = dataprovider.Share{
|
|
|
+ Name: "test share1",
|
|
|
+ Scope: dataprovider.ShareScopeRead,
|
|
|
+ Paths: []string{testFileName},
|
|
|
+ Password: defaultPassword,
|
|
|
+ MaxTokens: 0,
|
|
|
+ }
|
|
|
+ asJSON, err = json.Marshal(share)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req, err = http.NewRequest(http.MethodPost, userSharesPath, bytes.NewBuffer(asJSON))
|
|
|
+ assert.NoError(t, err)
|
|
|
+ setBearerForReq(req, token)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusCreated, rr)
|
|
|
+ objectID = rr.Header().Get("X-Object-ID")
|
|
|
+ assert.NotEmpty(t, objectID)
|
|
|
+
|
|
|
+ req, err = http.NewRequest(http.MethodGet, webClientPubSharesPath+"/"+objectID, nil)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusOK, rr)
|
|
|
+ assert.Equal(t, "application/zip", rr.Header().Get("Content-Type"))
|
|
|
+
|
|
|
+ req, err = http.NewRequest(http.MethodGet, webClientPubSharesPath+"/"+objectID+"?compress=false", nil)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusOK, rr)
|
|
|
+ assert.Equal(t, "application/octet-stream", rr.Header().Get("Content-Type"))
|
|
|
+
|
|
|
+ user.Permissions["/"] = []string{dataprovider.PermListItems, dataprovider.PermUpload}
|
|
|
+ user, _, err = httpdtest.UpdateUser(user, http.StatusOK, "")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ req, err = http.NewRequest(http.MethodGet, webClientPubSharesPath+"/"+objectID+"?compress=false", nil)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusForbidden, rr)
|
|
|
+
|
|
|
+ user.Permissions["/"] = []string{dataprovider.PermAny}
|
|
|
+ user, _, err = httpdtest.UpdateUser(user, http.StatusOK, "")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ err = os.Remove(testFilePath)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ req, err = http.NewRequest(http.MethodGet, webClientPubSharesPath+"/"+objectID+"?compress=false", nil)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ req.SetBasicAuth(defaultUsername, defaultPassword)
|
|
|
+ rr = executeRequest(req)
|
|
|
+ checkResponseCode(t, http.StatusBadRequest, rr)
|
|
|
+
|
|
|
+ _, err = httpdtest.RemoveUser(user, http.StatusOK)
|
|
|
+ assert.NoError(t, err)
|
|
|
+ err = os.RemoveAll(user.GetHomeDir())
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|
|
|
+
|
|
|
func TestUserAPIShareErrors(t *testing.T) {
|
|
|
user, _, err := httpdtest.AddUser(getTestUser(), http.StatusCreated)
|
|
|
assert.NoError(t, err)
|