File size: 1,997 Bytes
4c34106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
 * This file is part of WPPConnect.
 *
 * WPPConnect is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * WPPConnect is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with WPPConnect.  If not, see <https://www.gnu.org/licenses/>.
 */
import { Suite } from 'mocha';
import * as wppconnect from '../';

export const testUserId = process.env.TEST_USER_ID;
export const testGroupID = process.env.TEST_GROUP_ID;

export function describeAuthenticatedTest(
  title: string,
  fn: (this: Suite, getClient: () => wppconnect.Whatsapp) => void
) {
  describe(title, async function () {
    let client: wppconnect.Whatsapp;

    if (testUserId) {
      this.timeout(60000);
    }

    before(async function () {
      if (!testUserId) {
        console.warn(
          'Please, set environment variable TEST_USER_ID to run authenticated tests'
        );
        return this.skip();
      }
      wppconnect.defaultLogger.level = 'none';
      client = await wppconnect.create({
        session: 'test-authenticated',
        updatesLog: false,
        disableWelcome: true,
        waitForLogin: false,
      });
      const authenticated = await client.waitForLogin().catch(() => false);

      if (!authenticated) {
        console.warn(
          'Please, set create a authenticated session for "test-authenticated".'
        );
        return this.skip();
      }
    });

    after(async function () {
      if (client) {
        await client.close().catch(() => null);
      }
    });

    fn.call(this, () => client);
  });
}