START_EVENT
2022-09-05
(C) Questetra, Inc. (MIT License)
2
This item starts a process when Gmail has received a new message.
このアイテムは、Gmail が新しいメールを受信すると、プロセスを開始します。
https://support.questetra.com/bpmn-icons/start-event-gmail-message-received/
https://support.questetra.com/ja/bpmn-icons/start-event-gmail-message-received/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADPUlEQVRYR8WXX0hTURzHv2dzy5bb
1HKKRH+gtx7K2izooXI+BVH41F+IglAJmhVICr2kgRG6DFRERXBpGIgkZA/Oeigir+VzIGQE1bTU
yXYdy90Tu+5u997dea9p3PO2nd+fz/md359zCXReRKv/76cPW4ysoYKAnARoCSj2gCCP16dYAMEM
QKYo6OuYhRsqHvnIarGtCjB7wlWELNSCohJAthajACIg6MAKmhxvmJ9r6awJECgrrSSEPgKwTaNj
uViYUnKncHyiI5N+RoC5clcbpaj6R8cSNULQXjDGVCvZUgQIlDn7CSHnN8O5YINSOlA4PnlBbjMN
YDNPnuZMIRISgMSdt2/myeW2KCVV4pxIAvDZbsS0kHCGAgdsdQ0w2HPBPvchMvpCMxexWmGrb4Sx
qBiRl8NgB31i3TBi2CdURwqg3NUCCo8gme8b5g0IK8q8R7C+BuC4NUFMJU7YG70gZnNSLnj3JuL6
yUXgdYwxNfHfPEC8yWSxht/iOi949Q7IMkmcccFFLHquI/ZtRhEip/oWtlacS9tjB/sQ7nwi/j+y
YuG2x5sVDxBwuy4RoE8soQTA71MOodaHWB4ZSh3IakWetwvG3XsVweJXEO5slexR4HKhn/HxALPu
0m6AXtUEkBASrsR80AlbQ7Mk5HIKJQCA9Dj8E9cSAK5PAErWA8AHg2VBLBbV5FQGwJTDzxxaBShz
zScHS8JcxitQdZcuoAhAseAYZ/KFCFC5WhoApQBRnV2AglyGCMDhZ1YtzrpdqgCxwA+w/b2wemoB
YlCMQ+zrF4Sf9sBWd1+yrw6g4QriAPMXz8C4cxdyH3fxDUq8loeeIdTWDPORY7A3tqgDyK5ANQkF
AN6ywQD7Ay/MzqOg0SiW7t1GdPIDv6UZAOIk1FCGEoDE+bYcd+PP1CS4pWDyxNoBRGWopREpASgl
glYASSNSasU7Rt+CmFL9fEMAA70Id7eJeaWtmK8E2TDKqfIg+9TZZOmtTH/m54DaMu0/AHtTqu3S
UAgLN66A+zWXUpUPIx5ANo7VHG1gX3kcxw3q+iARTqTrk0yA0PVR+j8ise5neSoSOn6YCBC6fpqJ
S023j9MN1Lsm1b9qWLIw6P4tOAAAAABJRU5ErkJggg==
{
configs.put('conf_auth', 'Gmail');
configs.put('conf_label', label);
};
/**
* ラベル一覧 を取得する GET リクエストのテスト
* @param {Object} request
* @param request.url
* @param request.method
*/
const assertGetLabelListRequest = ({url, method}) => {
expect(url).toEqual('https://gmail.googleapis.com/gmail/v1/users/me/labels');
expect(method).toEqual('GET');
};
/**
* メール一覧を取得する GET リクエストのテスト
* @param {Object} request
* @param request.url
* @param request.method
* @param labelIds
* @param limit
* @param timestampLowerLimit
*/
const assertGetMessageListRequest = ({url, method}, labelIds, limit, timestampLowerLimit) => {
let expectedUrl = 'https://gmail.googleapis.com/gmail/v1/users/me/messages'
+ `?maxResults=${limit}`;
labelIds.forEach(labelId => {
expectedUrl += `&labelIds=${labelId}`;
});
const q = `newer: ${Math.floor(timestampLowerLimit.addDays(-1).getTime() / 1000)}`;
expectedUrl += `&q=${encodeURIComponent(q)}`;
expectedUrl = expectedUrl.replace(/%20/g, '+'); // HttpRequestWrapper#queryParam() はスペースを + に置き換える;
expect(url).toEqual(expectedUrl);
expect(method).toEqual('GET');
};
/**
* メールを取得する GET リクエストのテスト
* @param {Object} request
* @param request.url
* @param request.method
* @param messageId
*/
const assertGetMessageRequest = ({url, method}, messageId) => {
const expectedUrl = `https://gmail.googleapis.com/gmail/v1/users/me/messages/${messageId}`
+ '?format=metadata';
expect(url).toEqual(expectedUrl);
expect(method).toEqual('GET');
};
/**
* 返り値の message のテスト
* @param message
* @param id
* @param timestamp
* @param rfc822msgId
*/
const assertMessage = (message, id, timestamp, rfc822msgId) => {
expect(message.id).toEqual(id);
expect(message.timestamp).toEqual(timestamp);
expect(message.rfc822msgId).toEqual(rfc822msgId);
};
const DATETIME_FORMAT = 'yyyy-MM-dd\'T\'HH:mm:ssX';
const LABEL_LIST_RES = {
"labels": [
{
"id": "CHAT",
"name": "CHAT",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "SENT",
"name": "SENT",
"type": "system"
},
{
"id": "INBOX",
"name": "INBOX",
"type": "system"
},
{
"id": "IMPORTANT",
"name": "IMPORTANT",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "TRASH",
"name": "TRASH",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "DRAFT",
"name": "DRAFT",
"type": "system"
},
{
"id": "SPAM",
"name": "SPAM",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "CATEGORY_FORUMS",
"name": "CATEGORY_FORUMS",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "CATEGORY_UPDATES",
"name": "CATEGORY_UPDATES",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "CATEGORY_PERSONAL",
"name": "CATEGORY_PERSONAL",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "CATEGORY_PROMOTIONS",
"name": "CATEGORY_PROMOTIONS",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "CATEGORY_SOCIAL",
"name": "CATEGORY_SOCIAL",
"messageListVisibility": "hide",
"labelListVisibility": "labelHide",
"type": "system"
},
{
"id": "STARRED",
"name": "STARRED",
"type": "system"
},
{
"id": "UNREAD",
"name": "UNREAD",
"type": "system"
},
{
"id": "Label_1234567",
"name": "ラベル 1",
"type": "user"
},
{
"id": "Label_2345678",
"name": "ラベル 2",
"type": "user"
},
{
"id": "Label_3456789",
"name": "ラベル 3",
"type": "user"
}
]
};
const MESSAGE_METADATA_1 = {
"id": "abc123",
"payload": {
"headers": [
{
"name": "From",
"value": "from@example.com"
},
{
"name": "To",
"value": "to@example.com"
},
{
"name": "Message-ID",
"value": "rfc822msgId-1234567"
},
{
"name": "Subject",
"value": "メール 1 の件名"
}
]
},
"internalDate": "1661482800000" // 2022-08-26T12:00:00+09:00
};
const MESSAGE_METADATA_2 = {
"id": "def456",
"payload": {
"headers": [
{
"name": "From",
"value": "from@example.com"
},
{
"name": "To",
"value": "to@example.com"
},
{
"name": "Message-ID",
"value": "rfc822msgId-4567890"
},
{
"name": "Subject",
"value": "メール 2 の件名"
}
]
},
"internalDate": "1660100400000" // 2022-08-10T12:00:00+09:00
};
const MESSAGE_METADATA_3 = {
"id": "efg789",
"payload": {
"headers": [
{
"name": "From",
"value": "from@example.com"
},
{
"name": "To",
"value": "to@example.com"
},
{
"name": "Message-ID",
"value": "rfc822msgId-7890123"
},
{
"name": "Subject",
"value": "メール 3 の件名"
}
]
},
"internalDate": "1659322800000" // 2022-08-01T12:00:00+09:00
};
const SAMPLE_MESSAGE_LIST_RES = {
"messages": [
{
"id": "abc123"
},
{
"id": "def456"
},
{
"id": "efg789"
}
]
};
const MESSAGE_DETAILS = [
MESSAGE_METADATA_1,
MESSAGE_METADATA_2,
MESSAGE_METADATA_3
];
/**
* 正常系のテストケース
* ラベルを 1 つだけ指定した場合
*/
test('Success - one label', () => {
const label = 'ラベル 1';
const labelIds = ['Label_1234567'];
prepareConfigs(label);
//