Как проверить последнее письмо с транспортиром для 2FA porpuse - PullRequest
0 голосов
/ 14 февраля 2020

Я должен проверить логин, но для этого мне нужно получить 2-факторный код из электронного письма, и я не знаю, как это сделать.

Я перешел по ссылке на stackoverflow, но не знаю не знаю, как заставить это работать в моем проекте!

Это мой конфигурационный файл:

    const MailListener = require('mail-listener2');

    const mailListener = new MailListener({
        username: 'xxxx@xxxx.com',
        password: 'xxxxx',
        host: 'imap.gmail.com',
        port: 993, // imap port
        tls: true,
        tlsOptions: { rejectUnauthorized: false },
        mailbox: 'INBOX', // mailbox to monitor
        searchFilter: ['UNSEEN', 'FLAGGED'], // the search filter being used after an IDLE notification has been retrieved
        markSeen: true, // all fetched email willbe marked as seen and not fetched next time
        // eslint-disable-next-line max-len
        fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`,
        mailParserOptions: { streamAttachments: true }, // options to be passed to mailParser lib.
        attachments: true, // download attachments as they are encountered to the project directory
        attachmentOptions: { directory: 'attachments/' }, // specify a download directory for attachments
    });
    mailListener.start();

    mailListener.on('server:connected', function() {
        // eslint-disable-next-line no-console
        console.log('Mail listener initialized');
    });
    global.mailListener = mailListener;
},

onComplete: async () => {
    await BrowserUtilities.killBrowser();
},
onCleanUp: async () => {
    await global.mailListener.stop();
},

Тогда это от моего помощника:

    static getLastEmail = async () => {
    const deferred = protractor.promise.defer();
    // eslint-disable-next-line no-console
    console.log('Waiting for an email...');

    await global.mailListener.on('mail', function(mail) {
        deferred.fulfill(mail);
    });
    return deferred.promise;
};

кажется, что код работает, потому что отображаются два файла console.log, но у меня есть такой ответ:

      - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

И это мой тест.

import { browser } from 'protractor';
import { Helpers } from '../../support/helper';

describe('Login test cases', () => {
it('Succesfully logged into', async () =>{
    // eslint-disable-next-line protractor/missing-wait-message
    await browser.wait(Helpers.getLastEmail, 6000);
});

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...