2023-10-03 (C) Questetra, Inc. (MIT License) 3 This item gets a user ID on Slack. この工程は、Slack のユーザ ID を取得します。 https://support.questetra.com/bpmn-icons/service-task-slack-userid-get/ https://support.questetra.com/ja/bpmn-icons/service-task-slack-userid-get/ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABFBJREFUWEfN l39ME2cYx79vofwSEljXirCwLWOSYJRotjgnJDPZWNKjg4BYpDgnCCuYKCxmxLUu7pcJZupitmqY XTfFLRnaqeXqYibbXExIdNQ/tj+WLMvCEjPoGGABxULf5b3Sy7W9a0+zhd0f/aP3Ps/zeZ/fR7DE D1Fr31RgygrNh2pBsYmCrAXoYwDyFuUnAPI7AfWB4FtNqsbtueWZVaM7KYBRb8wnIN0UsALIUKMU wF0CnKCgPV6/989EMgkBjIYqKyh9H8AylYZjj82AkL3esYETSvKKANzDnIMStD+g4SgxQnGc/4vv kNMlC2A0cJ+DYuu/YVzUQfCFd4xvjNUZB6Dm5kUlRRj5ZUTUlZOXA41Gg6nxqYTMcp6IAliM+XEl LcyQa9iFzGUZmJ6cxrbVL6PhNTO2dG4BIQS8i4ejW1E8rJaQdmlOiAAs2wHya6KEaznQjNqOWpHv 1MFTgvGMrHBxzAfnUV1YkyxyMwAtjlSHCMDpuaMU6EwkXVZRhoPn3hOPeD+7hBctlUhJTRH/4wxV yQBAgA94P98lOIT9sCazEAyNq6lzBtHR0460jDSc+9CNtndb7xuA9YkUrUbHmpUAwBm4JkpxOha9 4PEVaHmrBfmP5ke9unc3CM9JDwb7B3Hx1oU4gFXrS9HU3YShr4dwofeirEcIwTZ+jO8LA+g5JwWa Y0/2/XQaeYZIt43Xs+eFThy5dDgKwLyyAWd+7kOqNlUQ6GnrwdXzP8QJE+AT3s+3CABGfdUwQNfG nhoY9QjZrfSwJDR3mZGemS4cCd4Lwv2RW/gv8jAvHd51REYF8Xn9A+sWAbi/JYNFPGz71IZnjRtk 7c/dmYOl1ILttu0w7TQJZxyvO6B/RI/63fViVbRteBWjI6NyOia8fv6hCABVumVxWTHWbFyNhfkF TI3fDt90LohrA9dEEZYrLFSjf4xBl6/DqmdKMTt9B5fPXEZoIaToQa+fD/vXqOdkAXbsfwV1u+pA NERwr/nJBnw81AvdCp1wq53rW4XbN7+5Q4y51NqkfxLW8nYEJgKyEFIA2RBIM1wuvr32XjTubUR2 brbiLRN0R2kI5JPw7G/9yMzOFJT7vvdh5vYsyk0bRWOsEZWVr0HhE4WKAM4DTrgdXyVOQqUyfPr5 p9D6TisCkwHYN9vReawrDsD1tgs21xsoWVcSZYTlzPB3PhyyHgINxUc4qgyVGlEs9j7nvjiAXH0u snKy8OOVGwo3lXdOVCNS24rlAKSz4ObVm7BttiuGQ/IiuhWzF2qG0Z6ju1FpqRT19B/rR421Bto0 rfAfc/tLBdVJAeKGUbgUk4/j5UXL4bx+UuiOLK6NpRZhMFVUV4iJaq/fnwxAfhwLEOElNOFGwUpu U91zuPLlIGYD4c2bTci0dC2uf3MjmXHlhSQiqWYlS25FIfFkltP/31L6X3jivtfyCMSSfpiIEEv5 aSZNpSX7OH3QjFcr9w829dcwn81r2gAAAABJRU5ErkJggg== { if (oauth2){ const auth_OAuth2 = httpClient.createAuthSettingOAuth2( 'Slack', 'https://slack.com/oauth/v2/authorize', 'https://slack.com/api/oauth.v2.access', 'chat:write,users:read,users:read.email', 'consumer_key', 'consumer_secret', 'access_token' ); configs.putObject('conf_OAuth2', auth_OAuth2); } else { configs.put('conf_OAuth2', ''); } if (token){ const auth_Token = httpClient.createAuthSettingToken( 'Slack Bot Token', 'slack-bot-token' ); configs.putObject('conf_Token', auth_Token); } else { configs.put('conf_Token', ''); } // 文字型データ項目を準備して、config に指定 const userDef = engine.createDataDefinition('ユーザ', 2, 'q_user', 'STRING_TEXTFIELD'); configs.putObject('conf_Quser', userDef); engine.setData(userDef, user); // 文字型データ項目を準備して、config に指定 const idDef = engine.createDataDefinition('ユーザID', 3, 'q_ids', 'STRING_TEXTFIELD'); configs.putObject('conf_SlackUserId', idDef); // 文字型データ項目の値(ユーザ ID を保存するデータ項目)を指定 engine.setData(idDef, '事前文字列'); return idDef; }; /** * POSTリクエストのテスト(Slack ID 取得) * @param {Object} request * @param request.url * @param request.method * @param email */ const assertGetRequest = ({ url, method }, email) => { let newEmail = email.replace("@", "%40"); expect(url).toEqual(`https://slack.com/api/users.lookupByEmail?email=${newEmail}`); expect(method).toEqual('GET'); }; /** * 認証設定が両方されていない場合 */ test('No Authorization Setting', () => { prepareConfigs(configs, null, false, false); expect(execute).toThrow('No Authorization Setting.'); }); /** * ユーザ ID 取得失敗の場合 * ユーザは文字型データ項目を選択していて空 */ test('No Questetra User or Email address.- User is a string data item', () => { prepareConfigs(configs, null, true, false); expect(execute).toThrow('No Questetra User or Email address.'); }); /** * ユーザ ID 取得失敗の場合 * ユーザはユーザ型データ項目で空 */ test('No Questetra User or Email address.- User is a user-type data items', () => { prepareConfigs(configs, null, false, true); // ユーザ型データ項目を準備して、config に指定 const userDef = engine.createDataDefinition('ユーザ', 5, 'q_user', 'QUSER'); //conf_Quser の設定値を上書き configs.putObject('conf_Quser', userDef); engine.setData(userDef, null); expect(execute).toThrow('No Questetra User or Email address.'); }); /** * GET リクエストのレスポンスを準備(Slack ID 取得) * @param channel * @param text * @return responseObj */ const prepareGetIdResponse = (id) => { return { "ok": true, "user": { "id": `${id}` } }; }; /** * GET API リクエストでエラーになる場合(Slack ID 取得) */ test('GET Failed', () => { prepareConfigs(configs, 'SouthPole@questetra.com', true , true); httpClient.setRequestHandler((request) => { assertGetRequest(request, 'SouthPole@questetra.com'); return httpClient.createHttpResponse(400, 'application/json', '{}'); }); //