kopia lustrzana https://github.com/c9/core
add preview unit test
rodzic
b5739f49b2
commit
babf7a171b
|
@ -0,0 +1,159 @@
|
|||
#!/usr/bin/env node
|
||||
/*global describe it before after beforeEach afterEach */
|
||||
|
||||
"use strict";
|
||||
"use server";
|
||||
|
||||
require("c9/inline-mocha")(module);
|
||||
require("c9/setup_paths");
|
||||
|
||||
var async = require("async");
|
||||
var assert = require("assert");
|
||||
var nock = require("nock");
|
||||
|
||||
var RestClient = require("c9/rest_client");
|
||||
var baseTest = require('../c9.api/base_test');
|
||||
var testDb = require("../c9.db.redis/test_redis");
|
||||
var setupFixtures = require("test/lib/integration/setup");
|
||||
|
||||
describe(__filename, function() {
|
||||
|
||||
var db, serverList, client;
|
||||
var testUser, testProject, testRemote, testContainer;
|
||||
var loggedInUser = null;
|
||||
|
||||
before(function(next) {
|
||||
baseTest({
|
||||
config: "preview",
|
||||
}, function(err, services) {
|
||||
db = services.db;
|
||||
serverList = services["vfs.serverlist"];
|
||||
|
||||
services.connect.useSetup(function(req, res, next) {
|
||||
req.user = loggedInUser;
|
||||
next();
|
||||
});
|
||||
|
||||
client = new RestClient("localhost", services.apiPort, {
|
||||
debug: false
|
||||
});
|
||||
|
||||
testUser = require("test/lib/integration/db/user")(db);
|
||||
testProject = require("test/lib/integration/db/project")(db);
|
||||
testRemote = require("test/lib/integration/db/mock-remote")(db);
|
||||
testContainer = require("test/lib/integration/db/mock-container")(db);
|
||||
|
||||
next(err);
|
||||
});
|
||||
});
|
||||
|
||||
after(function(next) {
|
||||
testDb.stop(next);
|
||||
});
|
||||
|
||||
beforeEach(function(next) {
|
||||
serverList._testSetServerList([{
|
||||
url: "http://vfs.c9.dev",
|
||||
internalUrl: "http://vfs.c9.dev"
|
||||
}]);
|
||||
testDb.reset(next);
|
||||
});
|
||||
|
||||
describe("preview", function() {
|
||||
it("should do stuff", function(next) {
|
||||
var user1, user2;
|
||||
var public1, private1, private2;
|
||||
|
||||
// user1 user2
|
||||
// user2/public
|
||||
// user2/private1 user1 has no access
|
||||
// user2/private2 user1 is collaborator
|
||||
|
||||
setupFixtures(
|
||||
testUser.create(),
|
||||
testUser.create(),
|
||||
testProject.create(),
|
||||
testRemote.create({type: "docker"}),
|
||||
testContainer.create(),
|
||||
testProject.create(),
|
||||
testRemote.create({type: "docker"}),
|
||||
testContainer.create(),
|
||||
testProject.create(),
|
||||
testRemote.create({type: "docker"}),
|
||||
testContainer.create(),
|
||||
function(ctx, next) {
|
||||
user1 = ctx.users[0];
|
||||
user2 = ctx.users[1];
|
||||
public1 = ctx.projects[0];
|
||||
private1 = ctx.projects[1];
|
||||
private2 = ctx.projects[2];
|
||||
next();
|
||||
},
|
||||
function(ctx, next) {
|
||||
public1.owner = user2;
|
||||
public1.visibility = "public";
|
||||
public1.save(next);
|
||||
},
|
||||
function(ctx, next) {
|
||||
private1.owner = user2;
|
||||
private1.visibility = "private";
|
||||
private1.save(next);
|
||||
},
|
||||
function(ctx, next) {
|
||||
private2.owner = user2;
|
||||
private2.visibility = "private";
|
||||
private2.save(next);
|
||||
},
|
||||
function(ctx, next) {
|
||||
db.WorkspaceMember.create(
|
||||
private2,
|
||||
user1.id,
|
||||
db.WorkspaceMember.ACL_R,
|
||||
db.Project.ROLE_COLLABORATOR, null, next
|
||||
);
|
||||
},
|
||||
function(fixtures, teardown) {
|
||||
/*
|
||||
* Logged in Role Visibility ACTION
|
||||
* =================================================================
|
||||
* true none public view
|
||||
* false none public view
|
||||
* true none private forbidden
|
||||
* false none private unauthorized
|
||||
* true visitor/collaborator/admin public view
|
||||
* true visitor/collaborator/admin private view
|
||||
*/
|
||||
|
||||
var expect = [
|
||||
{ uid: user1.id, role: db.Project.ROLE_NONE, p: public1, code: 200 },
|
||||
{ uid: -1, role: db.Project.ROLE_NONE, p: public1, code: 200 },
|
||||
{ uid: user1.id, role: db.Project.ROLE_NONE, p: private1, code: 403 },
|
||||
{ uid: -1, role: db.Project.ROLE_NONE, p: private1, code: 302 }, // redirect to login page
|
||||
{ uid: user1.id, role: db.Project.ROLE_COLLABORATOR, p: private2, code: 200 },
|
||||
{ uid: user2.id, role: db.Project.ROLE_ADMIN, p: private2, code: 200 }
|
||||
];
|
||||
|
||||
async.eachSeries(expect, function(expect, next) {
|
||||
var path = "/" + expect.p.owner.name + "/" + expect.p.name + "/";
|
||||
|
||||
nock('http://vfs.c9.dev')
|
||||
.get("/" + expect.p.id + "/preview/")
|
||||
.reply(200, []);
|
||||
|
||||
loggedInUser = {
|
||||
id: expect.uid
|
||||
};
|
||||
|
||||
client.get(path, function (err, res) {
|
||||
assert((err && err.code) == expect.code || expect.code == 200, "Wrong return code");
|
||||
next();
|
||||
});
|
||||
}, function(err) {
|
||||
if (err) return next(err);
|
||||
teardown(next);
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
Ładowanie…
Reference in New Issue