diff --git a/src/groupdb.js b/src/groupdb.js index 7317b496d..04c1d56e4 100644 --- a/src/groupdb.js +++ b/src/groupdb.js @@ -34,7 +34,7 @@ function add(id, name, callback) { assert.strictEqual(typeof callback, 'function'); var data = [ id, name ]; - database.query('INSERT INTO groupd (id, name) VALUES (?, ?)', + database.query('INSERT INTO groups (id, name) VALUES (?, ?)', data, function (error, result) { if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); diff --git a/src/groups.js b/src/groups.js index 7b25925a7..ec1699f4e 100644 --- a/src/groups.js +++ b/src/groups.js @@ -12,6 +12,8 @@ exports = module.exports = { var assert = require('assert'), DatabaseError = require('./databaseerror.js'), + groupdb = require('./groupdb.js'), + util = require('util'), uuid = require('node-uuid'), _ = require('underscore'); @@ -45,7 +47,7 @@ function validateGroupname(name) { assert.strictEqual(typeof name, 'string'); if (name.length <= 2) return new GroupError(GroupError.BAD_NAME, 'name must be atleast 3 chars'); - if (name.length > 256) return new GroupError(GroupError.BAD_NAME, 'name too long'); + if (name.length >= 255) return new GroupError(GroupError.BAD_NAME, 'name too long'); return null; } @@ -58,8 +60,8 @@ function create(name, callback) { if (error) return callback(error); groupdb.add(uuid.v4(), name, function (error) { - if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new GroupError(UserError.ALREADY_EXISTS)); - if (error) return callback(new UserError(GroupError.INTERNAL_ERROR, error)); + if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new GroupError(GroupError.ALREADY_EXISTS)); + if (error) return callback(new GroupError(GroupError.INTERNAL_ERROR, error)); callback(null); }); @@ -70,8 +72,8 @@ function remove(id, callback) { assert.strictEqual(typeof callback, 'function'); groupdb.del(id, function (error) { - if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND)); - if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); + if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new GroupError(GroupError.NOT_FOUND)); + if (error) return callback(new GroupError(GroupError.INTERNAL_ERROR, error)); callback(null); }); @@ -82,8 +84,8 @@ function get(id, callback) { assert.strictEqual(typeof callback, 'function'); groupdb.get(id, function (error, result) { - if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND)); - if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); + if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new GroupError(GroupError.NOT_FOUND)); + if (error) return callback(new GroupError(GroupError.INTERNAL_ERROR, error)); return callback(null, result); }); diff --git a/src/test/group-test.js b/src/test/group-test.js new file mode 100644 index 000000000..c1f645b72 --- /dev/null +++ b/src/test/group-test.js @@ -0,0 +1,52 @@ +/* jslint node:true */ +/* global it:false */ +/* global describe:false */ +/* global before:false */ +/* global after:false */ + +'use strict'; + +var database = require('../database.js'), + expect = require('expect.js'), + groups = require('../groups.js'), + groupdb = require('../groupdb.js'), + GroupError = groups.GroupError; + +function setup(done) { + // ensure data/config/mount paths + database.initialize(function (error) { + expect(error).to.be(null); + + done(); + }); +} + +function cleanup(done) { + database._clear(done); +} + +describe('Groups', function () { + before(setup); + after(cleanup); + + it('cannot create group - too small', function (done) { + groups.create('a', function (error) { + expect(error.reason).to.be(GroupError.BAD_NAME); + done(); + }); + }); + + it('cannot create group - too big', function (done) { + groups.create(Array(256).join('a'), function (error) { + expect(error.reason).to.be(GroupError.BAD_NAME); + done(); + }); + }); + + it('can create valid group', function (done) { + groups.create('administrators', function (error) { + expect(error).to.be(null); + done(); + }); + }); +});