SubscriptionDomainAllocatorTests.coffee 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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/SubscriptionDomainAllocator"
  7. expect = require("chai").expect
  8. describe "SubscriptionDomainAllocator", ->
  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. @SubscriptionDomainAllocator = 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 = @SubscriptionDomainAllocator._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 = @SubscriptionDomainAllocator._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 = @SubscriptionDomainAllocator._findDomainLicence "bob@other.edu"
  33. expect(licence).to.not.exist
  34. done(licence)
  35. describe "autoAllocate", ->
  36. beforeEach ->
  37. @email = "bob@somewhere.com"
  38. @SubscriptionDomainAllocator._findDomainLicence = sinon.stub()
  39. it "should call the SubscriptionGroupHandler if there is licence", (done)->
  40. @SubscriptionDomainAllocator._findDomainLicence.returns(@settings.domainLicences[1])
  41. @SubscriptionDomainAllocator.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. @SubscriptionDomainAllocator._findDomainLicence.returns()
  46. @SubscriptionDomainAllocator.autoAllocate {email:@email}, (err)=>
  47. @SubscriptionGroupHandler.addUserToGroup.called.should.equal false
  48. done()