diff --git a/src/server/middleware/couch.js b/src/server/middleware/couch.js index 1d1ee9b6..23c6de9d 100644 --- a/src/server/middleware/couch.js +++ b/src/server/middleware/couch.js @@ -248,6 +248,15 @@ exports.getGroup = function*() { } }; +exports.getGroups = function*() { + try { + var right = this.params.right || 'read'; + this.body = yield this.state.couch.getGroupsByRight(this.state.userEmail, right); + } catch (e) { + onGetError(this, e); + } +}; + /* todo implement it exports.createOrUpdateGroup = function *() { try { diff --git a/src/server/routes/api.js b/src/server/routes/api.js index 137182fb..0c03ae84 100644 --- a/src/server/routes/api.js +++ b/src/server/routes/api.js @@ -48,6 +48,7 @@ exports.init = function () { // Groups router.get('/:dbname/group/:name', couch.getGroup); + router.get('/:dbname/groups', couch.getGroups); //router.put('/:dbname/group/:name', parseJson1mb, couch.createOrUpdateGroup); router.delete('/:dbname/group/:name', couch.deleteGroup); diff --git a/test/rest-api/api.js b/test/rest-api/api.js index 45193a46..e856414a 100644 --- a/test/rest-api/api.js +++ b/test/rest-api/api.js @@ -174,4 +174,10 @@ describe('basic rest-api as a@a.com', function () { response.body.should.have.properties(['name', 'users', 'rights']); }); }); + + it('get list of groups', function () { + return request.get('/db/test/groups').expect(200).then(function (response) { + response.body.should.deepEqual(['groupA']); + }); + }); });