使用 Cypress 进行测试时使用 keycloakjs 处理身份验证

时间:2021-02-07 10:37:36

标签: javascript jwt keycloak cypress

我正在使用 cypress 进行 E2E 测试。 Cypress 不允许在测试期间更改域。

我正在使用 keycloakjs 客户端,并在 keycloak 服务器上处理用户身份验证,因为这在 Cypress 中不起作用,我可以检查 Cypress 是否在我的代码中运行,并使用一些测试用户向 Keycloak 发出手动发布请求凭据并让 keycloak 返回 JWT。

问题是现在 keycloakjs 客户端不知道用户已登录。

有没有办法用 POST 请求返回的令牌来初始化 keycloakjs 客户端?

例如。如果我提出以下发布请求

const url =
        "https://authservice.simoncarr.co.uk/auth/realms/app_testing/protocol/openid-connect/token";
      const client_id = "vue_blog_gui";
      const username = "some_user";
      const password = "password";
      const response = await fetch(url, {
        method: "POST",
        body: `client_id=${client_id}&username=${username}&password=${password}&grant_type=password`,
        headers: {
          "Content-type": "application/x-www-form-urlencoded"
        }
      });
      response.body
        .getReader()
        .read()
        .then(function(data) {
          var string = new TextDecoder("utf-8").decode(data.value);
          console.log(string);
          const tokenJSON = JSON.parse(string);
        });
      

    //****** I know want to do something like ******

      keycloak.init(tokenJSON.access_token)
    }

0 个答案:

没有答案