diff --git a/packages/js/plugins/http/schema.graphql b/packages/js/plugins/http/schema.graphql index c28a43c9cf..da6abf4404 100644 --- a/packages/js/plugins/http/schema.graphql +++ b/packages/js/plugins/http/schema.graphql @@ -18,16 +18,14 @@ type Response { type Request { headers: [Header!] urlParams: [UrlParam!] - responseType: String! # "TEXT" || "BINARY" + responseType: ResponseType! body: String } -# Enum types curently not supported -# -# enum ResponseType { -# TEXT -# BINARY -# } +enum ResponseType { + TEXT + BINARY +} type Query { get(url: String!, request: Request): Response diff --git a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts index 45c6f498d3..f0e4168220 100644 --- a/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts +++ b/packages/js/plugins/http/src/__tests__/e2e/e2e.spec.ts @@ -251,7 +251,7 @@ describe("e2e tests for HttpPlugin", () => { post( url: "http://www.example.com/api" request: { - responseType: BINARY + responseType: 1 body: "{data: 'test-request'}" } ) @@ -293,7 +293,7 @@ describe("e2e tests for HttpPlugin", () => { post( url: "http://www.example.com/api" request: { - responseType: TEXT + responseType: 0 body: "{data: 'test-request'}" urlParams: [{key: "query", value: "foo"}] headers: [{key: "X-Request-Header", value: "req-foo"}] diff --git a/packages/js/plugins/http/src/__tests__/unit/index.test.ts b/packages/js/plugins/http/src/__tests__/unit/index.test.ts index f58140df85..4708063a48 100644 --- a/packages/js/plugins/http/src/__tests__/unit/index.test.ts +++ b/packages/js/plugins/http/src/__tests__/unit/index.test.ts @@ -1,6 +1,7 @@ import { HttpPlugin } from "../../index"; import axios, { AxiosResponse, AxiosRequestConfig } from "axios"; +import { ResponseType } from "../../types"; // mock axios jest.mock("axios"); @@ -35,7 +36,7 @@ describe("test http plugin", () => { { key: "X-Test-Header", value: "test-header-value" }, ], urlParams: [{ key: "q", value: "test-param" }], - responseType: "TEXT", + responseType: ResponseType.TEXT, }); expect(mockedAxios.get).lastCalledWith("/api/test", { @@ -72,7 +73,7 @@ describe("test http plugin", () => { { key: "X-Test-Header", value: "test-header-value" }, ], urlParams: [{ key: "q", value: "test-param" }], - responseType: "BINARY", + responseType: ResponseType.BINARY, }); expect(mockedAxios.get).lastCalledWith("/api/test", { @@ -114,7 +115,7 @@ describe("test http plugin", () => { ], urlParams: [{ key: "q", value: "test-param" }], body: "{request: 1001}", - responseType: "TEXT", + responseType: ResponseType.TEXT, }); expect(mockedAxios.post).lastCalledWith("/api/test", "{request: 1001}", { @@ -152,7 +153,7 @@ describe("test http plugin", () => { ], urlParams: [{ key: "q", value: "test-param" }], body: "{request: 1001}", - responseType: "BINARY", + responseType: ResponseType.BINARY, }); expect(mockedAxios.post).lastCalledWith("/api/test", "{request: 1001}", { diff --git a/packages/js/plugins/http/src/__tests__/unit/util.test.ts b/packages/js/plugins/http/src/__tests__/unit/util.test.ts index 479274ce0c..c3a39367d8 100644 --- a/packages/js/plugins/http/src/__tests__/unit/util.test.ts +++ b/packages/js/plugins/http/src/__tests__/unit/util.test.ts @@ -1,6 +1,8 @@ import { fromAxiosResponse, toAxiosRequestConfig } from "../../util"; +import { ResponseType } from "../../types"; describe("converting axios response", () => { + test("response type: text", () => { const response = fromAxiosResponse({ status: 200, @@ -45,7 +47,7 @@ describe("creating axios config", () => { { key: "Accept", value: "application-json" }, { key: "X-Header", value: "test-value" }, ], - responseType: "TEXT", + responseType: ResponseType.TEXT, body: "body-content", }); @@ -60,7 +62,7 @@ describe("creating axios config", () => { test("with url params", () => { const config = toAxiosRequestConfig({ urlParams: [{ key: "tag", value: "data" }], - responseType: "BINARY", + responseType: ResponseType.BINARY, body: "body-content", }); diff --git a/packages/js/plugins/http/src/types.ts b/packages/js/plugins/http/src/types.ts index 11dd7e7d3d..ad92d05af4 100644 --- a/packages/js/plugins/http/src/types.ts +++ b/packages/js/plugins/http/src/types.ts @@ -11,7 +11,10 @@ export class UrlParam { value: string; } -export type ResponseType = "TEXT" | "BINARY"; +export enum ResponseType { + TEXT, + BINARY, +} export class Request { headers?: Header[]; diff --git a/packages/js/plugins/http/src/util.ts b/packages/js/plugins/http/src/util.ts index 1f9c9b553e..6f0ac9fa33 100644 --- a/packages/js/plugins/http/src/util.ts +++ b/packages/js/plugins/http/src/util.ts @@ -1,4 +1,4 @@ -import { Request, Response, Header } from "./types"; +import { Request, Response, Header, ResponseType } from "./types"; import { AxiosResponse, AxiosRequestConfig } from "axios"; @@ -50,7 +50,8 @@ export function toAxiosRequestConfig(request: Request): AxiosRequestConfig { }, {}); let config: AxiosRequestConfig = { - responseType: request.responseType == "BINARY" ? "arraybuffer" : "text", + responseType: + request.responseType == ResponseType.BINARY ? "arraybuffer" : "text", }; if (urlParams) {