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', '{}');
});
//