Skip to content

Commit 7ebfb2f

Browse files
committed
fix(metadata.test.ts): metadata upload unit tests
Fixes the test file and controller to have passing tests and better error handling for the metadata upload functionality of the MetadataController
1 parent d6e61b8 commit 7ebfb2f

File tree

5 files changed

+205
-168
lines changed

5 files changed

+205
-168
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@
115115
"typedoc": "^0.26.5",
116116
"typescript": "5.5.3",
117117
"typescript-eslint": "^7.7.0",
118-
"vitest": "^1.1.3"
118+
"vite-tsconfig-paths": "^5.1.4",
119+
"vitest": "^1.1.3",
120+
"vitest-mock-extended": "^2.0.2"
119121
},
120122
"lint-staged": {
121123
"*.{mjx,cjs,js,jsx,ts,tsx}": [

pnpm-lock.yaml

Lines changed: 87 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/controllers/MetadataController.ts

Lines changed: 41 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -40,46 +40,55 @@ export class MetadataController extends Controller {
4040
message: "Validation failed",
4141
errors: { metadata: "Invalid metadata." },
4242
})
43-
public async storeMetadata(
44-
@Body() requestBody: StoreMetadataRequest,
45-
): Promise<StorageResponse> {
43+
public async storeMetadata(@Body() requestBody: StoreMetadataRequest) {
4644
const storage = await StorageService.init();
47-
const metadataValidationResult = validateMetadataAndClaimdata(
48-
requestBody.metadata,
49-
);
45+
const { metadata } = requestBody;
5046

51-
if (!metadataValidationResult.valid) {
52-
this.setStatus(422);
53-
return {
54-
success: false,
55-
message: "Validation failed",
56-
errors: metadataValidationResult.errors,
57-
};
58-
}
59-
60-
if (requestBody.metadata.allowList) {
61-
const allowListValidationResult = await validateRemoteAllowList(
62-
requestBody.metadata.allowList,
63-
);
64-
65-
if (!allowListValidationResult.valid) {
47+
try {
48+
const metadataValidationResult = validateMetadataAndClaimdata(metadata);
49+
if (!metadataValidationResult.valid) {
6650
this.setStatus(422);
6751
return {
6852
success: false,
69-
message: "Errors while validating allow list",
70-
errors: allowListValidationResult.errors,
53+
valid: false,
54+
message: "Errors while validating metadata",
55+
errors: metadataValidationResult.errors,
7156
};
7257
}
73-
}
7458

75-
const cid = await storage.uploadFile({
76-
file: jsonToBlob(metadataValidationResult.data),
77-
});
78-
this.setStatus(201);
79-
return {
80-
success: true,
81-
data: cid,
82-
};
59+
// Validate allowlist separately if it exists
60+
if (metadata.allowList) {
61+
const allowListValidationResult = await validateRemoteAllowList(
62+
metadata.allowList,
63+
);
64+
if (!allowListValidationResult.valid) {
65+
this.setStatus(422);
66+
return {
67+
success: false,
68+
valid: false,
69+
message: "Errors while validating allow list",
70+
errors: allowListValidationResult.errors,
71+
};
72+
}
73+
}
74+
75+
const cid = await storage.uploadFile({
76+
file: jsonToBlob(metadataValidationResult.data),
77+
});
78+
this.setStatus(201);
79+
80+
return {
81+
success: true,
82+
data: cid,
83+
};
84+
} catch (e) {
85+
this.setStatus(422);
86+
return {
87+
success: false,
88+
message: "Error while storing metadata",
89+
errors: { metadata: (e as Error).message },
90+
};
91+
}
8392
}
8493

8594
/**

0 commit comments

Comments
 (0)