Files
Proton-API-Bridge/drive_test.go

455 lines
22 KiB
Go

package proton_api_bridge
import (
"log"
"strings"
"testing"
"github.com/henrybear327/go-proton-api"
)
func TestCreateAndDeleteFolder(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a folder tmp at root")
createFolder(t, ctx, protonDrive, "", "tmp")
checkActiveFileListing(t, ctx, protonDrive, []string{"/tmp"})
log.Println("Delete folder tmp")
deleteBySearchingFromRoot(t, ctx, protonDrive, "tmp", true, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestCreateAndCreateAndDeleteFolder(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a folder tmp at root")
createFolder(t, ctx, protonDrive, "", "tmp")
checkActiveFileListing(t, ctx, protonDrive, []string{"/tmp"})
log.Println("Create a folder tmp at root again")
createFolderExpectError(t, ctx, protonDrive, "", "tmp", proton.ErrFolderNameExist)
checkActiveFileListing(t, ctx, protonDrive, []string{"/tmp"})
log.Println("Delete folder tmp")
deleteBySearchingFromRoot(t, ctx, protonDrive, "tmp", true, false)
}
func TestUploadAndDownloadAndDeleteAFile(t *testing.T) {
ctx, cancel, protonDrive := setup(t, true)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Upload integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 0)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
log.Println("Delete file integrationTestImage.png")
deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestUploadAndUploadAndDownloadAndDeleteAFile(t *testing.T) {
ctx, cancel, protonDrive := setup(t, true)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Upload integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 0)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
log.Println("Upload a new revision to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", "")
log.Println("Delete file integrationTestImage.png")
deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestPartialUploadAndReuploadFailedAndDownloadAndDeleteAFile(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a new draft revision of integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 1)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new draft revision of integrationTestImage.png again")
uploadFileByFilepathWithError(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 1, ErrDraftExists)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
// FIXME: delete file with draft revision only
// log.Println("Delete file integrationTestImage.png")
// deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, true)
// checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestPartialUploadAndReuploadAndDownloadAndDeleteAFile(t *testing.T) {
ctx, cancel, protonDrive := setup(t, true)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a new draft revision of integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 1)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new draft revision of integrationTestImage.png again")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 1)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new revision and don't commit integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", 2)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new revision and commit it to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
log.Println("Delete file integrationTestImage.png")
deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestUploadAndDownloadThreeRevisionsAndDeleteAFile(t *testing.T) {
ctx, cancel, protonDrive := setup(t, true)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a new revision and commit it to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
log.Println("Create a new revision 2 and commit it to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
log.Println("Create a new revision 3 and commit it to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 3, 1, 0, 2)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
log.Println("Delete file integrationTestImage.png")
deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestPartialUploadAndReuploadAndDownloadTwiceAndDeleteAFileSmallBig(t *testing.T) {
ctx, cancel, protonDrive := setup(t, true)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a new draft revision of integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 1)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new draft revision of integrationTestImage.png again")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 1)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new revision and don't commit integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 2)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{})
log.Println("Create a new revision and commit it to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
log.Println("Create a new revision 2 and don't commit integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 2)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 1, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
// testing the reduce new revision size
log.Println("Create a new revision 2 and commit it to replace integrationTestImage.png")
uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
log.Println("Delete file integrationTestImage.png")
deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
/* FIXME: Looks like this is a bug on Proton Drive API */
// func TestPartialUploadAndReuploadAndDownloadTwiceAndDeleteAFileBigSmall(t *testing.T) {
// ctx, cancel, protonDrive := setup(t, true)
// t.Cleanup(func() {
// defer cancel()
// defer tearDown(t, ctx, protonDrive)
// })
// log.Println("Create a new draft revision of integrationTestImage.png")
// uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 1)
// checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
// checkActiveFileListing(t, ctx, protonDrive, []string{})
// log.Println("Create a new draft revision of integrationTestImage.png again")
// uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 1)
// checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
// checkActiveFileListing(t, ctx, protonDrive, []string{})
// log.Println("Create a new revision and don't commit integrationTestImage.png")
// uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage2.png", 2)
// checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 0, 1, 0)
// checkActiveFileListing(t, ctx, protonDrive, []string{})
// log.Println("Create a new revision and commit it to replace integrationTestImage.png")
// uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 0) /* Add a revision */
// checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
// downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
// checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
// log.Println("Create a new revision 2 and don't commit integrationTestImage.png")
// uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/integrationTestImage.png", 2)
// checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 1, 0)
// checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
// // testing the reduce new revision size
// log.Println("Create a new revision 2 and commit it to replace integrationTestImage.png")
// uploadFileByFilepath(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", 0) /* Add a revision */
// checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
// downloadFile(t, ctx, protonDrive, "", "integrationTestImage.png", "testcase/empty.txt", "")
// checkActiveFileListing(t, ctx, protonDrive, []string{"/integrationTestImage.png"})
// log.Println("Delete file integrationTestImage.png")
// deleteBySearchingFromRoot(t, ctx, protonDrive, "integrationTestImage.png", false, false)
// checkActiveFileListing(t, ctx, protonDrive, []string{})
// }
func TestUploadAndDeleteAnEmptyFileAtRoot(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Upload empty.txt")
uploadFileByFilepath(t, ctx, protonDrive, "", "empty.txt", "testcase/empty.txt", 0)
checkRevisions(protonDrive, ctx, t, "empty.txt", 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/empty.txt"})
downloadFile(t, ctx, protonDrive, "", "empty.txt", "testcase/empty.txt", "")
log.Println("Upload a new revision to replace empty.txt")
uploadFileByFilepath(t, ctx, protonDrive, "", "empty.txt", "testcase/empty.txt", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "empty.txt", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "", "empty.txt", "testcase/empty.txt", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/empty.txt"})
log.Println("Delete file empty.txt")
deleteBySearchingFromRoot(t, ctx, protonDrive, "empty.txt", false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestUploadAndDownloadAndDeleteAFileAtAFolderOneLevelFromRoot(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create folder level1")
createFolder(t, ctx, protonDrive, "", "level1")
checkActiveFileListing(t, ctx, protonDrive, []string{"/level1"})
log.Println("Upload integrationTestImage.png to level1")
uploadFileByFilepath(t, ctx, protonDrive, "level1", "integrationTestImage.png", "testcase/integrationTestImage.png", 0)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/level1", "/level1/integrationTestImage.png"})
downloadFile(t, ctx, protonDrive, "level1", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
log.Println("Upload a new revision to replace integrationTestImage.png in level1")
uploadFileByFilepath(t, ctx, protonDrive, "level1", "integrationTestImage.png", "testcase/integrationTestImage2.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "level1", "integrationTestImage.png", "testcase/integrationTestImage2.png", "")
log.Println("Delete folder level1")
deleteBySearchingFromRoot(t, ctx, protonDrive, "level1", true, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestCreateAndMoveAndDeleteFolder(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a folder src at root")
createFolder(t, ctx, protonDrive, "", "src")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src"})
log.Println("Create a folder dst at root")
createFolder(t, ctx, protonDrive, "", "dst")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/dst"})
log.Println("Move folder src to under folder dst")
moveFolder(t, ctx, protonDrive, "src", "dst")
checkActiveFileListing(t, ctx, protonDrive, []string{"/dst", "/dst/src"})
log.Println("Delete folder dst")
deleteBySearchingFromRoot(t, ctx, protonDrive, "dst", true, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestCreateAndMoveAndDeleteFolderWithAFile(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a folder src at root")
createFolder(t, ctx, protonDrive, "", "src")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src"})
log.Println("Upload integrationTestImage.png to src")
uploadFileByFilepath(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage.png", 0)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/src/integrationTestImage.png"})
downloadFile(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
log.Println("Create a folder dst at root")
createFolder(t, ctx, protonDrive, "", "dst")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/src/integrationTestImage.png", "/dst"})
log.Println("Upload a new revision to replace integrationTestImage.png in src")
uploadFileByFilepath(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage2.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage2.png", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/src/integrationTestImage.png", "/dst"})
log.Println("Move folder src to under folder dst")
moveFolder(t, ctx, protonDrive, "src", "dst")
checkActiveFileListing(t, ctx, protonDrive, []string{"/dst", "/dst/src", "/dst/src/integrationTestImage.png"})
log.Println("Delete folder dst")
deleteBySearchingFromRoot(t, ctx, protonDrive, "dst", true, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestCreateAndMoveAndDeleteAFileOneLevelFromRoot(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
log.Println("Create a folder src at root")
createFolder(t, ctx, protonDrive, "", "src")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src"})
log.Println("Upload integrationTestImage.png to src")
uploadFileByFilepath(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage.png", 0)
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/src/integrationTestImage.png"})
downloadFile(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage.png", "")
log.Println("Create a folder dst at root")
createFolder(t, ctx, protonDrive, "", "dst")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/src/integrationTestImage.png", "/dst"})
log.Println("Upload a new revision to replace integrationTestImage.png in src")
uploadFileByFilepath(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage2.png", 0) /* Add a revision */
checkRevisions(protonDrive, ctx, t, "integrationTestImage.png", 2, 1, 0, 1)
downloadFile(t, ctx, protonDrive, "src", "integrationTestImage.png", "testcase/integrationTestImage2.png", "")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/src/integrationTestImage.png", "/dst"})
log.Println("Move file integrationTestImage.png to under folder dst")
moveFile(t, ctx, protonDrive, "integrationTestImage.png", "dst")
checkActiveFileListing(t, ctx, protonDrive, []string{"/src", "/dst", "/dst/integrationTestImage.png"})
log.Println("Delete folder dst")
deleteBySearchingFromRoot(t, ctx, protonDrive, "dst", true, false)
checkActiveFileListing(t, ctx, protonDrive, []string{"/src"})
log.Println("Delete folder src")
deleteBySearchingFromRoot(t, ctx, protonDrive, "src", true, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}
func TestUploadLargeNumberOfBlocks(t *testing.T) {
ctx, cancel, protonDrive := setup(t, false)
t.Cleanup(func() {
defer cancel()
defer tearDown(t, ctx, protonDrive)
})
// in order to simulate uploading large files
// we use 1KB for the UPLOAD_BLOCK_SIZE
// so a 1000KB file will generate 1000 blocks to test the uploading mechanism
// and also testing the downloading mechanism
ORIGINAL_UPLOAD_BLOCK_SIZE := UPLOAD_BLOCK_SIZE
defer func() {
UPLOAD_BLOCK_SIZE = ORIGINAL_UPLOAD_BLOCK_SIZE
}()
blocks := 100
UPLOAD_BLOCK_SIZE = 10
filename := "fileContent.txt"
file1Content := RandomString(UPLOAD_BLOCK_SIZE*blocks + 1) // intentionally make the data not aligned to a block
file1ContentReader := strings.NewReader(file1Content)
file2Content := RandomString(UPLOAD_BLOCK_SIZE*blocks + 5)
file2ContentReader := strings.NewReader(file2Content)
log.Println("Upload fileContent.txt")
uploadFileByReader(t, ctx, protonDrive, "", filename, file1ContentReader, 0)
checkRevisions(protonDrive, ctx, t, filename, 1, 1, 0, 0)
checkActiveFileListing(t, ctx, protonDrive, []string{"/" + filename})
downloadFile(t, ctx, protonDrive, "", filename, "", file1Content)
log.Println("Upload a new revision to replace fileContent.txt")
uploadFileByReader(t, ctx, protonDrive, "", filename, file2ContentReader, 0)
checkRevisions(protonDrive, ctx, t, filename, 2, 1, 0, 1)
checkActiveFileListing(t, ctx, protonDrive, []string{"/" + filename})
downloadFile(t, ctx, protonDrive, "", filename, "", file2Content)
log.Println("Delete file fileContent.txt")
deleteBySearchingFromRoot(t, ctx, protonDrive, filename, false, false)
checkActiveFileListing(t, ctx, protonDrive, []string{})
}