Skip to content

Commit

Permalink
added register to auth routes
Browse files Browse the repository at this point in the history
  • Loading branch information
drewjbartlett committed Apr 7, 2017
1 parent ac970ef commit 8c4b2e2
Show file tree
Hide file tree
Showing 5 changed files with 187 additions and 76 deletions.
21 changes: 14 additions & 7 deletions src/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ import { defaultsDeep } from 'lodash';
const authConfig = {
auth: {
routes: {
login : 'login',
logout : 'logout',
auth : 'auth'
login : 'login',
logout : 'logout',
auth : 'auth',
register : 'register'
},

methods: {
login : 'post',
logout : 'post',
auth : 'get'
login : 'post',
logout : 'post',
auth : 'get',
register : 'post'
},

modelPrefix: false
Expand All @@ -28,7 +30,7 @@ class Auth extends Rapid {
super(config);
}

login (credentials) {
login (credentials = {}) {
return this[this.modelPrefix].withParams(credentials)
.withOption('auth', credentials)
.buildRequest(this.config.auth.methods.login, this.config.auth.routes.login);
Expand All @@ -42,6 +44,11 @@ class Auth extends Rapid {
return this[this.modelPrefix].buildRequest(this.config.auth.methods.auth, this.config.auth.routes.auth);
}

register (credentials = {}) {
return this[this.modelPrefix].withParams(credentials)
.buildRequest(this.config.auth.methods.register, this.config.auth.routes.register);
}

get modelPrefix () {
return this.config.auth.modelPrefix ? 'model' : 'any';
}
Expand Down
101 changes: 101 additions & 0 deletions test/auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import test from 'ava';
import Auth from './../src/auth';

var user = new Auth({ modelName: 'user', debug: true });
user.debugger.logEnabled = false;

test('login works', t => {
user.login();
t.is('api/login', user.debugger.data.lastUrl);
});

test('logout works', t => {
user.logout();
t.is('api/logout', user.debugger.data.lastUrl);
});

test('check works', t => {
user.check();
t.is('api/auth', user.debugger.data.lastUrl);
});

test('register works', t => {
user.register();
t.is('api/register', user.debugger.data.lastUrl);
});

var userTwo = new Auth({ modelName: 'User', debug: true, auth: { modelPrefix: true } });
userTwo.debugger.logEnabled = false;

test('modelPrefix works', t => {
userTwo.register();
t.is('api/user/register', userTwo.debugger.data.lastUrl);
});

var userThree = new Auth({
modelName: 'User',
debug: true,
auth: { modelPrefix: true }
});
// user.debugger.logEnabled = false;

test('modelPrefix works', t => {
userThree.register();
t.is('api/user/register', userThree.debugger.data.lastUrl);
});

var userFour = new Auth({
modelName: 'User',
debug: true,
auth: {
routes: {
login : 'login-user',
logout : ['logout', 'user'],
auth : 'authenticate',
register : 'new'
}
}
});
// user.debugger.logEnabled = false;

test('changing routes works', t => {
userFour.login();
t.is('api/login-user', userFour.debugger.data.lastUrl);

userFour.logout();
t.is('api/logout/user', userFour.debugger.data.lastUrl);

userFour.check();
t.is('api/authenticate', userFour.debugger.data.lastUrl);

userFour.register();
t.is('api/new', userFour.debugger.data.lastUrl);
});

var userFive = new Auth({
modelName: 'User',
debug: true,
auth: {
methods: {
login : 'get',
logout : 'delete',
auth : 'get',
register : 'patch'
}
}
});
// user.debugger.logEnabled = false;

test('changing methods works', t => {
userFive.login();
t.is('get', userFive.debugger.data.lastRequest.type);

userFive.logout();
t.is('delete', userFive.debugger.data.lastRequest.type);

userFive.check();
t.is('get', userFive.debugger.data.lastRequest.type);

userFive.register();
t.is('patch', userFive.debugger.data.lastRequest.type);
});
19 changes: 10 additions & 9 deletions test/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,27 @@ class GalleryWrapper extends Rapid {
}

test('extending and creating a wrapper works', t => {
var Wrapper = new GalleryWrapper({
var wrapper = new GalleryWrapper({
globalParameters: {
key: 'YOUR_API_KEY'
},
debug: true
});
wrapper.debugger.logEnabled = false;

Wrapper.tagSearch('orange').json().get();
t.is('https://mysite.com/api/gallery/tagsearch/json?query=orange&key=YOUR_API_KEY', Wrapper.debugger.data.lastUrl);
wrapper.tagSearch('orange').json().get();
t.is('https://mysite.com/api/gallery/tagsearch/json?query=orange&key=YOUR_API_KEY', wrapper.debugger.data.lastUrl);


Wrapper.categorySearch('nature').xml().get();
t.is('https://mysite.com/api/gallery/categorysearch/xml?query=nature&key=YOUR_API_KEY', Wrapper.debugger.data.lastUrl);
wrapper.categorySearch('nature').xml().get();
t.is('https://mysite.com/api/gallery/categorysearch/xml?query=nature&key=YOUR_API_KEY', wrapper.debugger.data.lastUrl);


Wrapper.id(45).taxonomy('tags').json().get();
t.is('https://mysite.com/api/gallery/45/tags/json?key=YOUR_API_KEY', Wrapper.debugger.data.lastUrl);
wrapper.id(45).taxonomy('tags').json().get();
t.is('https://mysite.com/api/gallery/45/tags/json?key=YOUR_API_KEY', wrapper.debugger.data.lastUrl);


Wrapper.id(45).taxonomy('categories').xml().get();
t.is('https://mysite.com/api/gallery/45/categories/xml?key=YOUR_API_KEY', Wrapper.debugger.data.lastUrl);
wrapper.id(45).taxonomy('categories').xml().get();
t.is('https://mysite.com/api/gallery/45/categories/xml?key=YOUR_API_KEY', wrapper.debugger.data.lastUrl);

});
36 changes: 19 additions & 17 deletions test/id.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,41 @@
import test from 'ava';
import Rapid from './../src/rapid';

var Shark = new Rapid({
var shark = new Rapid({
modelName: 'shark',
debug: true
});

shark.debugger.logEnabled = false;

test('works with basic CRUD', t => {

Shark.id(23).find();
t.is('api/shark/23', Shark.debugger.data.lastUrl);
shark.id(23).find();
t.is('api/shark/23', shark.debugger.data.lastUrl);

Shark.id(234).save({});
t.is('api/shark/234/update', Shark.debugger.data.lastUrl);
shark.id(234).save({});
t.is('api/shark/234/update', shark.debugger.data.lastUrl);

Shark.id(456).destroy();
t.is('api/shark/456/destroy', Shark.debugger.data.lastUrl);
shark.id(456).destroy();
t.is('api/shark/456/destroy', shark.debugger.data.lastUrl);

});

test('works with other requests', t => {

Shark.id(23).get();
t.is('api/shark/23', Shark.debugger.data.lastUrl);
shark.id(23).get();
t.is('api/shark/23', shark.debugger.data.lastUrl);

Shark.id(789).get('fish', 'are', 'friends', 'not', 'food');
t.is('api/shark/789/fish/are/friends/not/food', Shark.debugger.data.lastUrl);
shark.id(789).get('fish', 'are', 'friends', 'not', 'food');
t.is('api/shark/789/fish/are/friends/not/food', shark.debugger.data.lastUrl);

Shark.id(23).post('swim');
t.is('api/shark/23/swim', Shark.debugger.data.lastUrl);
shark.id(23).post('swim');
t.is('api/shark/23/swim', shark.debugger.data.lastUrl);

Shark.id(234).delete('eat', 'fish');
t.is('api/shark/234/eat/fish', Shark.debugger.data.lastUrl);
shark.id(234).delete('eat', 'fish');
t.is('api/shark/234/eat/fish', shark.debugger.data.lastUrl);

Shark.id(456).patch();
t.is('api/shark/456', Shark.debugger.data.lastUrl);
shark.id(456).patch();
t.is('api/shark/456', shark.debugger.data.lastUrl);

});
86 changes: 43 additions & 43 deletions test/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,101 +2,101 @@ import test from 'ava';
import sinon from 'sinon';
import Rapid from './../src/rapid';

var Lobster = new Rapid({ debug: true, modelName: 'Lobster', baseURL: 'http://maine.com/ocean/' });
var lobster = new Rapid({ debug: true, modelName: 'Lobster', baseURL: 'http://maine.com/ocean/' });

test('get() works', t => {

Lobster.get('butter');
lobster.get('butter');

t.true((Lobster.debugger.data.lastRequest.type == 'get'));
t.true((lobster.debugger.data.lastRequest.type == 'get'));

t.is('http://maine.com/ocean/lobster/butter', Lobster.debugger.data.lastUrl);
t.is('http://maine.com/ocean/lobster/butter', lobster.debugger.data.lastUrl);

Lobster.collection.get('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', Lobster.debugger.data.lastUrl);
lobster.collection.get('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', lobster.debugger.data.lastUrl);

Lobster.get('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', Lobster.debugger.data.lastUrl);
lobster.get('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', lobster.debugger.data.lastUrl);

});

test('post() works', t => {

Lobster.post('butter');
lobster.post('butter');

t.true((Lobster.debugger.data.lastRequest.type == 'post'));
t.true((lobster.debugger.data.lastRequest.type == 'post'));

t.is('http://maine.com/ocean/lobster/butter', Lobster.debugger.data.lastUrl);
t.is('http://maine.com/ocean/lobster/butter', lobster.debugger.data.lastUrl);

Lobster.collection.post('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', Lobster.debugger.data.lastUrl);
lobster.collection.post('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', lobster.debugger.data.lastUrl);

Lobster.post('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', Lobster.debugger.data.lastUrl);
lobster.post('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', lobster.debugger.data.lastUrl);

});

test('head() works', t => {

Lobster.head('butter');
lobster.head('butter');

t.true((Lobster.debugger.data.lastRequest.type == 'head'));
t.true((lobster.debugger.data.lastRequest.type == 'head'));

t.is('http://maine.com/ocean/lobster/butter', Lobster.debugger.data.lastUrl);
t.is('http://maine.com/ocean/lobster/butter', lobster.debugger.data.lastUrl);

Lobster.collection.head('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', Lobster.debugger.data.lastUrl);
lobster.collection.head('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', lobster.debugger.data.lastUrl);

Lobster.head('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', Lobster.debugger.data.lastUrl);
lobster.head('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', lobster.debugger.data.lastUrl);

});

test('put() works', t => {

Lobster.put('butter');
lobster.put('butter');

t.true((Lobster.debugger.data.lastRequest.type == 'put'));
t.true((lobster.debugger.data.lastRequest.type == 'put'));

t.is('http://maine.com/ocean/lobster/butter', Lobster.debugger.data.lastUrl);
t.is('http://maine.com/ocean/lobster/butter', lobster.debugger.data.lastUrl);

Lobster.collection.put('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', Lobster.debugger.data.lastUrl);
lobster.collection.put('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', lobster.debugger.data.lastUrl);

Lobster.put('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', Lobster.debugger.data.lastUrl);
lobster.put('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', lobster.debugger.data.lastUrl);

});

test('patch() works', t => {

Lobster.patch('butter');
lobster.patch('butter');

t.true((Lobster.debugger.data.lastRequest.type == 'patch'));
t.true((lobster.debugger.data.lastRequest.type == 'patch'));

t.is('http://maine.com/ocean/lobster/butter', Lobster.debugger.data.lastUrl);
t.is('http://maine.com/ocean/lobster/butter', lobster.debugger.data.lastUrl);

Lobster.collection.patch('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', Lobster.debugger.data.lastUrl);
lobster.collection.patch('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', lobster.debugger.data.lastUrl);

Lobster.patch('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', Lobster.debugger.data.lastUrl);
lobster.patch('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', lobster.debugger.data.lastUrl);

});

test('delete() works', t => {

Lobster.delete('butter');
lobster.delete('butter');

t.true((Lobster.debugger.data.lastRequest.type == 'delete'));
t.true((lobster.debugger.data.lastRequest.type == 'delete'));

t.is('http://maine.com/ocean/lobster/butter', Lobster.debugger.data.lastUrl);
t.is('http://maine.com/ocean/lobster/butter', lobster.debugger.data.lastUrl);

Lobster.collection.delete('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', Lobster.debugger.data.lastUrl);
lobster.collection.delete('butter', 'salt');
t.is('http://maine.com/ocean/lobsters/butter/salt', lobster.debugger.data.lastUrl);

Lobster.delete('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', Lobster.debugger.data.lastUrl);
lobster.delete('butter', 'salt', 'crackers');
t.is('http://maine.com/ocean/lobster/butter/salt/crackers', lobster.debugger.data.lastUrl);

});

Expand Down

0 comments on commit 8c4b2e2

Please sign in to comment.