VulpesOS/gaia/build/test/unit/webapp_manifests_test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

206 lines
5.8 KiB
JavaScript
Executable file

'use strict';
var assert = require('chai').assert;
var proxyquire = require('proxyquire');
var mockUtils = require('./mock_utils.js');
suite('webapp-manifest.js', function() {
var app;
var fileExists;
var writingContent = null;
var isExternalApp = false;
var mockConfig;
var mockWebapp;
setup(function() {
var fileExists = false;
app = proxyquire.noCallThru().load(
'../../webapp-manifests', {
'./utils': mockUtils
});
mockUtils.getFileContent = function(file) {
return file;
};
mockUtils.getFileAsDataURI = function(file) {
return file.path;
};
mockUtils.ensureFolderExists = function(filePath) {
return fileExists;
};
mockUtils.writeContent = function(file, content) {
writingContent = content;
};
mockUtils.generateUUID = function() {
return 'tewwtwuuid-1234';
};
mockUtils.getNewURI = function(origin) {
return {
host: origin + '_host',
scheme: origin + '_scheme',
prePath: origin
};
};
mockUtils.isExternalApp = function(webapp) {
return isExternalApp;
};
mockUtils.gaia = {
getInstance: function(config) {
return config;
}
};
mockConfig = {
GAIA_DIR: 'testGaiaDir',
GAIA_DOMAIN: 'testGaiaDomain',
GAIA_PORT: 'testGaiaPort',
GAIA_SCHEME: 'testGaiaScheme',
stageDir: 'testStageDir'
};
mockWebapp = {
url: 'mockWebappUrl',
appStatus: 'mockWebappAppStatus',
manifest: 'mockWebappManifest',
pckManifest: {
origin: 'pckManifestOrigin'
},
metaData: {
installOrigin: 'metaDataInstallOrigin',
manifestURL: 'metaDataManifestURL',
// origin: 'metaDataOrigin',
removable: false,
etag: 'metaDataEtag',
packageEtag: 'metaDataPackageEtag'
},
sourceDirectoryName: 'sourceDirectoryName',
domain: 'domain',
profileDirectoryFilePath: 'testuuid'
};
});
teardown(function() {
fileExists = false;
isExternalApp = false;
writingContent = null;
});
suite('setConfig, genStageWebappJSON, fillExternalAppManifest', function() {
var webappManifest;
setup(function() {
webappManifest = new app.ManifestBuilder();
mockUtils.getFile = function(path) {
return {
leafName: path
};
};
});
test('setConfig', function() {
webappManifest.setConfig(mockConfig);
assert.equal(webappManifest.id, 1);
assert.equal(webappManifest.stageDir, 'testStageDir');
});
test('genStageWebappJSON ', function() {
var testStageManifests = {test: 'test'};
var writingFilePath = '';
webappManifest.stageManifests = testStageManifests;
webappManifest.stageDir = {
path: 'test_build_stage'
};
mockUtils.getFile = function() {
for (var i in arguments) {
writingFilePath += ('/' + arguments[i]);
}
};
webappManifest.genStageWebappJSON();
assert.equal(writingContent,
JSON.stringify(testStageManifests, null, 2) + '\n');
assert.equal(writingFilePath, '/test_build_stage/webapps_stage.json');
mockUtils.getFile = null;
});
test('fillExternalAppManifest', function() {
var test_uuid = 'testuuid';
webappManifest.INSTALL_TIME = 'INSTALL_TIME';
webappManifest.UPDATE_TIME = 'UPDATE_TIME';
mockUtils.generateUUID = function() {
return test_uuid;
};
webappManifest.setConfig(mockConfig);
webappManifest.fillExternalAppManifest(mockWebapp);
assert.deepEqual(webappManifest.stageManifests, {
'sourceDirectoryName': {
originalManifest: mockWebapp.manifest,
origin: 'app://' + test_uuid,
manifestURL: mockWebapp.metaData.manifestURL,
installOrigin: mockWebapp.metaData.installOrigin,
receipt: null,
installTime: 'INSTALL_TIME',
updateTime: 'UPDATE_TIME',
removable: mockWebapp.metaData.removable,
localId: 1,
etag: mockWebapp.metaData.etag,
packageEtag: mockWebapp.metaData.packageEtag,
appStatus: mockWebapp.appStatus,
webappTargetDirName: test_uuid
}
});
});
test('genManifest, when it is external webapp', function() {
isExternalApp = false;
webappManifest.INSTALL_TIME = 'INSTALL_TIME';
webappManifest.UPDATE_TIME = 'UPDATE_TIME';
webappManifest.setConfig(mockConfig);
webappManifest.genManifest(mockWebapp);
assert.deepEqual(webappManifest.stageManifests, {
'sourceDirectoryName': {
originalManifest: mockWebapp.manifest,
origin: mockWebapp.url,
manifestURL: mockWebapp.url + '/manifest.webapp',
installOrigin: mockWebapp.url,
receipt: null,
installTime: 'INSTALL_TIME',
updateTime: 'UPDATE_TIME',
localId: 1,
appStatus: mockWebapp.appStatus,
webappTargetDirName: mockWebapp.domain
}
});
});
test('genManifest, when it is not external webapp', function() {
isExternalApp = false;
webappManifest.INSTALL_TIME = 'INSTALL_TIME';
webappManifest.UPDATE_TIME = 'UPDATE_TIME';
webappManifest.setConfig(mockConfig);
webappManifest.genManifest(mockWebapp);
assert.deepEqual(webappManifest.stageManifests, {
'sourceDirectoryName': {
originalManifest: mockWebapp.manifest,
origin: mockWebapp.url,
manifestURL: mockWebapp.url + '/manifest.webapp',
installOrigin: mockWebapp.url,
receipt: null,
installTime: 'INSTALL_TIME',
updateTime: 'UPDATE_TIME',
localId: 1,
appStatus: mockWebapp.appStatus,
webappTargetDirName: mockWebapp.domain
}
});
});
});
});