TestCafe脚本,如何调用restApi(使用密钥斗篷)

时间:2019-08-15 14:04:34

标签: rest api testing keycloak testcafe

我是testCafe的新手,我需要一个脚本来测试在我的公司中正确创建了新项目(我们正在使用密钥斗篷)。但是创建项目的唯一方法是通过restApi。

我有一个testCafe脚本。我可以去我的公司网站。 在初始登录密钥库页面中,我可以输入user,pass并按Submit,一切正常。我很好,在公司网站内。

但是在这里我不知道:

1)一旦我已经登录了kaycloak页面,如何获取keycloak令牌。在Chrome浏览器中,我可以阅读它

console.log(window._keycloak.token)

2)如何创建post-RestApi-Request(使用令牌)。在我们的companyWebSite中创建一个新项目。 (我想使用RequestLogger,但老实说我不知道​​)

这是保存KeycloakInstance myAuth.jsx的前端代码:

import Keycloak from './keycloak';
import keycloakJson from './keycloak.json';
import { addAuthToken } from '../services/base-service';
import GraylogLogger from '../business/utils/graylog-logger';
import AppConf from "../config/app-config-service";

const auth = () => {
  keycloakJson["url"] = AppConf.getKeycloakAuthUrl();
  const KeycloakInstance = Keycloak || window.Keycloak;
  window._keycloak = KeycloakInstance(keycloakJson);

这是我的testCafe脚本:

import mySelectorsPage from '../mySelectorsPage';
import {RequestLogger, Selector, Keycloak} from 'testcafe';

const mySelectors = new mySelectorsPage();
const myRestApiUrl= 'https://int_environment.myCompany.com/items/api/item/';
const logger = RequestLogger(
    {
      url: myRestApiUrl,
      method: 'post',
      client_id: 'mydemo_clientid',
      username: 'mydemo_username',
      password:'mydemo_password'
      body:' ...json body for the post request to create new item..'
    },
    {
      logRequestBody: true,
      logRequestHeaders: true
    }
);

fixture`fixture jint1`
.page('https://jint1.hemmersbach.com/')
.requestHooks(logger)
.beforeEach(async t => {
  console.log('I am inside beforeEach');
  await t
  //LOGIN KEYCLOAK:
  .typeText(mySelectors.keycloakInputUsername, 'GTheCat')
  .typeText(mySelectors.keycloakInputPassword, 'Autotest987')
  .click(mySelectors.keycloakRememberMe)
  .click(mySelectors.keycloakButtonSubmit)
  .wait(10)
});

test('create new item', async t => {
  console.log('I am inside test');
  //let myKeycloak = window._keycloak.token;
  //console.log(window._keycloak.token);

  await t
  .setTestSpeed(0.9)
  //.debug()
  //.expect(logger.exits).ok()
  //.expect(logger.requests[0].request.body).ok();
});

很抱歉,如果代码make的任何部分为假或没有意义。我真的很感谢任何建议。

谢谢。

致谢

1 个答案:

答案 0 :(得分:2)

1)由于TestCafe在node.js服务器端执行测试代码,因此窗口上下文不可用。在这种情况下,请使用允许在浏览器的客户端执行脚本的ClientFunction。 2)请求记录器旨在处理页面的HTTP请求。如果您需要从测试中发送请求,请查看此答案中描述的方法:Does testcafe support testing of rest api。否则,您可以使用ClientFunction和Fetch API从客户端发送请求。

相关问题