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