Skip to content

Commit ef31883

Browse files
Fix: Correct error handling for project and folder creation responses
1 parent 7e36469 commit ef31883

File tree

1 file changed

+37
-17
lines changed

1 file changed

+37
-17
lines changed

src/tools/testmanagement-utils/create-project-folder.ts

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export async function createProjectOrFolder(
6868
},
6969
);
7070

71-
if (!res.data.data.success) {
71+
if (!res.data.success) {
7272
throw new Error(
7373
`Failed to create project: ${JSON.stringify(res.data)}`,
7474
);
@@ -77,19 +77,29 @@ export async function createProjectOrFolder(
7777

7878
projId = res.data.project.identifier;
7979
} catch (err) {
80-
const msg =
81-
err instanceof AxiosError && err.response?.data?.message
82-
? err.response.data.message
83-
: err instanceof Error
84-
? err.message
85-
: "Unknown error";
80+
let message = "Unknown error";
81+
let text = "Failed to create project.";
82+
83+
if (err instanceof AxiosError && err.response?.data) {
84+
const { error } = err.response.data;
85+
const status = err.response.status;
86+
87+
message = error || "Unknown error";
88+
89+
if (status >= 400 && status < 500 && error) {
90+
// Only for 4xx errors, show API's error text
91+
text = error;
92+
}
93+
} else if (err instanceof Error) {
94+
message = err.message;
95+
}
96+
8697
return {
87-
content: [{ type: "text", text: `Failed to create project: ${msg}` }],
98+
content: [{ type: "text", text, message }],
8899
isError: true,
89100
};
90101
}
91102
}
92-
93103
// Step 2: Create folder if folder_name provided
94104
if (folder_name) {
95105
if (!projId)
@@ -115,7 +125,7 @@ export async function createProjectOrFolder(
115125
},
116126
);
117127

118-
if (!res.data.data.success) {
128+
if (!res.data.success) {
119129
throw new Error(`Failed to create folder: ${JSON.stringify(res.data)}`);
120130
}
121131
// Folder created successfully
@@ -130,14 +140,24 @@ export async function createProjectOrFolder(
130140
],
131141
};
132142
} catch (err) {
133-
const msg =
134-
err instanceof AxiosError && err.response?.data?.message
135-
? err.response.data.message
136-
: err instanceof Error
137-
? err.message
138-
: "Unknown error";
143+
let message = "Unknown error";
144+
let text = "Failed to create folder.";
145+
146+
if (err instanceof AxiosError && err.response?.data) {
147+
const { message: apiMessage } = err.response.data;
148+
const status = err.response.status;
149+
150+
message = apiMessage || "Unknown error";
151+
152+
if (status >= 400 && status < 500 && apiMessage) {
153+
text = apiMessage;
154+
}
155+
} else if (err instanceof Error) {
156+
message = err.message;
157+
}
158+
139159
return {
140-
content: [{ type: "text", text: `Failed to create folder: ${msg}` }],
160+
content: [{ type: "text", text, message }],
141161
isError: true,
142162
};
143163
}

0 commit comments

Comments
 (0)