const oauthBlockBuilder = require("../../../docker/configurator/oauth")
const dedent = require("dedent")

describe("docker: env translator - oauth block", function() {
  it("should omit the block if there are no valid keys", function () {
    const input = {}

    expect(oauthBlockBuilder(input)).toEqual(``)
  })
  it("should omit the block if there are no valid keys", function () {
    const input = {
      NOT_A_VALID_KEY: "asdf1234"
    }

    expect(oauthBlockBuilder(input)).toEqual(``)
  })
  it("should generate a block from empty values", function() {
    const input = {
      OAUTH_CLIENT_ID: ``,
      OAUTH_CLIENT_SECRET: ``,
      OAUTH_REALM: ``,
      OAUTH_APP_NAME: ``,
      OAUTH_SCOPE_SEPARATOR: "",
      OAUTH_ADDITIONAL_PARAMS: ``,
      OAUTH_USE_BASIC_AUTH: false,
      OAUTH_USE_PKCE: false
    }

    expect(oauthBlockBuilder(input)).toEqual(dedent(`
    ui.initOAuth({
      clientId: "",
      clientSecret: "",
      realm: "",
      appName: "",
      scopeSeparator: "",
      additionalQueryStringParams: undefined,
      useBasicAuthenticationWithAccessCodeGrant: false,
      usePkceWithAuthorizationCodeGrant: false,
    })`))
  })

  it("should generate a full block", function() {
    const input = {
      OAUTH_CLIENT_ID: `myId`,
      OAUTH_CLIENT_SECRET: `mySecret`,
      OAUTH_REALM: `myRealm`,
      OAUTH_APP_NAME: `myAppName`,
      OAUTH_SCOPE_SEPARATOR: "%21",
      OAUTH_ADDITIONAL_PARAMS: `{ "a": 1234, "b": "stuff" }`,
      OAUTH_USE_BASIC_AUTH: true,
      OAUTH_USE_PKCE: true
    }

    expect(oauthBlockBuilder(input)).toEqual(dedent(`
    ui.initOAuth({
      clientId: "myId",
      clientSecret: "mySecret",
      realm: "myRealm",
      appName: "myAppName",
      scopeSeparator: "%21",
      additionalQueryStringParams: { "a": 1234, "b": "stuff" },
      useBasicAuthenticationWithAccessCodeGrant: true,
      usePkceWithAuthorizationCodeGrant: true,
    })`))
  })
})
