SubscriptionDomainHandlerTests.coffee 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. sinon = require('sinon')
  6. modulePath = path.join __dirname, "../../../../app/js/Features/Subscription/SubscriptionDomainHandler"
  7. expect = require("chai").expect
  8. describe "SubscriptionDomainHandler", ->
  9. beforeEach ->
  10. @adminUser_id = 12345
  11. @settings =
  12. domainLicences: [
  13. {domains:["highcools.site"], adminUser_id:"not this one"}
  14. {domains:["uni.edu", "student.uni.edu"], adminUser_id:@adminUser_id}
  15. ]
  16. @SubscriptionGroupHandler =
  17. addUserToGroup: sinon.stub().callsArg(2)
  18. @SubscriptionDomainHandler = SandboxedModule.require modulePath, requires:
  19. "settings-sharelatex":@settings
  20. "logger-sharelatex": log:->
  21. "./SubscriptionGroupHandler": @SubscriptionGroupHandler
  22. describe "_findDomainLicence", ->
  23. it "should find the domain", (done)->
  24. licence = @SubscriptionDomainHandler._findDomainLicence "bob@uni.edu"
  25. licence.adminUser_id.should.equal @adminUser_id
  26. done()
  27. it "should find one of the other emails in the domain list", (done)->
  28. licence = @SubscriptionDomainHandler._findDomainLicence "sally@student.uni.edu"
  29. licence.adminUser_id.should.equal @adminUser_id
  30. done()
  31. it "should return undefined if no licence matches", (done)->
  32. licence = @SubscriptionDomainHandler._findDomainLicence "bob@other.edu"
  33. expect(licence).to.not.exist
  34. done(licence)
  35. describe "autoAllocate", ->
  36. beforeEach ->
  37. @email = "bob@somewhere.com"
  38. @SubscriptionDomainHandler._findDomainLicence = sinon.stub()
  39. it "should call the SubscriptionGroupHandler if there is licence", (done)->
  40. @SubscriptionDomainHandler._findDomainLicence.returns(@settings.domainLicences[1])
  41. @SubscriptionDomainHandler.autoAllocate {email:@email}, (err)=>
  42. @SubscriptionGroupHandler.addUserToGroup.calledWith(@adminUser_id, @email).should.equal true
  43. done()
  44. it "should not call the SubscriptionGroupHandler if there is no licence", (done)->
  45. @SubscriptionDomainHandler._findDomainLicence.returns()
  46. @SubscriptionDomainHandler.autoAllocate {email:@email}, (err)=>
  47. @SubscriptionGroupHandler.addUserToGroup.called.should.equal false
  48. done()