|
|
|
@ -13,26 +13,27 @@ describe("Git3 Test", function () {
|
|
|
|
|
|
|
|
|
|
let singer;
|
|
|
|
|
[singer] = await ethers.getSigners();
|
|
|
|
|
const repoName = Buffer.from("test");
|
|
|
|
|
|
|
|
|
|
await git3.createRepo("0x11");
|
|
|
|
|
await git3.createRepo(repoName);
|
|
|
|
|
|
|
|
|
|
await git3.upload("0x11", "0x616263", "0x112233");
|
|
|
|
|
expect(await git3.download("0x11", "0x616263")).to.eql(["0x112233", true]);
|
|
|
|
|
await git3.upload(repoName, "0x616263", "0x112233");
|
|
|
|
|
expect(await git3.download(repoName, "0x616263")).to.eql(["0x112233", true]);
|
|
|
|
|
|
|
|
|
|
let data = Array.from({ length: 40 }, () =>
|
|
|
|
|
Math.floor(Math.random() * 256)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await git3.upload("0x11", "0x616263", data);
|
|
|
|
|
expect(await git3.download("0x11", "0x616263")).to.eql([
|
|
|
|
|
await git3.upload(repoName, "0x616263", data);
|
|
|
|
|
expect(await git3.download(repoName, "0x616263")).to.eql([
|
|
|
|
|
ethers.utils.hexlify(data),
|
|
|
|
|
true,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
expect(await git3.size("0x11", "0x616263")).to.eql([ToBig(40), ToBig(1)]);
|
|
|
|
|
expect(await git3.size(repoName, "0x616263")).to.eql([ToBig(40), ToBig(1)]);
|
|
|
|
|
|
|
|
|
|
await git3.remove("0x11", "0x616263");
|
|
|
|
|
expect(await git3.size("0x11", "0x616263")).to.eql([ToBig(0), ToBig(0)]);
|
|
|
|
|
await git3.remove(repoName, "0x616263");
|
|
|
|
|
expect(await git3.size(repoName, "0x616263")).to.eql([ToBig(0), ToBig(0)]);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("upload/download/remove chunks", async function () {
|
|
|
|
@ -40,15 +41,16 @@ describe("Git3 Test", function () {
|
|
|
|
|
const git3 = await Git3.deploy();
|
|
|
|
|
await git3.deployed();
|
|
|
|
|
|
|
|
|
|
await git3.createRepo("0x11");
|
|
|
|
|
const repoName = Buffer.from("test");
|
|
|
|
|
await git3.createRepo(repoName);
|
|
|
|
|
|
|
|
|
|
expect(await git3.countChunks("0x11", "0x616263")).to.eql(ToBig(0));
|
|
|
|
|
expect(await git3.countChunks(repoName, "0x616263")).to.eql(ToBig(0));
|
|
|
|
|
|
|
|
|
|
let data0 = Array.from({ length: 10 }, () =>
|
|
|
|
|
Math.floor(Math.random() * 256)
|
|
|
|
|
);
|
|
|
|
|
await git3.uploadChunk("0x11", "0x616263", 0, data0);
|
|
|
|
|
expect(await git3.download("0x11", "0x616263")).to.eql([
|
|
|
|
|
await git3.uploadChunk(repoName, "0x616263", 0, data0);
|
|
|
|
|
expect(await git3.download(repoName, "0x616263")).to.eql([
|
|
|
|
|
ethers.utils.hexlify(data0),
|
|
|
|
|
true,
|
|
|
|
|
]);
|
|
|
|
@ -56,16 +58,16 @@ describe("Git3 Test", function () {
|
|
|
|
|
let data1 = Array.from({ length: 20 }, () =>
|
|
|
|
|
Math.floor(Math.random() * 256)
|
|
|
|
|
);
|
|
|
|
|
await git3.uploadChunk("0x11", "0x616263", 1, data1);
|
|
|
|
|
expect(await git3.download("0x11", "0x616263")).to.eql([
|
|
|
|
|
await git3.uploadChunk(repoName, "0x616263", 1, data1);
|
|
|
|
|
expect(await git3.download(repoName, "0x616263")).to.eql([
|
|
|
|
|
ethers.utils.hexlify(data0.concat(data1)),
|
|
|
|
|
true,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
await git3.remove("0x11", "0x616263"); // should succeed
|
|
|
|
|
expect(await git3.size("0x11", "0x616263")).to.eql([ToBig(0), ToBig(0)]);
|
|
|
|
|
expect(await git3.download("0x11", "0x616263")).to.eql(["0x", false]);
|
|
|
|
|
expect(await git3.countChunks("0x11", "0x616263")).to.eql(ToBig(0));
|
|
|
|
|
await git3.remove(repoName, "0x616263"); // should succeed
|
|
|
|
|
expect(await git3.size(repoName, "0x616263")).to.eql([ToBig(0), ToBig(0)]);
|
|
|
|
|
expect(await git3.download(repoName, "0x616263")).to.eql(["0x", false]);
|
|
|
|
|
expect(await git3.countChunks(repoName, "0x616263")).to.eql(ToBig(0));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("set/update/list/remove Reference", async function () {
|
|
|
|
@ -73,22 +75,22 @@ describe("Git3 Test", function () {
|
|
|
|
|
const git3 = await Git3.deploy();
|
|
|
|
|
await git3.deployed();
|
|
|
|
|
|
|
|
|
|
let repoName = "0x11";
|
|
|
|
|
let repoName = Buffer.from("test");
|
|
|
|
|
await git3.createRepo(repoName);
|
|
|
|
|
|
|
|
|
|
function concatHexStr(s1, s2) {
|
|
|
|
|
return s1.concat("2f").concat(s2.slice(2));
|
|
|
|
|
return "0x" + Buffer.concat([s1, Buffer.from("/"), s2]).toString("hex");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let key0 = "0x616263";
|
|
|
|
|
let key0 = Buffer.from("refs/heads/master");
|
|
|
|
|
let data0 = "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
|
|
|
|
|
await git3.setRef(repoName, key0, data0);
|
|
|
|
|
|
|
|
|
|
let key1 = "0x717273";
|
|
|
|
|
let key1 = Buffer.from("refs/heads/dev");
|
|
|
|
|
let data1 = "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
|
|
|
|
|
await git3.setRef(repoName, key1, data1);
|
|
|
|
|
|
|
|
|
|
let key2 = "0x818283";
|
|
|
|
|
let key2 = Buffer.from("refs/heads/main");
|
|
|
|
|
let data2 = "0xcccccccccccccccccccccccccccccccccccccccc";
|
|
|
|
|
await git3.setRef(repoName, key2, data2);
|
|
|
|
|
|
|
|
|
@ -125,18 +127,33 @@ describe("Git3 Test", function () {
|
|
|
|
|
let singer;
|
|
|
|
|
let user1;
|
|
|
|
|
[singer, user1,] = await ethers.getSigners();
|
|
|
|
|
const repoName = Buffer.from("test")
|
|
|
|
|
|
|
|
|
|
await git3.connect(singer).createRepo(repoName);
|
|
|
|
|
|
|
|
|
|
await git3.connect(singer).createRepo("0x11");
|
|
|
|
|
await expect(git3.connect(user1).upload(repoName, "0x616263", "0x112233")).to.be.revertedWith("only owner");
|
|
|
|
|
await expect(git3.connect(user1).uploadChunk(repoName, "0x616263", 0, "0x112233")).to.be.revertedWith("only owner");
|
|
|
|
|
await expect(git3.connect(user1).setRef(repoName, "0x616263", "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")).to.be.revertedWith("only owner");
|
|
|
|
|
|
|
|
|
|
await expect(git3.connect(user1).upload("0x11", "0x616263", "0x112233")).to.be.revertedWith("only owner");
|
|
|
|
|
await expect(git3.connect(user1).uploadChunk("0x11", "0x616263", 0,"0x112233")).to.be.revertedWith("only owner");
|
|
|
|
|
await expect(git3.connect(user1).setRef("0x11", "0x616263", "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")).to.be.revertedWith("only owner");
|
|
|
|
|
await git3.connect(singer).upload(repoName, "0x616263", "0x112233")
|
|
|
|
|
expect(await git3.download(repoName, "0x616263")).to.eql(["0x112233", true]);
|
|
|
|
|
await git3.connect(singer).setRef(repoName, "0x616263", "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
|
|
|
|
|
|
|
|
|
|
await git3.connect(singer).upload("0x11", "0x616263", "0x112233")
|
|
|
|
|
expect(await git3.download("0x11", "0x616263")).to.eql(["0x112233", true]);
|
|
|
|
|
await git3.connect(singer).setRef("0x11", "0x616263", "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
|
|
|
|
|
await expect(git3.connect(user1).remove(repoName, "0x616263")).to.be.revertedWith("only owner");
|
|
|
|
|
await expect(git3.connect(user1).delRef(repoName, "0x616263")).to.be.revertedWith("only owner");
|
|
|
|
|
|
|
|
|
|
await expect(git3.connect(user1).remove("0x11", "0x616263")).to.be.revertedWith("only owner");
|
|
|
|
|
await expect(git3.connect(user1).delRef("0x11", "0x616263")).to.be.revertedWith("only owner");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("RepoName Check", async function () {
|
|
|
|
|
const Git3 = await ethers.getContractFactory("Git3");
|
|
|
|
|
const git3 = await Git3.deploy();
|
|
|
|
|
await git3.deployed();
|
|
|
|
|
|
|
|
|
|
let repoName = Buffer.from("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.-_");
|
|
|
|
|
await git3.createRepo(repoName);
|
|
|
|
|
await expect(git3.createRepo(repoName)).to.be.revertedWith("RepoName already exist");
|
|
|
|
|
await expect(git3.createRepo(Buffer.from("a/b"))).to.be.revertedWith("RepoName must be alphanumeric or -._");
|
|
|
|
|
await expect(git3.createRepo(Buffer.from("a".repeat(101)))).to.be.revertedWith("RepoName length must be 1-100");
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|