TASK22211: normalize token endpoint contract handling
This commit is contained in:
@@ -13,41 +13,35 @@
|
||||
* description: Success
|
||||
*/
|
||||
import axios from "axios";
|
||||
import { respondError, respondSuccess } from "../middleware/apiResponse";
|
||||
|
||||
export default async function ApiProxy(req, res) {
|
||||
const accessTokenEndpoint = process.env.ACCESS_TOKEN_ENDPOINT;
|
||||
const tenantId = process.env.TENANT;
|
||||
const tokenBody =
|
||||
"grant_type=" +
|
||||
process.env.GRANT_TYPE +
|
||||
"&client_id=" +
|
||||
process.env.CLIENT_ID +
|
||||
"&client_secret=" +
|
||||
process.env.CLIENT_SECRET +
|
||||
"&scope=" +
|
||||
"https://" +
|
||||
process.env.RELAYURI +
|
||||
"/.default";
|
||||
try {
|
||||
const accessTokenEndpoint = process.env.ACCESS_TOKEN_ENDPOINT;
|
||||
const tenantId = process.env.TENANT;
|
||||
const tokenBody =
|
||||
"grant_type=" +
|
||||
process.env.GRANT_TYPE +
|
||||
"&client_id=" +
|
||||
process.env.CLIENT_ID +
|
||||
"&client_secret=" +
|
||||
process.env.CLIENT_SECRET +
|
||||
"&scope=" +
|
||||
"https://" +
|
||||
process.env.RELAYURI +
|
||||
"/.default";
|
||||
|
||||
var config = {
|
||||
method: "post",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
"Cache-Control": "no-cache",
|
||||
},
|
||||
url: `${accessTokenEndpoint}${tenantId}/oauth2/v2.0/token`,
|
||||
body: tokenBody,
|
||||
};
|
||||
const { data } = await axios.post(
|
||||
`${accessTokenEndpoint}${tenantId}/oauth2/v2.0/token`,
|
||||
tokenBody
|
||||
);
|
||||
|
||||
console.log("get token case:", config);
|
||||
|
||||
return axios
|
||||
.post(`${accessTokenEndpoint}${tenantId}/oauth2/v2.0/token`, tokenBody)
|
||||
.then(({ data }) => {
|
||||
console.log;
|
||||
res.status(200).json(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(400);
|
||||
return respondSuccess(res, data);
|
||||
} catch (error) {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "TOKEN_FETCH_FAILED",
|
||||
message: "Unable to fetch token"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3611,6 +3611,70 @@ test("getappealtypesfornewappeal returns success payload contract", async () =>
|
||||
);
|
||||
});
|
||||
|
||||
test("getToken success returns token payload contract", async () => {
|
||||
const mod = loadModule("pages/api/endpoint/getToken.js", {
|
||||
respondError: respondErrorMock,
|
||||
respondSuccess: respondSuccessMock,
|
||||
axios: {
|
||||
post: async () => ({
|
||||
data: {
|
||||
access_token: "token",
|
||||
token_type: "Bearer"
|
||||
}
|
||||
})
|
||||
},
|
||||
process: {
|
||||
env: {
|
||||
ACCESS_TOKEN_ENDPOINT: "https://login.microsoftonline.com/",
|
||||
TENANT: "tenant-id",
|
||||
GRANT_TYPE: "client_credentials",
|
||||
CLIENT_ID: "client-id",
|
||||
CLIENT_SECRET: "secret",
|
||||
RELAYURI: "relay.example"
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const req = { body: {} };
|
||||
const res = createRes();
|
||||
await mod.default(req, res);
|
||||
|
||||
assert.strictEqual(res.state.statusCode, 200);
|
||||
assert.deepStrictEqual(JSON.parse(JSON.stringify(res.state.jsonBody)), {
|
||||
access_token: "token",
|
||||
token_type: "Bearer"
|
||||
});
|
||||
});
|
||||
|
||||
test("getToken catch path returns TOKEN_FETCH_FAILED", async () => {
|
||||
const mod = loadModule("pages/api/endpoint/getToken.js", {
|
||||
respondError: respondErrorMock,
|
||||
respondSuccess: respondSuccessMock,
|
||||
axios: {
|
||||
post: async () => {
|
||||
throw new Error("token fetch failed");
|
||||
}
|
||||
},
|
||||
process: {
|
||||
env: {
|
||||
ACCESS_TOKEN_ENDPOINT: "https://login.microsoftonline.com/",
|
||||
TENANT: "tenant-id",
|
||||
GRANT_TYPE: "client_credentials",
|
||||
CLIENT_ID: "client-id",
|
||||
CLIENT_SECRET: "secret",
|
||||
RELAYURI: "relay.example"
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const req = { body: {} };
|
||||
const res = createRes();
|
||||
await mod.default(req, res);
|
||||
|
||||
assert.strictEqual(res.state.statusCode, 400);
|
||||
assert.strictEqual(res.state.jsonBody.error.code, "TOKEN_FETCH_FAILED");
|
||||
});
|
||||
|
||||
test("getsipsmedia returns success contract", async () => {
|
||||
const mod = loadModule("pages/api/endpoint/getsipsmedia_api.js", {
|
||||
respondSuccess: respondSuccessMock
|
||||
|
||||
Reference in New Issue
Block a user