feat(Microsoft Outlook Node): Node overhaul (#4449)
[N8N-4995](https://linear.app/n8n/issue/N8N-4995) --------- Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
This commit is contained in:
@@ -0,0 +1,231 @@
|
||||
import {
|
||||
createMessage,
|
||||
makeRecipient,
|
||||
prepareContactFields,
|
||||
prepareFilterString,
|
||||
simplifyOutputMessages,
|
||||
} from '../../../v2/helpers/utils';
|
||||
|
||||
describe('Test MicrosoftOutlookV2, makeRecipient', () => {
|
||||
it('should create recipient object', () => {
|
||||
const replyTo = 'test1@mail.com, test2@mail.com';
|
||||
const result = replyTo.split(',').map((recipient: string) => {
|
||||
return makeRecipient(recipient.trim());
|
||||
});
|
||||
|
||||
expect(result).toEqual([
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'test1@mail.com',
|
||||
},
|
||||
},
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'test2@mail.com',
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Test MicrosoftOutlookV2, prepareContactFields', () => {
|
||||
it('should create contact object', () => {
|
||||
const fields = {
|
||||
assistantName: 'Assistant',
|
||||
birthday: '2023-07-31T21:00:00.000Z',
|
||||
businessAddress: {
|
||||
values: {
|
||||
city: 'City',
|
||||
countryOrRegion: 'Country',
|
||||
postalCode: '777777',
|
||||
state: 'State',
|
||||
street: 'Street',
|
||||
},
|
||||
},
|
||||
businessHomePage: 'page.com',
|
||||
categories: 'cat1,cat2',
|
||||
companyName: 'Company',
|
||||
};
|
||||
const result = {
|
||||
assistantName: 'Assistant',
|
||||
birthday: '2023-07-31T21:00:00.000Z',
|
||||
businessAddress: {
|
||||
city: 'City',
|
||||
countryOrRegion: 'Country',
|
||||
postalCode: '777777',
|
||||
state: 'State',
|
||||
street: 'Street',
|
||||
},
|
||||
businessHomePage: 'page.com',
|
||||
categories: ['cat1', 'cat2'],
|
||||
companyName: 'Company',
|
||||
};
|
||||
|
||||
const data = prepareContactFields(fields);
|
||||
|
||||
expect(data).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Test MicrosoftOutlookV2, prepareFilterString', () => {
|
||||
it('should create filter string', () => {
|
||||
const filters = {
|
||||
filterBy: 'filters',
|
||||
filters: {
|
||||
custom: 'isRead eq false',
|
||||
hasAttachments: true,
|
||||
foldersToExclude: ['AAAxBBB...='],
|
||||
foldersToInclude: ['DDDxCCC...='],
|
||||
readStatus: 'unread',
|
||||
receivedAfter: '2023-07-31T21:00:00.000Z',
|
||||
receivedBefore: '2023-08-14T21:00:00.000Z',
|
||||
sender: 'test@mail.com',
|
||||
},
|
||||
};
|
||||
const result =
|
||||
"parentFolderId eq 'DDDxCCC...=' and parentFolderId ne 'AAAxBBB...=' and (from/emailAddress/address eq 'test@mail.com' or from/emailAddress/name eq 'test@mail.com') and hasAttachments eq true and isRead eq false and receivedDateTime ge 2023-07-31T21:00:00.000Z and receivedDateTime le 2023-08-14T21:00:00.000Z and isRead eq false";
|
||||
|
||||
const data = prepareFilterString(filters);
|
||||
|
||||
expect(data).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Test MicrosoftOutlookV2, simplifyOutputMessages', () => {
|
||||
it('should create recipient object', () => {
|
||||
const responseData = {
|
||||
'@odata.context':
|
||||
"https://graph.microsoft.com/v1.0/$metadata#users('')/messages(id,conversationId,subject,bodyPreview,from,toRecipients,categories,hasAttachments)/$entity",
|
||||
'@odata.etag': 'W/"CQAAABYAAABZf4De/LkrSqpPI8eyjUmAAAFSpKec"',
|
||||
id: 'AAAxBBBxCCC...=',
|
||||
categories: [],
|
||||
hasAttachments: false,
|
||||
subject: 'My draft',
|
||||
bodyPreview:
|
||||
'test\r\n________________________________\r\nFrom: Me\r\nSent: Tuesday, August 29, 2023 7:33:28 AM\r\nTo: from@mail.com <from@mail.com>\r\nSubject: My draft\r\n\r\nthis is a draft',
|
||||
conversationId: 'AAAQQQMMM..=',
|
||||
from: {
|
||||
emailAddress: {
|
||||
name: 'Me',
|
||||
address: 'test@mail.com',
|
||||
},
|
||||
},
|
||||
toRecipients: [
|
||||
{
|
||||
emailAddress: {
|
||||
name: 'Me',
|
||||
address: 'test@mail.com',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
const result = [
|
||||
{
|
||||
id: 'AAAxBBBxCCC...=',
|
||||
conversationId: 'AAAQQQMMM..=',
|
||||
subject: 'My draft',
|
||||
bodyPreview:
|
||||
'test\r\n________________________________\r\nFrom: Me\r\nSent: Tuesday, August 29, 2023 7:33:28 AM\r\nTo: from@mail.com <from@mail.com>\r\nSubject: My draft\r\n\r\nthis is a draft',
|
||||
from: 'test@mail.com',
|
||||
to: ['test@mail.com'],
|
||||
categories: [],
|
||||
hasAttachments: false,
|
||||
},
|
||||
];
|
||||
|
||||
const data = simplifyOutputMessages([responseData]);
|
||||
|
||||
expect(data).toEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Test MicrosoftOutlookV2, createMessage', () => {
|
||||
it('should create message object', () => {
|
||||
const fields = {
|
||||
bodyContent: 'Test message',
|
||||
bodyContentType: 'Text',
|
||||
bccRecipients: 'test1@mail.com, test2@mail.com',
|
||||
categories: ['cat1', 'cat2', 'cat3'],
|
||||
ccRecipients: 'test3@mail.com',
|
||||
internetMessageHeaders: [
|
||||
{
|
||||
name: 'customHeader',
|
||||
value: 'customValue',
|
||||
},
|
||||
{
|
||||
name: 'customHeader2',
|
||||
value: 'customValue2',
|
||||
},
|
||||
],
|
||||
from: 'me@mail.com',
|
||||
importance: 'Normal',
|
||||
isReadReceiptRequested: true,
|
||||
replyTo: 'test4@mail.com',
|
||||
subject: 'Test Subject',
|
||||
toRecipients: 'to@mail.com',
|
||||
};
|
||||
|
||||
const result = {
|
||||
body: {
|
||||
content: 'Test message',
|
||||
contentType: 'Text',
|
||||
},
|
||||
bccRecipients: [
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'test1@mail.com',
|
||||
},
|
||||
},
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'test2@mail.com',
|
||||
},
|
||||
},
|
||||
],
|
||||
categories: ['cat1', 'cat2', 'cat3'],
|
||||
ccRecipients: [
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'test3@mail.com',
|
||||
},
|
||||
},
|
||||
],
|
||||
internetMessageHeaders: [
|
||||
{
|
||||
name: 'customHeader',
|
||||
value: 'customValue',
|
||||
},
|
||||
{
|
||||
name: 'customHeader2',
|
||||
value: 'customValue2',
|
||||
},
|
||||
],
|
||||
from: {
|
||||
emailAddress: {
|
||||
address: 'me@mail.com',
|
||||
},
|
||||
},
|
||||
importance: 'Normal',
|
||||
isReadReceiptRequested: true,
|
||||
replyTo: [
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'test4@mail.com',
|
||||
},
|
||||
},
|
||||
],
|
||||
subject: 'Test Subject',
|
||||
toRecipients: [
|
||||
{
|
||||
emailAddress: {
|
||||
address: 'to@mail.com',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const message = createMessage(fields);
|
||||
|
||||
expect(message).toEqual(result);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user