botbuilder-js/tools/scripts/unit.js

165 строки
6.2 KiB
JavaScript

#!/usr/bin/env node
//
// Copyright (c) Microsoft and contributors. All rights reserved.
//
// 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.
//
const fs = require('fs');
const path = require('path');
var args = process.ARGV || process.argv;
var reporter = 'list';
var xunitOption = Array.prototype.indexOf.call(args, '-xunit');
if (xunitOption !== -1) {
reporter = 'xunit';
args.splice(xunitOption, 1);
}
var testList = args.pop();
var fileContent;
var root = false;
if (!fs.existsSync) {
fs.existsSync = require('path').existsSync;
}
if (fs.existsSync(testList)) {
fileContent = fs.readFileSync(testList).toString();
} else {
fileContent = fs.readFileSync('./test/' + testList).toString();
root = true;
}
var files = fileContent.split('\n');
args.push('-u');
args.push('tdd');
// TODO: remove this timeout once tests are faster
args.push('-t');
args.push('200000');
files.forEach(function (file) {
if (file.length > 0 && file.trim()[0] !== '#') {
// trim trailing \r if it exists
file.endsWith('\r') ? file.slice(0, -1) : file;
if (root) {
args.push('test/' + file);
} else {
args.push(file);
}
}
});
args.push('-R');
args.push(reporter);
var defaultStorageAccount = 'ciserversdk';
var defaultServiceBusAccount = 'ciserversb';
var defaultSubscription = 'db1ab6f0-4769-4b27-930e-01e2ef9c123c';
var defaultAccessToken = 'access_token';
if (!process.env.AZURE_APNS_CERTIFICATE && process.env.AZURE_APNS_CERTIFICATE_FILE) {
process.env.AZURE_APNS_CERTIFICATE = Buffer.from(
fs.readFileSync(process.env['AZURE_APNS_CERTIFICATE_FILE'])
).toString('base64');
} else if (process.env.AZURE_APNS_CERTIFICATE && process.env.AZURE_APNS_CERTIFICATE_FILE) {
throw new Error('Only one of AZURE_APNS_CERTIFICATE or AZURE_APNS_CERTIFICATE_FILE can be set. Not both.');
}
if (!process.env.AZURE_APNS_CERTIFICATE_KEY && process.env.AZURE_APNS_CERTIFICATE_KEY_FILE) {
process.env.AZURE_APNS_CERTIFICATE_KEY = fs.readFileSync(process.env['AZURE_APNS_CERTIFICATE_KEY_FILE']).toString();
} else if (process.env.AZURE_APNS_CERTIFICATE_KEY && process.env.AZURE_APNS_CERTIFICATE_KEY_FILE) {
throw new Error('Only one of AZURE_APNS_CERTIFICATE_KEY or AZURE_APNS_CERTIFICATE_KEY_FILE can be set. Not both.');
}
if (!process.env.AZURE_MPNS_CERTIFICATE && process.env.AZURE_MPNS_CERTIFICATE_FILE) {
process.env.AZURE_MPNS_CERTIFICATE = Buffer.from(
fs.readFileSync(process.env['AZURE_MPNS_CERTIFICATE_FILE'])
).toString('base64');
} else if (process.env.AZURE_MPNS_CERTIFICATE && process.env.AZURE_MPNS_CERTIFICATE_FILE) {
throw new Error('Only one of AZURE_MPNS_CERTIFICATE or AZURE_MPNS_CERTIFICATE_FILE can be set. Not both.');
}
if (!process.env.AZURE_MPNS_CERTIFICATE_KEY && process.env.AZURE_MPNS_CERTIFICATE_KEY_FILE) {
process.env.AZURE_MPNS_CERTIFICATE_KEY = fs.readFileSync(process.env['AZURE_MPNS_CERTIFICATE_KEY_FILE']).toString();
} else if (process.env.AZURE_MPNS_CERTIFICATE_KEY && process.env.AZURE_MPNS_CERTIFICATE_KEY_FILE) {
throw new Error('Only one of AZURE_MPNS_CERTIFICATE_KEY or AZURE_MPNS_CERTIFICATE_KEY_FILE can be set. Not both.');
}
if (!process.env.AZURE_ACCESS_TOKEN) {
process.env.AZURE_ACCESS_TOKEN = defaultAccessToken;
}
if (!process.env.AZURE_CERTIFICATE_PEM_FILE) {
process.env.AZURE_CERTIFICATE_PEM_FILE = path.join(__dirname, '../test/data/certificate.pem');
}
if (!process.env.NOCK_OFF && !process.env.AZURE_NOCK_RECORD) {
process.env.AZURE_APNS_CERTIFICATE = 'fake_certificate';
process.env.AZURE_APNS_CERTIFICATE_KEY = 'fake_certificate_key';
process.env.AZURE_WNS_PACKAGE_SID = 'sid';
process.env.AZURE_WNS_SECRET_KEY = 'key';
process.env.AZURE_GCM_KEY = 'fakekey'.toString('base64');
process.env.AZURE_MPNS_CERTIFICATE = 'fake_certificate';
process.env.AZURE_MPNS_CERTIFICATE_KEY = 'fake_certificate_key';
if (process.env.AZURE_STORAGE_ACCOUNT !== defaultStorageAccount) {
process.env.AZURE_STORAGE_ACCOUNT = defaultStorageAccount;
}
process.env.AZURE_STORAGE_ACCESS_KEY = Buffer.from('fake_key').toString('base64');
if (process.env.AZURE_SERVICEBUS_NAMESPACE !== defaultServiceBusAccount) {
process.env.AZURE_SERVICEBUS_NAMESPACE = defaultServiceBusAccount;
process.env.AZURE_SERVICEBUS_ACCESS_KEY = Buffer.from('fake_key').toString('base64');
}
if (process.env.AZURE_SUBSCRIPTION_ID !== defaultSubscription) {
process.env.AZURE_SUBSCRIPTION_ID = defaultSubscription;
process.env.AZURE_CERTIFICATE = 'fake_certificate';
process.env.AZURE_CERTIFICATE_KEY = 'fake_certificate_key';
}
} else {
if (!process.env.NOCK_OFF && process.env.AZURE_NOCK_RECORD) {
// If in record mode, and environment variables are set, make sure they are the expected one for recording
// NOTE: For now, only the Core team can update recordings. For non-core team PRs, the recordings will be updated
// after merge
if (process.env.AZURE_STORAGE_ACCOUNT && process.env.AZURE_STORAGE_ACCOUNT !== defaultStorageAccount) {
throw new Error('Storage recordings can only be made with the account ' + defaultStorageAccount);
}
if (
process.env.AZURE_SERVICEBUS_NAMESPACE &&
process.env.AZURE_SERVICEBUS_NAMESPACE !== defaultServiceBusAccount
) {
throw new Error('Service Bus recordings can only be made with the namespace ' + defaultServiceBusAccount);
}
if (process.env.AZURE_SUBSCRIPTION_ID && process.env.AZURE_SUBSCRIPTION_ID !== defaultSubscription) {
throw new Error(
'Service Management recordings can only be made with the subscription ' + defaultSubscription
);
}
}
}
require('../node_modules/mocha/bin/mocha');