97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
import axios from "axios";
|
|
import md5 from "md5";
|
|
|
|
import { config } from "../../config";
|
|
import { testUpload } from "./api_upload_test";
|
|
import { list, del } from "../api_share";
|
|
import { testLogin, testLogout } from "./api_auth_test";
|
|
|
|
export function testUpDownBatch() {
|
|
const fileInfos = [
|
|
{
|
|
fileName: "test_2MB_1",
|
|
content: new Array(1024 * 1024 * 2).join("x")
|
|
},
|
|
{
|
|
fileName: "test_1MB_1",
|
|
content: new Array(1024 * 1024 * 1).join("x")
|
|
},
|
|
{
|
|
fileName: "test_2MB_2",
|
|
content: new Array(1024 * 1024 * 2).join("x")
|
|
},
|
|
{
|
|
fileName: "test_1B",
|
|
content: `${new Array(3).join("o")}${new Array(3).join("x")}`
|
|
}
|
|
];
|
|
|
|
return testLogin()
|
|
.then(() => {
|
|
const promises = fileInfos.map(info => {
|
|
const file = new File([info.content], info.fileName, {
|
|
type: "text/plain"
|
|
});
|
|
|
|
return testUpAndDownOneFile(file, info.fileName);
|
|
});
|
|
|
|
return Promise.all(promises);
|
|
})
|
|
.then(() => {
|
|
testLogout();
|
|
})
|
|
.catch(err => console.error(err));
|
|
}
|
|
|
|
export function testUpAndDownOneFile(file, fileName) {
|
|
return delTestFile(fileName)
|
|
.then(() => testUpload(file))
|
|
.then(shareId => testDownload(shareId, file))
|
|
.catch(err => console.error(err));
|
|
}
|
|
|
|
function delTestFile(fileName) {
|
|
return list().then(infos => {
|
|
const info = infos.find(info => {
|
|
return info.PathLocal === fileName;
|
|
});
|
|
|
|
if (info == null) {
|
|
console.log("up-down: file not found", fileName);
|
|
} else {
|
|
return del(info.Id);
|
|
}
|
|
});
|
|
}
|
|
|
|
function testDownload(shareId, file) {
|
|
return axios
|
|
.get(`${config.serverAddr}/download?shareid=${shareId}`)
|
|
.then(response => {
|
|
return new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
reader.onload = event => {
|
|
const upHash = md5(event.target.result);
|
|
const downHash = md5(response.data);
|
|
if (upHash !== downHash) {
|
|
console.error(
|
|
"up&down: hash unmatch",
|
|
file.name,
|
|
upHash,
|
|
downHash,
|
|
upHash.length,
|
|
downHash.length
|
|
);
|
|
} else {
|
|
console.log("up&down: ok: hash match", file.name, upHash, downHash);
|
|
resolve();
|
|
}
|
|
};
|
|
|
|
reader.onerror = err => reject(err);
|
|
|
|
reader.readAsText(file);
|
|
});
|
|
});
|
|
}
|