123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- // Licensed to the Software Freedom Conservancy (SFC) under one
- // or more contributor license agreements. See the NOTICE file
- // distributed with this work for additional information
- // regarding copyright ownership. The SFC licenses this file
- // to you 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.
- 'use strict';
- var assert = require('assert'),
- crypto = require('crypto'),
- fs = require('fs'),
- path = require('path');
- var extension = require('../../firefox/extension'),
- io = require('../../io'),
- zip = require('../../io/zip'),
- it = require('../../testing').it;
- var JETPACK_EXTENSION = path.join(__dirname,
- '../../lib/test/data/firefox/jetpack-sample.xpi');
- var NORMAL_EXTENSION = path.join(__dirname,
- '../../lib/test/data/firefox/sample.xpi');
- var WEBEXTENSION_EXTENSION = path.join(__dirname,
- '../../lib/test/data/firefox/webextension.xpi');
- var JETPACK_EXTENSION_ID = 'jid1-EaXX7k0wwiZR7w@jetpack';
- var NORMAL_EXTENSION_ID = 'sample@seleniumhq.org';
- var WEBEXTENSION_EXTENSION_ID = 'webextensions-selenium-example@example.com';
- describe('extension', function() {
- it('can install a jetpack xpi file', function() {
- return io.tmpDir().then(function(dir) {
- return extension.install(JETPACK_EXTENSION, dir).then(function(id) {
- assert.equal(JETPACK_EXTENSION_ID, id);
- var file = path.join(dir, id + '.xpi');
- assert.ok(fs.existsSync(file), 'no such file: ' + file);
- assert.ok(!fs.statSync(file).isDirectory());
- var copiedSha1 = crypto.createHash('sha1')
- .update(fs.readFileSync(file))
- .digest('hex');
- var goldenSha1 = crypto.createHash('sha1')
- .update(fs.readFileSync(JETPACK_EXTENSION))
- .digest('hex');
- assert.equal(copiedSha1, goldenSha1);
- });
- });
- });
- it('can install a normal xpi file', function() {
- return io.tmpDir().then(function(dir) {
- return extension.install(NORMAL_EXTENSION, dir).then(function(id) {
- assert.equal(NORMAL_EXTENSION_ID, id);
- var file = path.join(dir, NORMAL_EXTENSION_ID);
- assert.ok(fs.statSync(file).isDirectory());
- assert.ok(fs.existsSync(path.join(file, 'chrome.manifest')));
- assert.ok(fs.existsSync(path.join(file, 'content/overlay.xul')));
- assert.ok(fs.existsSync(path.join(file, 'content/overlay.js')));
- assert.ok(fs.existsSync(path.join(file, 'install.rdf')));
- });
- });
- });
- it('can install a webextension xpi file', function() {
- return io.tmpDir().then(function(dir) {
- return extension.install(WEBEXTENSION_EXTENSION, dir).then(function(id) {
- assert.equal(WEBEXTENSION_EXTENSION_ID, id);
- var file = path.join(dir, id + '.xpi');
- assert.ok(fs.existsSync(file), 'no such file: ' + file);
- assert.ok(!fs.statSync(file).isDirectory());
- var copiedSha1 = crypto.createHash('sha1')
- .update(fs.readFileSync(file))
- .digest('hex');
- var goldenSha1 = crypto.createHash('sha1')
- .update(fs.readFileSync(WEBEXTENSION_EXTENSION))
- .digest('hex');
- assert.equal(copiedSha1, goldenSha1);
- });
- });
- });
- it('can install an extension from a directory', function() {
- return io.tmpDir().then(function(srcDir) {
- return zip.unzip(NORMAL_EXTENSION, srcDir)
- .then(() => io.tmpDir())
- .then(dstDir => {
- return extension.install(srcDir, dstDir).then(function(id) {
- assert.equal(NORMAL_EXTENSION_ID, id);
- var dir = path.join(dstDir, NORMAL_EXTENSION_ID);
- assert.ok(fs.existsSync(path.join(dir, 'chrome.manifest')));
- assert.ok(fs.existsSync(path.join(dir, 'content/overlay.xul')));
- assert.ok(fs.existsSync(path.join(dir, 'content/overlay.js')));
- assert.ok(fs.existsSync(path.join(dir, 'install.rdf')));
- });
- });
- });
- });
- });
|