@elasticpath/component-test-framework 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/api.js CHANGED
@@ -80,8 +80,8 @@ class Api {
80
80
  throw new Error(`invalid URL: ${fqURL}`);
81
81
  }
82
82
  }
83
- get(endpoint, abortOnError = true) {
84
- return __awaiter(this, void 0, void 0, function* () {
83
+ get(endpoint_1) {
84
+ return __awaiter(this, arguments, void 0, function* (endpoint, abortOnError = true) {
85
85
  this.validateUrl(endpoint);
86
86
  this.requestPath = endpoint;
87
87
  this.requestMethod = 'GET';
@@ -97,8 +97,8 @@ class Api {
97
97
  return this.axiosResponseObject.response;
98
98
  });
99
99
  }
100
- post(endpoint, payload, abortOnError = true) {
101
- return __awaiter(this, void 0, void 0, function* () {
100
+ post(endpoint_1, payload_1) {
101
+ return __awaiter(this, arguments, void 0, function* (endpoint, payload, abortOnError = true) {
102
102
  this.validateUrl(endpoint);
103
103
  this.requestPath = endpoint;
104
104
  this.requestMethod = 'POST';
@@ -115,8 +115,8 @@ class Api {
115
115
  return this.axiosResponseObject.response;
116
116
  });
117
117
  }
118
- form(endpoint, form, abortOnError = true) {
119
- return __awaiter(this, void 0, void 0, function* () {
118
+ form(endpoint_1, form_1) {
119
+ return __awaiter(this, arguments, void 0, function* (endpoint, form, abortOnError = true) {
120
120
  this.validateUrl(endpoint);
121
121
  this.requestPath = endpoint;
122
122
  this.requestMethod = 'POST';
@@ -131,8 +131,8 @@ class Api {
131
131
  return this.axiosResponseObject.response;
132
132
  });
133
133
  }
134
- put(endpoint, payload, abortOnError = true) {
135
- return __awaiter(this, void 0, void 0, function* () {
134
+ put(endpoint_1, payload_1) {
135
+ return __awaiter(this, arguments, void 0, function* (endpoint, payload, abortOnError = true) {
136
136
  this.validateUrl(endpoint);
137
137
  this.requestPath = endpoint;
138
138
  this.requestMethod = 'PUT';
@@ -145,8 +145,8 @@ class Api {
145
145
  return this.axiosResponseObject.response;
146
146
  });
147
147
  }
148
- delete(endpoint, payload, abortOnError = true) {
149
- return __awaiter(this, void 0, void 0, function* () {
148
+ delete(endpoint_1, payload_1) {
149
+ return __awaiter(this, arguments, void 0, function* (endpoint, payload, abortOnError = true) {
150
150
  this.validateUrl(endpoint);
151
151
  this.requestPath = endpoint;
152
152
  this.requestMethod = 'DELETE';
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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","sourcesContent":["import Axios, { AxiosInstance, AxiosError, AxiosResponse, AxiosRequestConfig, InternalAxiosRequestConfig } from 'axios'\nimport * as AxiosLogger from 'axios-logger'\nimport * as FormData from 'form-data'\nimport { expect } from 'chai'\n\nimport { ApiPayload, ApiResponse, ApiArrayResponse, Error, V2Response, V3Response } from './api.interfaces'\nimport ResourceStore from './resource_store'\nimport * as Logger from './logger'\nimport { nullOrValue } from './utils'\n\nclass Api {\n public axiosInstance: AxiosInstance\n\n private axiosResponseObject: AxiosResponse | AxiosError\n\n private requestPath: string\n\n private requestMethod: string\n\n // We can't add this to the interceptors because we sometimes\n // need to overwrite this\n private readonly defaultHeaders: object\n\n private headers: object\n\n private readonly baseUrl: string\n\n public constructor() {\n const { CTF_BASE_URL, CTF_LOGGING_LEVEL } = process.env\n\n this.defaultHeaders = {\n 'content-type': 'application/json',\n }\n this.headers = this.defaultHeaders\n\n this.axiosInstance = Axios.create({\n baseURL: CTF_BASE_URL,\n timeout: 4000,\n timeoutErrorMessage: `[Fail] Api request timed out. Is the service running on ${CTF_BASE_URL}`,\n })\n\n this.axiosInstance.interceptors.request.use((config: InternalAxiosRequestConfig) => {\n // eslint-disable-next-line no-param-reassign\n config.headers.accept = 'application/json'\n return config\n })\n\n if (CTF_LOGGING_LEVEL === 'debug') {\n this.axiosInstance.interceptors.request.use((internalrequest: InternalAxiosRequestConfig) => {\n const { headers } = internalrequest\n const request: AxiosRequestConfig = {\n ...internalrequest,\n }\n const logrequest = AxiosLogger.requestLogger(request as any)\n return {\n ...logrequest,\n headers,\n }\n }, AxiosLogger.errorLogger)\n this.axiosInstance.interceptors.response.use(AxiosLogger.responseLogger)\n }\n\n this.baseUrl = CTF_BASE_URL\n }\n\n private isError(response): response is AxiosError {\n return (<AxiosError>this.axiosResponseObject).isAxiosError !== undefined\n }\n\n public isV3Response(data: V2Response | V3Response): data is V3Response {\n if (this.isError(this.axiosResponseObject)) {\n return false\n }\n\n return <V3Response>data.attributes !== undefined\n }\n\n public IsV2Response(data: V2Response | V3Response): data is V2Response {\n return !this.isV3Response(data)\n }\n\n public get errors(): Array<Error> | Array<any> {\n // Response data is never an array if there's errors\n if (Array.isArray(this.response.data)) {\n Logger.error('Attempted to access errors on an array response')\n return null\n }\n\n return this.response.data.errors\n }\n\n public get response(): ApiResponse | ApiArrayResponse {\n if (this.isError(this.axiosResponseObject)) {\n return {\n status: this.axiosResponseObject?.response?.status,\n data: this.axiosResponseObject?.response?.data,\n } as ApiResponse\n }\n\n return {\n status: this.axiosResponseObject.status,\n // add everything else from the response\n ...this.axiosResponseObject.data,\n }\n }\n\n public validateUrl(endpoint: string) {\n const regex = /(?<!http:)\\/{2,}/\n const fqURL = `${this.baseUrl}${endpoint}`\n\n if (regex.test(fqURL)) {\n throw new Error(`invalid URL: ${fqURL}`)\n }\n }\n\n public async get(endpoint: string, abortOnError: boolean = true): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'GET'\n\n this.axiosResponseObject = await this.axiosInstance\n .get(endpoint, { headers: this.headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n if (!this.isEmpty(this.axiosResponseObject)) {\n ResourceStore.Store(this.axiosResponseObject.data)\n }\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async post(\n endpoint: string,\n payload: ApiPayload,\n abortOnError: boolean = true,\n ): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'POST'\n\n this.axiosResponseObject = await this.axiosInstance\n .post(endpoint, payload, { headers: this.headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n // Check if there's data to save\n if (this.axiosResponseObject.status !== 204) {\n ResourceStore.Store(this.axiosResponseObject.data)\n }\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async form(endpoint: string, form: FormData, abortOnError: boolean = true): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'POST'\n const headers = { ...this.headers, ...form.getHeaders() }\n\n this.axiosResponseObject = await this.axiosInstance\n .post(endpoint, form, { headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n ResourceStore.Store(this.axiosResponseObject.data)\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async put(\n endpoint: string,\n payload: ApiPayload,\n abortOnError: boolean = true,\n ): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'PUT'\n\n this.axiosResponseObject = await this.axiosInstance\n .put(endpoint, payload, { headers: this.headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async delete(\n endpoint: string,\n payload?: ApiPayload,\n abortOnError: boolean = true,\n ): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'DELETE'\n // For some reason, axios delete requests specify the payload and headers in the same object\n const config = {\n ...payload,\n ...{ headers: this.headers },\n }\n\n this.axiosResponseObject = await this.axiosInstance\n .delete(endpoint, config)\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n // setHeaders will merge the new headers with the current ones, overwriting if\n // the same key exists. The value will use nullOrValue to properly map strings to literals ('null' => null)\n public setHeaders(newHeaders: object, reset: boolean = false, preserveValueType: boolean = false): void {\n if (reset) {\n this.headers = {}\n }\n\n Object.entries(newHeaders).forEach((h) => {\n let value = h[1]\n if (!preserveValueType) {\n value = nullOrValue(value)\n }\n return Object.assign(this.headers, {\n [h[0]]: value,\n })\n })\n }\n\n public deleteHeader(key: string) {\n delete this.headers[key]\n }\n\n private fail(error: AxiosError, abortOnError: boolean): AxiosError {\n if (abortOnError) {\n this.beautifyError(error)\n expect.fail(error.message)\n }\n\n return error\n }\n\n private beautifyError(error: any): void {\n if (error.response) {\n Logger.error(\n `Failed requesting ${this.requestMethod.toUpperCase()} ${process.env.CTF_BASE_URL}${this.requestPath}`,\n )\n\n if (error.response?.data?.errors !== undefined) {\n Logger.error(error.response?.data?.errors)\n }\n } else {\n Logger.error('[FATAL ERROR]', error, '\\n')\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private isEmpty(response: AxiosResponse): boolean {\n if (!response.data) {\n return true\n }\n\n if (Array.isArray(response.data.data)) {\n if (response.data.data.length === 0) {\n return true\n }\n } else if (Object.keys(response.data.data).length === 0) {\n return true\n }\n\n return false\n }\n}\n\nexport default Api\n"]}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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","sourcesContent":["import Axios, { AxiosInstance, AxiosError, AxiosResponse, AxiosRequestConfig, InternalAxiosRequestConfig } from 'axios'\nimport * as AxiosLogger from 'axios-logger'\nimport * as FormData from 'form-data'\nimport { expect } from 'chai'\n\nimport { ApiPayload, ApiResponse, ApiArrayResponse, Error, V2Response, V3Response } from './api.interfaces'\nimport ResourceStore from './resource_store'\nimport * as Logger from './logger'\nimport { nullOrValue } from './utils'\n\nclass Api {\n public axiosInstance: AxiosInstance\n\n private axiosResponseObject: AxiosResponse | AxiosError\n\n private requestPath: string\n\n private requestMethod: string\n\n // We can't add this to the interceptors because we sometimes\n // need to overwrite this\n private readonly defaultHeaders: object\n\n private headers: object\n\n private readonly baseUrl: string\n\n public constructor() {\n const { CTF_BASE_URL, CTF_LOGGING_LEVEL } = process.env\n\n this.defaultHeaders = {\n 'content-type': 'application/json',\n }\n this.headers = this.defaultHeaders\n\n this.axiosInstance = Axios.create({\n baseURL: CTF_BASE_URL,\n timeout: 4000,\n timeoutErrorMessage: `[Fail] Api request timed out. Is the service running on ${CTF_BASE_URL}`,\n })\n\n this.axiosInstance.interceptors.request.use((config: InternalAxiosRequestConfig) => {\n // eslint-disable-next-line no-param-reassign\n config.headers.accept = 'application/json'\n return config\n })\n\n if (CTF_LOGGING_LEVEL === 'debug') {\n this.axiosInstance.interceptors.request.use((internalrequest: InternalAxiosRequestConfig) => {\n const { headers } = internalrequest\n const request: AxiosRequestConfig = {\n ...internalrequest,\n }\n const logrequest = AxiosLogger.requestLogger(request as any)\n return {\n ...logrequest,\n headers,\n }\n }, AxiosLogger.errorLogger)\n this.axiosInstance.interceptors.response.use(AxiosLogger.responseLogger)\n }\n\n this.baseUrl = CTF_BASE_URL\n }\n\n private isError(response): response is AxiosError {\n return (<AxiosError>this.axiosResponseObject).isAxiosError !== undefined\n }\n\n public isV3Response(data: V2Response | V3Response): data is V3Response {\n if (this.isError(this.axiosResponseObject)) {\n return false\n }\n\n return <V3Response>data.attributes !== undefined\n }\n\n public IsV2Response(data: V2Response | V3Response): data is V2Response {\n return !this.isV3Response(data)\n }\n\n public get errors(): Array<Error> | Array<any> {\n // Response data is never an array if there's errors\n if (Array.isArray(this.response.data)) {\n Logger.error('Attempted to access errors on an array response')\n return null\n }\n\n return this.response.data.errors\n }\n\n public get response(): ApiResponse | ApiArrayResponse {\n if (this.isError(this.axiosResponseObject)) {\n return {\n status: this.axiosResponseObject?.response?.status,\n data: this.axiosResponseObject?.response?.data,\n } as ApiResponse\n }\n\n return {\n status: this.axiosResponseObject.status,\n // add everything else from the response\n ...this.axiosResponseObject.data,\n }\n }\n\n public validateUrl(endpoint: string) {\n const regex = /(?<!http:)\\/{2,}/\n const fqURL = `${this.baseUrl}${endpoint}`\n\n if (regex.test(fqURL)) {\n throw new Error(`invalid URL: ${fqURL}`)\n }\n }\n\n public async get(endpoint: string, abortOnError: boolean = true): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'GET'\n\n this.axiosResponseObject = await this.axiosInstance\n .get(endpoint, { headers: this.headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n if (!this.isEmpty(this.axiosResponseObject)) {\n ResourceStore.Store(this.axiosResponseObject.data)\n }\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async post(\n endpoint: string,\n payload: ApiPayload,\n abortOnError: boolean = true,\n ): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'POST'\n\n this.axiosResponseObject = await this.axiosInstance\n .post(endpoint, payload, { headers: this.headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n // Check if there's data to save\n if (this.axiosResponseObject.status !== 204) {\n ResourceStore.Store(this.axiosResponseObject.data)\n }\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async form(endpoint: string, form: FormData, abortOnError: boolean = true): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'POST'\n const headers = { ...this.headers, ...form.getHeaders() }\n\n this.axiosResponseObject = await this.axiosInstance\n .post(endpoint, form, { headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n ResourceStore.Store(this.axiosResponseObject.data)\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async put(\n endpoint: string,\n payload: ApiPayload,\n abortOnError: boolean = true,\n ): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'PUT'\n\n this.axiosResponseObject = await this.axiosInstance\n .put(endpoint, payload, { headers: this.headers })\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n public async delete(\n endpoint: string,\n payload?: ApiPayload,\n abortOnError: boolean = true,\n ): Promise<AxiosResponse<any, any>> {\n this.validateUrl(endpoint)\n this.requestPath = endpoint\n this.requestMethod = 'DELETE'\n // For some reason, axios delete requests specify the payload and headers in the same object\n const config = {\n ...payload,\n ...{ headers: this.headers },\n }\n\n this.axiosResponseObject = await this.axiosInstance\n .delete(endpoint, config)\n .catch((err) => this.fail(err, abortOnError))\n\n if (!this.isError(this.axiosResponseObject)) {\n return this.axiosResponseObject\n }\n\n return this.axiosResponseObject.response\n }\n\n // setHeaders will merge the new headers with the current ones, overwriting if\n // the same key exists. The value will use nullOrValue to properly map strings to literals ('null' => null)\n public setHeaders(newHeaders: object, reset: boolean = false, preserveValueType: boolean = false): void {\n if (reset) {\n this.headers = {}\n }\n\n Object.entries(newHeaders).forEach((h) => {\n let value = h[1]\n if (!preserveValueType) {\n value = nullOrValue(value)\n }\n return Object.assign(this.headers, {\n [h[0]]: value,\n })\n })\n }\n\n public deleteHeader(key: string) {\n delete this.headers[key]\n }\n\n private fail(error: AxiosError, abortOnError: boolean): AxiosError {\n if (abortOnError) {\n this.beautifyError(error)\n expect.fail(error.message)\n }\n\n return error\n }\n\n private beautifyError(error: any): void {\n if (error.response) {\n Logger.error(\n `Failed requesting ${this.requestMethod.toUpperCase()} ${process.env.CTF_BASE_URL}${this.requestPath}`,\n )\n\n if (error.response?.data?.errors !== undefined) {\n Logger.error(error.response?.data?.errors)\n }\n } else {\n Logger.error('[FATAL ERROR]', error, '\\n')\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private isEmpty(response: AxiosResponse): boolean {\n if (!response.data) {\n return true\n }\n\n if (Array.isArray(response.data.data)) {\n if (response.data.data.length === 0) {\n return true\n }\n } else if (Object.keys(response.data.data).length === 0) {\n return true\n }\n\n return false\n }\n}\n\nexport default Api\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elasticpath/component-test-framework",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "A framework for component tests written using ts-flow",
5
5
  "main": "./lib/index.js",
6
6
  "directories": {