fix: in can connect test mock underlying axios instance's get method

This commit is contained in:
StevanFreeborn
2023-01-27 22:21:38 -06:00
parent cad208cd4c
commit fa1a952cb2
5 changed files with 212 additions and 7 deletions
+149 -1
View File
@@ -16,7 +16,7 @@ describe('ApiResponseFactory', function () {
expect(ApiResponseFactory.getApiResponse).to.have.lengthOf(1);
});
it('should return an ApiResponse object', function () {
it('should return an ApiResponse object when request is successful', function () {
const response: AxiosResponse = {
data: null,
status: 200,
@@ -35,5 +35,153 @@ describe('ApiResponseFactory', function () {
expect(apiResponse.message).to.equal('');
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object without a message value when request is forbidden and the response does not contain a message property', function () {
const response: AxiosResponse = {
data: null,
status: 403,
statusText: 'Forbidden',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(403);
expect(apiResponse.message).to.equal(undefined);
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object when request is forbidden and the response contains a message property', function () {
const response: AxiosResponse = {
data: {
message: 'Does not have permission to access this resource.'
},
status: 403,
statusText: 'Forbidden',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(403);
expect(apiResponse.message).to.equal('Does not have permission to access this resource.');
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object without a message value when request is not found and the response does not contain a message property', function () {
const response: AxiosResponse = {
data: null,
status: 404,
statusText: 'Not Found',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(404);
expect(apiResponse.message).to.equal(undefined);
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object with a message value when request is not found and the response contains a message property', function () {
const response: AxiosResponse = {
data: {
message: 'Resource not found.'
},
status: 404,
statusText: 'Not Found',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(404);
expect(apiResponse.message).to.equal('Resource not found.');
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object without a message value when request is unauthorized and the response does not contain a message property', function () {
const response: AxiosResponse = {
data: null,
status: 401,
statusText: 'Unauthorized',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(401);
expect(apiResponse.message).to.equal(undefined);
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object with a message when request is unauthorized and the response contains a message property', function () {
const response: AxiosResponse = {
data: {
message: 'Unauthorized.'
},
status: 401,
statusText: 'Unauthorized',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(401);
expect(apiResponse.message).to.equal('Unauthorized.');
expect(apiResponse.data).to.equal(null);
});
it('should return an ApiResponse object with a message when request is a bad request', function () {
const response: AxiosResponse = {
data: {
field: 'Invalid input.'
},
status: 400,
statusText: 'Bad Request',
headers: {},
config: {} as InternalAxiosRequestConfig,
};
const apiResponse = ApiResponseFactory.getApiResponse(response);
expect(apiResponse).to.not.be.undefined;
expect(apiResponse).to.have.property('statusCode');
expect(apiResponse).to.have.property('message');
expect(apiResponse).to.have.property('data');
expect(apiResponse.statusCode).to.equal(400);
expect(apiResponse.message).to.equal('{"field":"Invalid input."}');
expect(apiResponse.data).to.equal(null);
});
});
});