|
@@ -15,56 +15,56 @@ describe 'AccessTokenEncryptor', ->
|
|
|
@badLabel = "xxxxxx:c7a39310056b694c:jQf+Uh5Den3JREtvc82GW5Q="
|
|
@badLabel = "xxxxxx:c7a39310056b694c:jQf+Uh5Den3JREtvc82GW5Q="
|
|
|
@badKey = "2015.1:d7a39310056b694c:jQf+Uh5Den3JREtvc82GW5Q="
|
|
@badKey = "2015.1:d7a39310056b694c:jQf+Uh5Den3JREtvc82GW5Q="
|
|
|
@badCipherText = "2015.1:c7a39310056b694c:xQf+Uh5Den3JREtvc82GW5Q="
|
|
@badCipherText = "2015.1:c7a39310056b694c:xQf+Uh5Den3JREtvc82GW5Q="
|
|
|
- @requires = requires:
|
|
|
|
|
- "settings-sharelatex":
|
|
|
|
|
- cipherLabel: "2016.1"
|
|
|
|
|
- cipherPasswords:
|
|
|
|
|
- "2016.1": "11111111111111111111111111111111111111"
|
|
|
|
|
- "2015.1": "22222222222222222222222222222222222222"
|
|
|
|
|
- @AccessTokenEncryptor = SandboxedModule.require modulePath, @requires
|
|
|
|
|
|
|
+ @settings =
|
|
|
|
|
+ cipherLabel: "2016.1"
|
|
|
|
|
+ cipherPasswords:
|
|
|
|
|
+ "2016.1": "11111111111111111111111111111111111111"
|
|
|
|
|
+ "2015.1": "22222222222222222222222222222222222222"
|
|
|
|
|
+ AccessTokenEncryptor = SandboxedModule.require modulePath, @requires
|
|
|
|
|
+ @encryptor = new AccessTokenEncryptor(@settings)
|
|
|
|
|
|
|
|
describe "encrypt", ->
|
|
describe "encrypt", ->
|
|
|
it 'should encrypt the object', (done)->
|
|
it 'should encrypt the object', (done)->
|
|
|
- @AccessTokenEncryptor.encryptJson @testObject, (err, encrypted)->
|
|
|
|
|
|
|
+ @encryptor.encryptJson @testObject, (err, encrypted)->
|
|
|
expect(err).to.be.null
|
|
expect(err).to.be.null
|
|
|
encrypted.should.match(/^2016.1:[0-9a-f]+:[a-zA-Z0-9=+\/]+$/)
|
|
encrypted.should.match(/^2016.1:[0-9a-f]+:[a-zA-Z0-9=+\/]+$/)
|
|
|
done()
|
|
done()
|
|
|
|
|
|
|
|
it 'should encrypt the object differently the next time', (done)->
|
|
it 'should encrypt the object differently the next time', (done)->
|
|
|
- @AccessTokenEncryptor.encryptJson @testObject, (err, encrypted1)=>
|
|
|
|
|
- @AccessTokenEncryptor.encryptJson @testObject, (err, encrypted2)=>
|
|
|
|
|
|
|
+ @encryptor.encryptJson @testObject, (err, encrypted1)=>
|
|
|
|
|
+ @encryptor.encryptJson @testObject, (err, encrypted2)=>
|
|
|
encrypted1.should.not.equal(encrypted2)
|
|
encrypted1.should.not.equal(encrypted2)
|
|
|
done()
|
|
done()
|
|
|
|
|
|
|
|
describe "decrypt", ->
|
|
describe "decrypt", ->
|
|
|
it 'should decrypt the string to get the same object', (done)->
|
|
it 'should decrypt the string to get the same object', (done)->
|
|
|
- @AccessTokenEncryptor.encryptJson @testObject, (err, encrypted) =>
|
|
|
|
|
|
|
+ @encryptor.encryptJson @testObject, (err, encrypted) =>
|
|
|
expect(err).to.be.null
|
|
expect(err).to.be.null
|
|
|
- @AccessTokenEncryptor.decryptToJson encrypted, (err, decrypted) =>
|
|
|
|
|
|
|
+ @encryptor.decryptToJson encrypted, (err, decrypted) =>
|
|
|
expect(err).to.be.null
|
|
expect(err).to.be.null
|
|
|
expect(decrypted).to.deep.equal @testObject
|
|
expect(decrypted).to.deep.equal @testObject
|
|
|
done()
|
|
done()
|
|
|
|
|
|
|
|
it 'should decrypt an old string to get the same object', (done)->
|
|
it 'should decrypt an old string to get the same object', (done)->
|
|
|
- @AccessTokenEncryptor.decryptToJson @oldEncrypted, (err, decrypted)=>
|
|
|
|
|
|
|
+ @encryptor.decryptToJson @oldEncrypted, (err, decrypted)=>
|
|
|
expect(err).to.be.null
|
|
expect(err).to.be.null
|
|
|
expect(decrypted).to.deep.equal @testObject
|
|
expect(decrypted).to.deep.equal @testObject
|
|
|
done()
|
|
done()
|
|
|
|
|
|
|
|
it 'should return an error when decrypting an invalid label', (done)->
|
|
it 'should return an error when decrypting an invalid label', (done)->
|
|
|
- @AccessTokenEncryptor.decryptToJson @badLabel, (err, decrypted)->
|
|
|
|
|
|
|
+ @encryptor.decryptToJson @badLabel, (err, decrypted)->
|
|
|
expect(err).to.be.instanceof(Error)
|
|
expect(err).to.be.instanceof(Error)
|
|
|
expect(decrypted).to.be.undefined
|
|
expect(decrypted).to.be.undefined
|
|
|
done()
|
|
done()
|
|
|
|
|
|
|
|
it 'should return an error when decrypting an invalid key', (done)->
|
|
it 'should return an error when decrypting an invalid key', (done)->
|
|
|
- @AccessTokenEncryptor.decryptToJson @badKey, (err, decrypted)->
|
|
|
|
|
|
|
+ @encryptor.decryptToJson @badKey, (err, decrypted)->
|
|
|
expect(err).to.be.instanceof(Error)
|
|
expect(err).to.be.instanceof(Error)
|
|
|
expect(decrypted).to.be.undefined
|
|
expect(decrypted).to.be.undefined
|
|
|
done()
|
|
done()
|
|
|
|
|
|
|
|
it 'should return an error when decrypting an invalid ciphertext',(done)->
|
|
it 'should return an error when decrypting an invalid ciphertext',(done)->
|
|
|
- @AccessTokenEncryptor.decryptToJson @badCipherText, (err, decrypted)->
|
|
|
|
|
|
|
+ @encryptor.decryptToJson @badCipherText, (err, decrypted)->
|
|
|
expect(err).to.be.instanceof(Error)
|
|
expect(err).to.be.instanceof(Error)
|
|
|
expect(decrypted).to.be.undefined
|
|
expect(decrypted).to.be.undefined
|
|
|
done()
|
|
done()
|