/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 fileencoding=utf-8 : */ /* * Copyright 2013, 2014, 2018, 2025 James Burlingame * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import { test, describe, beforeEach } from "node:test"; import assert from "node:assert/strict"; import * as path from "node:path"; import { getRootPathname, setRootDirectory, ScanFile } from "../lib/scanfile.ts"; import { CPanelAccess } from "../lib/panels/50-cpanel.ts"; import { getDataDirectory } from "../test/testData.ts"; interface ExpectedRow { filename: string; domain: string; found?: boolean; } let c: CPanelAccess; describe('cPanelAccess', () => { beforeEach(() => { const pathname = path.join(getDataDirectory(), 'cpanel'); setRootDirectory(pathname); c = new CPanelAccess(); }); test('interface id', () => { assert.equal(c.id, 'cPanel'); }); test('hasAccounts is truthy', () => { assert.ok(c.hasAccounts); }); test('hasArchives is truthy', () => { assert.ok(c.hasArchives); }); test('hasDomains is truthy', () => { assert.ok(c.hasDomains); }); test('hasPanelLog is truthy', () => { assert.ok(c.hasPanelLog); }); test('hasMainLog is truthy', () => { assert.ok(c.hasMainLog); }); test('isActive is truthy', () => { assert.ok(c.isActive()); }); test('isActive is false when missing /usr/local/cpanel/version file', async () => { setRootDirectory(getDataDirectory()); const active = await c.isActive(); assert.equal(active, false); }); function checkPromise(actual: Array, expected: Array): void { assert.ok(Array.isArray(actual)); for (let n=0; n < expected.length; n++) { expected[n]!.found = false; } for (const row of actual) { assert.ok(row instanceof ScanFile); for (let n=0; n < expected.length; n++) { if (expected[n]!.filename === row.filename) { expected[n]!.found = true; assert.equal(row.domain, expected[n]!.domain); } } } for (let n=0; n < expected.length; n++) { if (!expected[n]!.found) { console.log(`checkPromise: missing filename ${expected[n]!.filename}, domain ${expected[n]!.domain}`); } assert.ok(expected[n]!.found); } } test('findDomainLogFiles, primary domain, with SSL', async () => { const actual = await c.findDomainLogFiles('druiddesigns.com'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/druiddesigns.com', domain: 'druiddesigns.com' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com-ssl_log', domain: 'druiddesigns.com' } ]; checkPromise(actual, expected); }); test('findDomainLogFiles, addon domain', async () => { const actual = await c.findDomainLogFiles('alscan.org'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/alscan-org.druiddesigns.com', domain: 'alscan.org' } ]; checkPromise(actual, expected); }); test('findDomainLogFiles, subdomain', async () => { const actual = await c.findDomainLogFiles('pub.samplx.org'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/pub.samplx.org', domain: 'pub.samplx.org' } ]; checkPromise(actual, expected); }); test('findDomainLogFiles, nonexistent domain', async () => { const actual = await c.findDomainLogFiles('nonesuch.info'); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findPanelLogFiles', async () => { const actual = await c.findPanelLogFiles(); const expected: Array = [ { filename: '/usr/local/cpanel/logs/access_log', domain: 'panel' } ]; checkPromise(actual, expected); }); test('findMainLogFiles', async () => { const actual = await c.findMainLogFiles(); const expected: Array = [ { filename: '/usr/local/apache/logs/access_log', domain: 'main' } ]; checkPromise(actual, expected); }); test('findAccountLogFiles("samplx")', async () => { const actual = await c.findAccountLogFiles('samplx'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/samplx.org', domain: 'samplx.org' }, { filename: '/usr/local/apache/domlogs/pub.samplx.org', domain: 'pub.samplx.org' } ]; checkPromise(actual, expected); }); test('findAccountLogFiles("druid")', async () => { const actual = await c.findAccountLogFiles('druid'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/alscan-org.druiddesigns.com', domain: 'alscan.org' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com', domain: 'druiddesigns.com' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com-ssl_log', domain: 'druiddesigns.com' }, { filename: '/usr/local/apache/domlogs/ddinfo.druiddesigns.com', domain: 'druiddesigns.info' }, { filename: '/usr/local/apache/domlogs/ddnet.druiddesigns.com', domain: 'druiddesigns.net' }, { filename: '/usr/local/apache/domlogs/ddorg.druiddesigns.com', domain: 'druiddesigns.org' }, { filename: '/usr/local/apache/domlogs/isinfo.druiddesigns.com', domain: 'issnap.info' }, { filename: '/usr/local/apache/domlogs/isorg.druiddesigns.com', domain: 'issnap.org' }, { filename: '/usr/local/apache/domlogs/z80cim.druiddesigns.com', domain: 'z80cim.org' }, { filename: '/usr/local/apache/domlogs/redmine.druiddesigns.com', domain: 'redmine.samplx.org' } ]; checkPromise(actual, expected); }); test('findAccountLogFiles("alscan")', async () => { const actual = await c.findAccountLogFiles('alscan'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/alscan.info', domain: 'alscan.info' }, { filename: '/usr/local/apache/domlogs/dst.alscan.info', domain: 'dst.alscan.info' }, { filename: '/usr/local/apache/domlogs/addon.alscan.info', domain: 'addon.us' }, { filename: '/usr/local/apache/domlogs/bandwidth.alscan.info', domain: 'bandwidth.net' }, { filename: '/usr/local/apache/domlogs/days.alscan.info', domain: 'days.info' }, { filename: '/usr/local/apache/domlogs/minutes.alscan.info', domain: 'minutes.info' }, { filename: '/usr/local/apache/domlogs/seconds.alscan.info', domain: 'seconds.info' } ]; checkPromise(actual, expected); }); test('findAccountLogFiles("nonesuch")', async () => { const actual = await c.findAccountLogFiles('nonesuch'); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findAllLogFiles()', async () => { const actual = await c.findAllLogFiles(); const expected: Array = [ { filename: '/usr/local/apache/domlogs/samplx.org', domain: 'samplx.org' }, { filename: '/usr/local/apache/domlogs/pub.samplx.org', domain: 'pub.samplx.org' }, { filename: '/usr/local/apache/domlogs/alscan-org.druiddesigns.com', domain: 'alscan.org' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com', domain: 'druiddesigns.com' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com-ssl_log', domain: 'druiddesigns.com' }, { filename: '/usr/local/apache/domlogs/ddinfo.druiddesigns.com', domain: 'druiddesigns.info' }, { filename: '/usr/local/apache/domlogs/ddnet.druiddesigns.com', domain: 'druiddesigns.net' }, { filename: '/usr/local/apache/domlogs/ddorg.druiddesigns.com', domain: 'druiddesigns.org' }, { filename: '/usr/local/apache/domlogs/isinfo.druiddesigns.com', domain: 'issnap.info' }, { filename: '/usr/local/apache/domlogs/isorg.druiddesigns.com', domain: 'issnap.org' }, { filename: '/usr/local/apache/domlogs/z80cim.druiddesigns.com', domain: 'z80cim.org' }, { filename: '/usr/local/apache/domlogs/redmine.druiddesigns.com', domain: 'redmine.samplx.org' }, { filename: '/usr/local/apache/domlogs/alscan.info', domain: 'alscan.info' }, { filename: '/usr/local/apache/domlogs/dst.alscan.info', domain: 'dst.alscan.info' }, { filename: '/usr/local/apache/domlogs/addon.alscan.info', domain: 'addon.us' }, { filename: '/usr/local/apache/domlogs/bandwidth.alscan.info', domain: 'bandwidth.net' }, { filename: '/usr/local/apache/domlogs/days.alscan.info', domain: 'days.info' }, { filename: '/usr/local/apache/domlogs/minutes.alscan.info', domain: 'minutes.info' }, { filename: '/usr/local/apache/domlogs/seconds.alscan.info', domain: 'seconds.info' } ]; checkPromise(actual, expected); }); test('findPanelArchiveFiles()', async () => { const start = new Date(2001, 0, 1); const stop = new Date(); const actual = await c.findPanelArchiveFiles(start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findMainArchiveFiles()', async () => { const start = new Date(2001, 0, 1); const stop = new Date(); const actual = await c.findMainArchiveFiles(start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findDomainArchiveFiles("druiddesigns.com", "2013/08/12", "2013/09/21")', async () => { var start = new Date(2013, 8, 12, 0, 0, 0, 0); var stop = new Date(2013, 9, 21, 23, 59, 59, 0); var actual = await c.findDomainArchiveFiles('druiddesigns.com', start, stop); const expected: Array = [ { filename: '/home1/druid/logs/druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/druiddesigns.com-Oct-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Sep-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Oct-2013.gz', domain: 'druiddesigns.com' } ]; checkPromise(actual, expected); }); test('findDomainArchiveFiles("alscan.info")', async () => { const start = new Date(2001, 0, 1); const stop = new Date(); const actual = await c.findDomainArchiveFiles('alscan.info', start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findDomainArchiveFiles("samplx.org")', async () => { const start = new Date(2001, 0, 1); const stop = new Date(); const actual = await c.findDomainArchiveFiles('samplx.org', start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findDomainArchiveFiles("druiddesigns.com", "2001/01/01", "2001/12/31")', async () => { const start = new Date(2001, 0, 1); const stop = new Date(2001, 11, 31); const actual = await c.findDomainArchiveFiles('druiddesigns.com', start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findAccountArchiveFiles("druid", "2013/09/12", "2013/09/21")', async () => { const start = new Date(2013, 8, 12, 0, 0, 0, 0); const stop = new Date(2013, 8, 21, 23, 59, 59, 0); const actual = await c.findAccountArchiveFiles('druid', start, stop); const expected: Array = [ { filename: '/home1/druid/logs/alscan-org.druiddesigns.com-Sep-2013.gz', domain: 'alscan.org' }, { filename: '/home1/druid/logs/druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Sep-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.info' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.net' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.org' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Sep-2013.gz', domain: 'issnap.info' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Sep-2013.gz', domain: 'issnap.org' }, { filename: '/home1/druid/logs/z80cim.druiddesigns.com-Sep-2013.gz', domain: 'z80cim.org' }, { filename: '/home1/druid/logs/redmine.druiddesigns.com-Sep-2013.gz', domain: 'redmine.samplx.org' } ]; checkPromise(actual, expected); }); test('findAccountArchiveFiles("samplx", "2013/09/12", "2013/09/21")', async () => { const start = new Date(2013, 8, 12, 0, 0, 0, 0); const stop = new Date(2013, 8, 21, 23, 59, 59, 0); const actual = await c.findAccountArchiveFiles('samplx', start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findAccountArchiveFiles("alscan", "2013/09/12", "2013/09/21")', async () => { const start = new Date(2013, 8, 12, 0, 0, 0, 0); const stop = new Date(2013, 8, 21, 23, 59, 59, 0); const actual = await c.findAccountArchiveFiles('alscan', start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findAccountArchiveFiles("nonesuch", "2013/09/12", "2013/09/21")', async () => { const start = new Date(2013, 8, 12, 0, 0, 0, 0); const stop = new Date(2013, 8, 21, 23, 59, 59, 0); const actual = await c.findAccountArchiveFiles('nonesuch', start, stop); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findAllArchiveFiles("2013/09/12", "2013/09/21")', async () => { const start = new Date(2013, 8, 12, 0, 0, 0, 0); const stop = new Date(2013, 8, 21, 23, 59, 59, 0); const actual = await c.findAllArchiveFiles(start, stop); const expected: Array = [ { filename: '/home1/druid/logs/alscan-org.druiddesigns.com-Sep-2013.gz', domain: 'alscan.org' }, { filename: '/home1/druid/logs/druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Sep-2013.gz', domain: 'druiddesigns.com' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.info' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.net' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Sep-2013.gz', domain: 'druiddesigns.org' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Sep-2013.gz', domain: 'issnap.info' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Sep-2013.gz', domain: 'issnap.org' }, { filename: '/home1/druid/logs/z80cim.druiddesigns.com-Sep-2013.gz', domain: 'z80cim.org' }, { filename: '/home1/druid/logs/redmine.druiddesigns.com-Sep-2013.gz', domain: 'redmine.samplx.org' } ]; checkPromise(actual, expected); }); test('findLogFile("/usr/local/apache/domlogs/samplx.org")', async () => { const actual = await c.findLogFile('/usr/local/apache/domlogs/samplx.org'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/samplx.org', domain: 'file' } ]; checkPromise(actual, expected); }); test('findLogFile(ROOT+"/usr/local/apache/domlogs/samplx.org")', async () => { const pathname = getRootPathname('/usr/local/apache/domlogs/samplx.org'); const actual = await c.findLogFile(pathname); const expected: Array = [ { filename: pathname, domain: 'file' } ]; checkPromise(actual, expected); }); test('findLogFile("-")', async () => { const actual = await c.findLogFile('-'); const expected: Array = [ { filename: '-', domain: 'file' } ]; checkPromise(actual, expected); }); test('findLogFile("nonesuch")', async () => { const actual = await c.findLogFile('nonesuch'); const expected: Array = [ ]; checkPromise(actual, expected); }); test('findLogFilesInDirectory("/usr/local/apache/domlogs")', async () => { const actual = await c.findLogFilesInDirectory('/usr/local/apache/domlogs'); const expected: Array = [ { filename: '/usr/local/apache/domlogs/samplx.org', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/pub.samplx.org', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/alscan-org.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/druiddesigns.com-ssl_log', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/ddinfo.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/ddnet.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/ddorg.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/isinfo.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/isorg.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/z80cim.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/redmine.druiddesigns.com', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/alscan.info', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/dst.alscan.info', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/addon.alscan.info', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/bandwidth.alscan.info', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/days.alscan.info', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/minutes.alscan.info', domain: 'directory' }, { filename: '/usr/local/apache/domlogs/seconds.alscan.info', domain: 'directory' }, ]; checkPromise(actual, expected); }); test('findLogFilesInDirectory("/home1/druid/logs")', async () => { const actual = await c.findLogFilesInDirectory('/home1/druid/logs'); const expected: Array = [ { filename: '/home1/druid/logs/alscan-org.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/alscan-org.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddinfo.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Apr-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Feb-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Jan-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Mar-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-May-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddnet.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/ddorg.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Apr-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Feb-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Jan-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Mar-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-May-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Apr-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Feb-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Jan-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Mar-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-May-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/druiddesigns.com-ssl_log-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Apr-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Feb-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Jan-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Mar-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-May-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isinfo.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Apr-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Aug-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Feb-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Jan-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Jul-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Jun-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Mar-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-May-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/isorg.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/redmine.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/redmine.druiddesigns.com-Sep-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/z80cim.druiddesigns.com-Oct-2013.gz', domain: 'directory' }, { filename: '/home1/druid/logs/z80cim.druiddesigns.com-Sep-2013.gz', domain: 'directory' } ]; checkPromise(actual, expected); }); test('findLogFilesInDirectory("nonesuch")', async () => { const actual = await c.findLogFilesInDirectory('nonesuch'); const expected: Array = [ ]; checkPromise(actual, expected); }); });