Skip to content

Instantly share code, notes, and snippets.

@MikeBild
Created January 8, 2015 08:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MikeBild/031e88dd5af0d5c9f9b2 to your computer and use it in GitHub Desktop.
Save MikeBild/031e88dd5af0d5c9f9b2 to your computer and use it in GitHub Desktop.
Mocha integration tests example
'use strict';
var assert = require('assert'),
restify = require('restify');
var client = restify.createJsonClient({
version: '*',
rejectUnauthorized: false,
url: 'https://127.0.0.1:8080',
headers: {'x-auth-token':'66LOHAiB8Zeod1bAeLYW'}
});
describe('Integration: Share', function(){
var server,
context;
before(function(done) {
server = require('../server.js');
context = server.init().getContext();
setTimeout(done, 500);
});
after(function(done){
context.storage.close();
context.server.close();
delete require.cache[server];
setTimeout(done, 500);
});
describe('on shares', function(){
it('should be get all identities', function(done){
client.get('/manage/permissions/identities', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 200, 'Wrong HTTP status code.');
assert.notEqual(actual.length, 0);
done();
});
});
it('should be get shares by identity `anonymous`', function(done){
client.get('/manage/permissions/anonymous', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 200, 'Wrong HTTP status code.');
assert.deepEqual(actual, { '/': [ 'GET' ],
'/doc': [ 'GET' ] }
);
done();
});
});
it('should be get shares by identity `myIdent`', function(done){
client.get('/manage/permissions/myIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 200, 'Wrong HTTP status code.');
assert.deepEqual(actual, { '/': [],
'/doc': [] }
);
done();
});
});
});
describe('on share access', function(){
it('should be add a `/demo1` share', function(done){
client.post('/manage/permissions/demo1', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 201, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: [], DELETE: [] });
done();
});
});
it('should be grant read access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/grantread/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [ 'superIdent' ], POST: [], PUT: [], DELETE: [] });
done();
});
});
it('should be revoke read access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/revokeread/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: [], DELETE: [] });
done();
});
});
it('should be grant insert access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/grantinsert/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: ['superIdent'], PUT: [], DELETE: [] });
done();
});
});
it('should be revoke insert access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/revokeinsert/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: [], DELETE: [] });
done();
});
});
it('should be grant update access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/grantupdate/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: ['superIdent'], DELETE: [] });
done();
});
});
it('should be revoke update access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/revokeupdate/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: [], DELETE: [] });
done();
});
});
it('should be grant delete access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/grantdelete/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: [], DELETE: ['superIdent'] });
done();
});
});
it('should be revoke delete access to `/demo1` share for `superIdent` identity', function(done){
client.put('/manage/permissions/demo1/action/revokedelete/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { GET: [], POST: [], PUT: [], DELETE: [] });
done();
});
});
it('should be revoke all access to all shares for `superIdent` identity', function(done){
client.put('/manage/permissions/action/revoke/superIdent', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, { '/': [],
'/doc': [],
'/demo1': [] }
);
done();
});
});
it('should be remove a `/demo1` share', function(done){
client.del('/manage/permissions/demo1', function(error, req, res, actual){
assert.ifError(error);
assert.equal(res.statusCode, 202, 'Wrong HTTP status code.');
assert.deepEqual(actual, {message:"delete accepted"});
done();
});
});
});
});
@RusAlex
Copy link

RusAlex commented Feb 11, 2015

Do you still wait for new applicants ? Was going to complete your challenge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment