Skip to content

Commit

Permalink
more test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
benny-n committed Aug 23, 2024
1 parent 07d7dc5 commit 06c3b4a
Show file tree
Hide file tree
Showing 5 changed files with 196 additions and 92 deletions.
30 changes: 28 additions & 2 deletions tests/blob/apis/appendblob.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,32 @@ describe("AppendBlobAPIs", () => {
assert.deepStrictEqual(properties.blobCommittedBlockCount, 0);
});

it("Create append blob should fail when metadata names are invalid C# identifiers @loki @sql", async () => {
let invalidNames = [
"1invalid",
"invalid.name",
"invalid-name",
]
for (let i = 0; i < invalidNames.length; i++) {
const metadata = {
[invalidNames[i]]: "value"
};
let hasError = false;
try {
await appendBlobClient.create({
metadata: metadata
});
} catch (error) {
assert.deepStrictEqual(error.statusCode, 400);
assert.strictEqual(error.code, 'InvalidMetadata');
hasError = true;
}
if (!hasError) {
assert.fail();
}
}
});

it("Delete append blob should work @loki", async () => {
await appendBlobClient.create();
await appendBlobClient.delete();
Expand Down Expand Up @@ -387,7 +413,7 @@ describe("AppendBlobAPIs", () => {
await appendBlobClient.appendBlock("T", 1);
await appendBlobClient.appendBlock("@", 2);

const response = await snapshotAppendBlobURL.download(3, undefined, {rangeGetContentMD5: true});
const response = await snapshotAppendBlobURL.download(3, undefined, { rangeGetContentMD5: true });
const string = await bodyToString(response);
assert.deepStrictEqual(string, "def");
assert.deepEqual(response.contentMD5, await getMD5FromString("def"));
Expand All @@ -404,7 +430,7 @@ describe("AppendBlobAPIs", () => {

await appendBlobClient.delete();

const response = await copiedAppendBlobClient.download(3, undefined, {rangeGetContentMD5: true});
const response = await copiedAppendBlobClient.download(3, undefined, { rangeGetContentMD5: true });
const string = await bodyToString(response);
assert.deepStrictEqual(string, "def");
assert.deepEqual(response.contentMD5, await getMD5FromString("def"));
Expand Down
2 changes: 1 addition & 1 deletion tests/blob/apis/blob.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@ describe("BlobAPIs", () => {
await blockBlobClient.upload(content, content.length, { metadata });
} catch (error) {
assert.deepStrictEqual(error.statusCode, 400);
assert.strictEqual(error.code, 'InvalidHeaderValue');
assert.strictEqual(error.code, 'InvalidMetadata');
hasError = true;
}
if (!hasError)
Expand Down
32 changes: 29 additions & 3 deletions tests/blob/apis/blockblob.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,32 @@ describe("BlockBlobAPIs", () => {
);
});

it("upload should fail when metadata names are invalid C# identifiers @loki @sql", async () => {
let invalidNames = [
"1invalid",
"invalid.name",
"invalid-name",
]
for (let i = 0; i < invalidNames.length; i++) {
const metadata = {
[invalidNames[i]]: "value"
};
let hasError = false;
try {
await blockBlobClient.upload('b', 1, {
metadata: metadata
});
} catch (error) {
assert.deepStrictEqual(error.statusCode, 400);
assert.strictEqual(error.code, 'InvalidMetadata');
hasError = true;
}
if (!hasError) {
assert.fail();
}
}
});

it("stageBlock @loki @sql", async () => {
const body = "HelloWorld";
const result_stage = await blockBlobClient.stageBlock(
Expand Down Expand Up @@ -353,12 +379,12 @@ describe("BlockBlobAPIs", () => {

it("Download a blob range should only return ContentMD5 when has request header x-ms-range-get-content-md5 @loki @sql", async () => {
blockBlobClient.deleteIfExists();

await blockBlobClient.upload("abc", 0);

const properties1 = await blockBlobClient.getProperties();
assert.deepEqual(properties1.contentMD5, await getMD5FromString("abc"));

let result = await blockBlobClient.download(0, 6);
assert.deepStrictEqual(await bodyToString(result, 3), "abc");
assert.deepStrictEqual(result.contentLength, 3);
Expand All @@ -371,7 +397,7 @@ describe("BlockBlobAPIs", () => {
assert.deepEqual(result.contentMD5, await getMD5FromString("abc"));
assert.deepEqual(result.blobContentMD5, await getMD5FromString("abc"));

result = await blockBlobClient.download(0, 1, {rangeGetContentMD5: true});
result = await blockBlobClient.download(0, 1, { rangeGetContentMD5: true });
assert.deepStrictEqual(await bodyToString(result, 1), "a");
assert.deepStrictEqual(result.contentLength, 1);
assert.deepEqual(result.contentMD5, await getMD5FromString("a"));
Expand Down
32 changes: 29 additions & 3 deletions tests/blob/apis/container.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,32 @@ describe("ContainerAPIs", () => {
done();
});

it("create should fail when metadata names are invalid C# identifiers @loki @sql", async () => {
let invalidNames = [
"1invalid",
"invalid.name",
"invalid-name",
]
for (let i = 0; i < invalidNames.length; i++) {
const metadata = {
[invalidNames[i]]: "value"
};
let hasError = false;
try {
const cURL = serviceClient.getContainerClient(getUniqueName(containerName));
const access = "container";
await cURL.create({ metadata, access });
} catch (error) {
assert.deepStrictEqual(error.statusCode, 400);
assert.strictEqual(error.code, 'InvalidMetadata');
hasError = true;
}
if (!hasError) {
assert.fail();
}
}
});

it("listBlobHierarchySegment with default parameters @loki @sql", async () => {
const blobClients = [];
for (let i = 0; i < 3; i++) {
Expand Down Expand Up @@ -674,7 +700,7 @@ describe("ContainerAPIs", () => {
const inputmarker = undefined;
let result = (
await containerClient
.listBlobsByHierarchy("/",{
.listBlobsByHierarchy("/", {
prefix: ""
})
.byPage({
Expand Down Expand Up @@ -1165,7 +1191,7 @@ describe("ContainerAPIs", () => {
await blockBlobClient.upload("", 0);
blobClients.push(blobClient);
}

// list with prefix has "+" instead of "%20" for space
// create service client
let pipeline = newPipeline(
Expand Down Expand Up @@ -1205,7 +1231,7 @@ describe("ContainerAPIs", () => {
gotNames.push(item.name);
}
assert.deepStrictEqual(gotNames, blobNames);

// clean up
for (const blob of blobClients) {
await blob.delete();
Expand Down
Loading

0 comments on commit 06c3b4a

Please sign in to comment.