Skip to content

Commit

Permalink
#795 Add option to import from zip in _globals.
Browse files Browse the repository at this point in the history
A blobClient is returned in the results when this is specified.
  • Loading branch information
Patrik Meijer committed Jan 16, 2016
1 parent 1622594 commit 4ecef0d
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 5 deletions.
37 changes: 32 additions & 5 deletions test/_globals.js
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,11 @@ function loadJsonFile(path) {

function importProject(storage, parameters, callback) {
var deferred = Q.defer(),
extractDeferred = Q.defer(),
BC,
WR,
blobClient,
wr,
projectJson,
branchName,
data = {};
Expand All @@ -255,17 +260,38 @@ function importProject(storage, parameters, callback) {
}

if (typeof parameters.projectSeed === 'string') {
projectJson = loadJsonFile(parameters.projectSeed);
if (parameters.projectSeed.indexOf('.zip') > -1) {
BC = require('../src/server/middleware/blob/BlobClientWithFSBackend');
WR = require('../src/server/worker/workerrequests');
blobClient = new BC(parameters.gmeConfig, parameters.logger);
wr = new WR(parameters.logger, parameters.gmeConfig);
wr._addZippedExportToBlob(parameters.projectSeed, blobClient)
.then(function (projectStr) {
var projectJson = JSON.parse(projectStr);
extractDeferred.resolve(projectJson);
})
.catch(extractDeferred.reject);
} else {
try {
extractDeferred.resolve(loadJsonFile(parameters.projectSeed));
} catch (e) {
extractDeferred.reject(e);
}
}
} else if (typeof parameters.projectSeed === 'object') {
projectJson = parameters.projectSeed;
extractDeferred.resolve(parameters.projectSeed);
} else {
deferred.reject('parameters.projectSeed must be filePath or object!');
extractDeferred.reject('parameters.projectSeed must be filePath or object!');
}
branchName = parameters.branchName || 'master';
// Parameters check end.
data.projectName = parameters.projectName;

storage.createProject(data)
extractDeferred.promise
.then(function (projectJson_) {
projectJson = projectJson_;
return storage.createProject(data);
})
.then(function (project) {
var core = new Core(project, {
globConf: parameters.gmeConfig,
Expand Down Expand Up @@ -293,7 +319,8 @@ function importProject(storage, parameters, callback) {
core: core,
jsonProject: projectJson,
rootNode: rootNode,
rootHash: persisted.rootHash
rootHash: persisted.rootHash,
blobClient: blobClient //Undefined unless importing from zip.
});
})
.catch(function (err) {
Expand Down
45 changes: 45 additions & 0 deletions test/webgme.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,49 @@ describe('webgme', function () {
.nodeify(done);
});

// This test might not really belong here it's testing a _globals function.
it('_globals should import a zipped seed', function (done) {
var gmeConfig = testFixture.getGmeConfig(),
storage,
metaHash = 'b1f1f11201951f23b0d0c86d6c298389b3f8f0c0',
gmeAuth;

function end(err) {
testFixture.Q.allDone([
storage.closeDatabase(),
gmeAuth.unload()
])
.then(function () {
done(err);
})
.catch(done);
}

testFixture.Q.ninvoke(testFixture, 'rimraf', gmeConfig.blob.fsDir)
.then(function () {
return testFixture.clearDBAndGetGMEAuth(gmeConfig);
})
.then(function (gmeAuth_) {
gmeAuth = gmeAuth_;
storage = testFixture.getMemoryStorage(logger, gmeConfig, gmeAuth);
return storage.openDatabase();
})
.then(function () {
return testFixture.importProject(storage, {
projectName: 'FromAZip',
logger: logger.fork('import'),
gmeConfig: gmeConfig,
branchName: 'master',
userName: gmeConfig.authentication.guestAccount,
projectSeed: './test/server/worker/workerrequests/exported.zip'
});
})
.then(function (result) {
return result.blobClient.getMetadata(metaHash);
})
.then(function (metadata) {
expect(metadata.name).to.equal('a.txt');
})
.nodeify(end);
});
});

0 comments on commit 4ecef0d

Please sign in to comment.