- const expect = require("expect")
- const translator = require("../../docker/configurator/translator")
- const dedent = require("dedent")
-
- describe("docker: env translator", function() {
- describe("fundamentals", function() {
- it("should generate an empty baseline config", function () {
- const input = {}
-
- expect(translator(input)).toEqual(``)
- })
-
- it("should call an onFound callback", function () {
- const input = {
- MY_THING: "hey"
- }
-
- const onFoundSpy = expect.createSpy()
-
- const schema = {
- MY_THING: {
- type: "string",
- name: "myThing",
- onFound: onFoundSpy
- }
- }
-
- const res = translator(input, {
- schema
- })
- expect(res).toEqual(`myThing: "hey",`)
- expect(onFoundSpy.calls.length).toEqual(1)
-
- })
-
- it("should use a regular value over a legacy one, regardless of order", function () {
- const schema = {
- MY_THING: {
- type: "string",
- name: "myThing"
- },
- MY_OTHER_THING: {
- type: "string",
- name: "myThing",
- legacy: true
- }
- }
-
- // Regular value provided first
- expect(translator({
- MY_THING: "hey",
- MY_OTHER_THING: "hello"
- }, {
- schema
- })).toEqual(`myThing: "hey",`)
-
- // Legacy value provided first
- expect(translator({
- MY_OTHER_THING: "hello",
- MY_THING: "hey"
- }, {
- schema
- })).toEqual(`myThing: "hey",`)
- })
-
- it("should use a legacy value over a base one, regardless of order", function () {
- const schema = {
- MY_THING: {
- type: "string",
- name: "myThing",
- legacy: true
- }
- }
-
- const baseConfig = {
- myThing: {
- value: "base",
- schema: {
- type: "string",
- base: true
- }
- }
- }
-
- // Regular value provided first
- expect(translator({
- MY_THING: "legacy"
- }, {
- injectBaseConfig: true,
- schema,
- baseConfig
- })).toEqual(`myThing: "legacy",`)
- })
- })
- describe("Swagger UI configuration", function() {
- it("should generate a base config including the base content", function () {
- const input = {}
-
- expect(translator(input, {
- injectBaseConfig: true
- })).toEqual(dedent(`
- url: "https://petstore.swagger.io/v2/swagger.json",
- "dom_id": "#swagger-ui",
- deepLinking: true,
- presets: [
- SwaggerUIBundle.presets.apis,
- SwaggerUIStandalonePreset
- ],
- plugins: [
- SwaggerUIBundle.plugins.DownloadUrl
- ],
- layout: "StandaloneLayout",
- `))
- })
-
- it("should ignore an unknown config", function () {
- const input = {
- ASDF1234: "wow hello"
- }
-
- expect(translator(input)).toEqual(dedent(``))
- })
-
- it("should generate a string config", function () {
- const input = {
- URL: "http://petstore.swagger.io/v2/swagger.json",
- FILTER: ""
- }
-
- expect(translator(input)).toEqual(dedent(`
- url: "http://petstore.swagger.io/v2/swagger.json",
- filter: "",`
- ).trim())
- })
-
- it("should generate a boolean config", function () {
- const input = {
- DEEP_LINKING: "true",
- SHOW_EXTENSIONS: "false",
- SHOW_COMMON_EXTENSIONS: ""
- }
-
- expect(translator(input)).toEqual(dedent(`
- deepLinking: true,
- showExtensions: false,
- showCommonExtensions: undefined,`
- ))
- })
-
- it("should generate an object config", function () {
- const input = {
- SPEC: `{ swagger: "2.0" }`
- }
-
- expect(translator(input)).toEqual(dedent(`
- spec: { swagger: "2.0" },`
- ).trim())
- })
-
- it("should generate an array config", function () {
- const input = {
- URLS: `["/one", "/two"]`,
- SUPPORTED_SUBMIT_METHODS: ""
- }
-
- expect(translator(input)).toEqual(dedent(`
- urls: ["/one", "/two"],
- supportedSubmitMethods: undefined,`
- ).trim())
- })
-
- it("should properly escape key names when necessary", function () {
- const input = {
- URLS: `["/one", "/two"]`,
- URLS_PRIMARY_NAME: "one",
- }
-
- expect(translator(input)).toEqual(dedent(`
- urls: ["/one", "/two"],
- "urls.primaryName": "one",`
- ).trim())
- })
-
- it("should disregard a legacy variable in favor of a regular one", function () {
- const input = {
- // Order is important to this test... legacy vars should be
- // superseded regardless of what is fed in first.
- API_URL: "/old.json",
- URL: "/swagger.json",
- URLS: `["/one", "/two"]`,
- API_URLS: `["/three", "/four"]`,
- }
-
- expect(translator(input)).toEqual(dedent(`
- url: "/swagger.json",
- urls: ["/one", "/two"],`
- ).trim())
- })
-
-
- it("should pick up legacy variables when using base config", function () {
- const input = {
- API_URL: "/swagger.json",
- API_URLS: `["/one", "/two"]`,
- }
-
- expect(translator(input, { injectBaseConfig: true })).toEqual(dedent(`
- "dom_id": "#swagger-ui",
- deepLinking: true,
- presets: [
- SwaggerUIBundle.presets.apis,
- SwaggerUIStandalonePreset
- ],
- plugins: [
- SwaggerUIBundle.plugins.DownloadUrl
- ],
- layout: "StandaloneLayout",
- url: "/swagger.json",
- urls: ["/one", "/two"],`
-
- ).trim())
- })
-
- it("should generate a full config k:v string", function () {
- const input = {
- API_URL: "/old.yaml",
- API_URLS: `["/old", "/older"]`,
- CONFIG_URL: "/wow",
- DOM_ID: "#swagger_ui",
- SPEC: `{ swagger: "2.0" }`,
- URL: "/swagger.json",
- URLS: `["/one", "/two"]`,
- URLS_PRIMARY_NAME: "one",
- LAYOUT: "BaseLayout",
- DEEP_LINKING: "false",
- DISPLAY_OPERATION_ID: "true",
- DEFAULT_MODELS_EXPAND_DEPTH: "0",
- DEFAULT_MODEL_EXPAND_DEPTH: "1",
- DEFAULT_MODEL_RENDERING: "example",
- DISPLAY_REQUEST_DURATION: "true",
- DOC_EXPANSION: "full",
- FILTER: "wowee",
- MAX_DISPLAYED_TAGS: "4",
- SHOW_EXTENSIONS: "true",
- SHOW_COMMON_EXTENSIONS: "false",
- OAUTH2_REDIRECT_URL: "http://google.com/",
- SHOW_MUTATED_REQUEST: "true",
- SUPPORTED_SUBMIT_METHODS: `["get", "post"]`,
- VALIDATOR_URL: "http://smartbear.com/"
- }
-
- expect(translator(input)).toEqual(dedent(`
- configUrl: "/wow",
- "dom_id": "#swagger_ui",
- spec: { swagger: "2.0" },
- url: "/swagger.json",
- urls: ["/one", "/two"],
- "urls.primaryName": "one",
- layout: "BaseLayout",
- deepLinking: false,
- displayOperationId: true,
- defaultModelsExpandDepth: 0,
- defaultModelExpandDepth: 1,
- defaultModelRendering: "example",
- displayRequestDuration: true,
- docExpansion: "full",
- filter: "wowee",
- maxDisplayedTags: 4,
- showExtensions: true,
- showCommonExtensions: false,
- oauth2RedirectUrl: "http://google.com/",
- showMutatedRequest: true,
- supportedSubmitMethods: ["get", "post"],
- validatorUrl: "http://smartbear.com/",`
- ).trim())
- })
-
- it("should generate a full config k:v string including base config", function () {
- const input = {
- API_URL: "/old.yaml",
- API_URLS: `["/old", "/older"]`,
- CONFIG_URL: "/wow",
- DOM_ID: "#swagger_ui",
- SPEC: `{ swagger: "2.0" }`,
- URL: "/swagger.json",
- URLS: `["/one", "/two"]`,
- URLS_PRIMARY_NAME: "one",
- LAYOUT: "BaseLayout",
- DEEP_LINKING: "false",
- DISPLAY_OPERATION_ID: "true",
- DEFAULT_MODELS_EXPAND_DEPTH: "0",
- DEFAULT_MODEL_EXPAND_DEPTH: "1",
- DEFAULT_MODEL_RENDERING: "example",
- DISPLAY_REQUEST_DURATION: "true",
- DOC_EXPANSION: "full",
- FILTER: "wowee",
- MAX_DISPLAYED_TAGS: "4",
- SHOW_EXTENSIONS: "true",
- SHOW_COMMON_EXTENSIONS: "false",
- OAUTH2_REDIRECT_URL: "http://google.com/",
- SHOW_MUTATED_REQUEST: "true",
- SUPPORTED_SUBMIT_METHODS: `["get", "post"]`,
- VALIDATOR_URL: "http://smartbear.com/"
- }
-
- expect(translator(input, { injectBaseConfig: true })).toEqual(dedent(`
- presets: [
- SwaggerUIBundle.presets.apis,
- SwaggerUIStandalonePreset
- ],
- plugins: [
- SwaggerUIBundle.plugins.DownloadUrl
- ],
- configUrl: "/wow",
- "dom_id": "#swagger_ui",
- spec: { swagger: "2.0" },
- url: "/swagger.json",
- urls: ["/one", "/two"],
- "urls.primaryName": "one",
- layout: "BaseLayout",
- deepLinking: false,
- displayOperationId: true,
- defaultModelsExpandDepth: 0,
- defaultModelExpandDepth: 1,
- defaultModelRendering: "example",
- displayRequestDuration: true,
- docExpansion: "full",
- filter: "wowee",
- maxDisplayedTags: 4,
- showExtensions: true,
- showCommonExtensions: false,
- oauth2RedirectUrl: "http://google.com/",
- showMutatedRequest: true,
- supportedSubmitMethods: ["get", "post"],
- validatorUrl: "http://smartbear.com/",`
- ).trim())
- })
- })
- })
|