add Profile model
This commit is contained in:
parent
691951a86a
commit
8d53fa82ed
2 changed files with 95 additions and 0 deletions
38
js/models/Profile.js
Normal file
38
js/models/Profile.js
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
'use strict';
|
||||||
|
var preconditions = require('preconditions').singleton();
|
||||||
|
var _ = require('underscore');
|
||||||
|
var log = require('../log');
|
||||||
|
var bitcore = require('bitcore');
|
||||||
|
|
||||||
|
function Profile(opts, storage) {
|
||||||
|
preconditions.checkArgument(opts.email);
|
||||||
|
preconditions.checkArgument(opts.password);
|
||||||
|
preconditions.checkArgument(storage);
|
||||||
|
preconditions.checkArgument(storage.getItem);
|
||||||
|
|
||||||
|
this.email = opts.email;
|
||||||
|
this.password = opts.password;
|
||||||
|
this.hash = bitcore.util.sha256ripe160(this.email + this.password);
|
||||||
|
|
||||||
|
this.extra = opts.extra;
|
||||||
|
};
|
||||||
|
|
||||||
|
Profile.fromObj = function(obj, storage) {
|
||||||
|
return new Profile(obj, storage);
|
||||||
|
};
|
||||||
|
|
||||||
|
Profile.prototype.toObj = function() {
|
||||||
|
return JSON.parse(JSON.stringify(this));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Profile.prototype.store = function(cb) {
|
||||||
|
// TODO
|
||||||
|
return cb();
|
||||||
|
// this.storage.setItem(this.hash, this.toObj());
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = Profile;
|
||||||
|
|
||||||
57
test/test.Profile.js
Normal file
57
test/test.Profile.js
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var chai = chai || require('chai');
|
||||||
|
var should = chai.should();
|
||||||
|
var bitcore = bitcore || require('bitcore');
|
||||||
|
var buffertools = bitcore.buffertools;
|
||||||
|
var Profile = require('../js/models/Profile')
|
||||||
|
var sinon = require('sinon');
|
||||||
|
var FakeStorage = function() {};
|
||||||
|
|
||||||
|
describe('Profile model', function() {
|
||||||
|
var email = 'email@pepe.com';
|
||||||
|
var password = 'iamnotsatoshi';
|
||||||
|
var storage = new FakeStorage();
|
||||||
|
var opts = {
|
||||||
|
email: email,
|
||||||
|
password: password,
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(function() {
|
||||||
|
storage.getItem = sinon.stub();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail create an instance', function() {
|
||||||
|
(function() {
|
||||||
|
new Profile({
|
||||||
|
email: email,
|
||||||
|
}, storage)
|
||||||
|
}).should.throw('Illegal Arg');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create an instance', function() {
|
||||||
|
var p = new Profile({
|
||||||
|
email: email,
|
||||||
|
password: password
|
||||||
|
}, storage);
|
||||||
|
should.exist(p);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#fromObj #toObj round trip', function() {
|
||||||
|
|
||||||
|
var p = new Profile(opts, storage);
|
||||||
|
var p2 = Profile.fromObj(p.toObj(), storage);
|
||||||
|
p2.should.deep.equal(p);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#store', function(done) {
|
||||||
|
var p = new Profile(opts, storage);
|
||||||
|
p.store(function(err) {
|
||||||
|
should.not.exist(err);
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue