Skip to content

Commit 9141516

Browse files
authored
Merge pull request #34 from solid/delete-email
Delete email record too, reject if not given
2 parents 0393f54 + 4bf8bab commit 9141516

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

src/user-store.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,15 @@ class UserStore {
204204

205205
deleteUser (user) {
206206
let userKey = UserStore.normalizeIdKey(user.id)
207-
208-
return this.backend.del('users', userKey)
207+
var deletedEmail
208+
if (user.email) {
209+
let emailKey = UserStore.normalizeEmailKey(user.email)
210+
deletedEmail = this.backend.del('users-by-email', emailKey)
211+
} else {
212+
deletedEmail = Promise.reject(new Error('No email given'))
213+
}
214+
let deletedUser = this.backend.del('users', userKey)
215+
return Promise.all([deletedEmail, deletedUser])
209216
}
210217

211218
/**

test/unit/user-store-test.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const chai = require('chai')
44
const dirtyChai = require('dirty-chai')
55
chai.use(dirtyChai)
66
const expect = chai.expect
7+
const assert = chai.assert
78
const sinon = require('sinon')
89
const sinonChai = require('sinon-chai')
910
chai.use(sinonChai)
@@ -220,13 +221,33 @@ describe('UserStore', () => {
220221
store = UserStore.from({ path: './db' })
221222
})
222223

223-
it('should call backend.del with normalized user id', () => {
224+
it('should call backend.del with normalized user id and email', () => {
224225
let userId = 'alice.solidtest.space/profile/card#me'
226+
let email = '[email protected]'
225227

226228
store.backend.del = sinon.stub()
227229

228-
store.deleteUser({ id: userId })
229-
expect(store.backend.del).to.have.been.calledWith('users', UserStore.normalizeIdKey(userId))
230+
return store.deleteUser({ id: userId, email: email })
231+
.then(() => {
232+
expect(store.backend.del).to.have.been.calledWith('users', UserStore.normalizeIdKey(userId))
233+
expect(store.backend.del).to.have.been.calledWith('users-by-email', UserStore.normalizeEmailKey(email))
234+
})
235+
})
236+
237+
it('should call backend.del with normalized user id but no email', () => {
238+
let userId = 'alice.solidtest.space/profile/card#me'
239+
240+
store.backend.del = sinon.stub()
241+
242+
return store.deleteUser({ id: userId })
243+
.then(() => {
244+
expect(store.backend.del).to.have.been.calledWith('users', UserStore.normalizeIdKey(userId))
245+
expect(store.backend.del).to.not.have.been.calledWith('users-by-email', UserStore.normalizeEmailKey())
246+
})
247+
.then(
248+
() => Promise.reject(new Error('Expected method to reject.')),
249+
err => assert.instanceOf(err, Error)
250+
)
230251
})
231252
})
232253
})

0 commit comments

Comments
 (0)