Example #1
0
 public void Setup() {
     _userMock = new Mock<IUserBL>();
     _licenseBLMock = new Mock<ILicenseBL>();
     _userContext = new MockUserContext();
     _session = new Mock<IDekiDataSession>();
     _seatingBL = new SeatingBL(_userMock.Object, _licenseBLMock.Object, _userContext, _session.Object, LogUtils.CreateLog<SeatingBL>());
 }
 public void Setup()
 {
     _userMock      = new Mock <IUserBL>();
     _licenseBLMock = new Mock <ILicenseBL>();
     _userContext   = new MockUserContext();
     _session       = new Mock <IDekiDataSession>();
     _seatingBL     = new SeatingBL(_userMock.Object, _licenseBLMock.Object, _userContext, _session.Object, LogUtils.CreateLog <SeatingBL>());
 }
 //--- Constructors ---
 public LicenseManager(ILicenseController licenseController, IUserBL userBL, LicenseData licenseData, ILicenseBL licenseBL, IInstanceSettings settings, ISeatingBL seatingBL, LicenseStateTransitionCallback licenseStateTransitionCallback)
 {
     _licenseController = licenseController;
     _userBL            = userBL;
     _licenseData       = licenseData;
     _licenseBL         = licenseBL;
     _settings          = settings;
     _seatingBL         = seatingBL;
     _licenseStateTransitionCallback = licenseStateTransitionCallback;
 }
        public override LicenseData VerifyLicenseData(LicenseData licenseData, ILicenseBL licenseBL, ISeatingBL seatingBL) {
            _log.Debug("verifying license: " + licenseData.LicenseState);

            // load authoritative license from remote
            var license = LicenseDoc;
            var verified = licenseBL.DetermineLicenseState(new LicenseData().WithLicenseDocument(license), true, seatingBL.IsSeatLicensingEnabled(licenseData));
            if(!(new[] { LicenseStateType.COMMERCIAL, LicenseStateType.TRIAL, LicenseStateType.INACTIVE, LicenseStateType.EXPIRED }).Contains(verified.LicenseState)) {
                _log.DebugFormat("license state '{0}' is not allowed for remotely managed instances", verified.LicenseState);
                throw new MindTouchRemoteLicenseFailedException();
            }
            _log.Debug("verified license: " + verified.LicenseState);
            return verified;
        }
Example #5
0
 public virtual LicenseData VerifyLicenseData(LicenseData licenseData, ILicenseBL licenseBL, ISeatingBL seatingBL) {
     if(licenseData.LicenseDoc.IsEmpty) {
         licenseData = licenseData.WithLicenseDocument(LicenseDoc);
     }
     return licenseBL.DetermineLicenseState(licenseData, true, seatingBL.IsSeatLicensingEnabled(licenseData));
 }
 protected virtual void HandleExcessSeats(LicenseData license, ISeatingBL seatingBL, SeatAssignmentInfo seats) {
     _log.WarnFormat("site has {0} assigned seats, but is only licensed for {1} (revoking seats)", seats.Assigned, seats.Allowed);
     seatingBL.RevokeSeats(license);
 }
        //--- Methods ---
        public virtual LicenseData UpdateLicense(XDoc license, LicenseData currentLicense, ILicenseBL licenseBL, ISeatingBL seatingBL) {
            licenseBL.Validate(license);

            // Only site owner of a license can upload a license that has seat licensing enabled.
            seatingBL.ValidateLicenseUpdateUser(license);
            var newLicense = HandleLicenseTransition(license, currentLicense, seatingBL, licenseBL);
            _licenseStoragePlug.At(_wikiId, LICENSE_FILE).Put(license);
            return newLicense;
        }
 public virtual LicenseData VerifyLicenseData(LicenseData licenseData, ILicenseBL licenseBL, ISeatingBL seatingBL) {
     if(licenseData.LicenseDoc.IsEmpty) {
         licenseData = licenseData.WithLicenseDocument(LicenseDoc);
     }
     return licenseBL.DetermineLicenseState(licenseData, true, seatingBL.IsSeatLicensingEnabled(licenseData));
 }
        protected LicenseData HandleLicenseTransition(XDoc licenseDoc, LicenseData currentLicense, ISeatingBL seatingBL, ILicenseBL licenseBL) {
            var seatingEnabledInNewLicense = seatingBL.IsSeatLicensingEnabled(licenseDoc);
            var tempLicense = licenseBL.BuildLicenseData(licenseDoc, true, seatingEnabledInNewLicense);
            var newLicense = licenseBL.ValidateNewLicenseTransition(tempLicense, currentLicense);
            _log.DebugFormat("new license with state '{0}' has passed validation and will be accepted", newLicense.LicenseState);

            // Ensure that all seats are cleared if seat licensing is disabled. 
            // This will allow a known clean seat state if it becomes enabled.
            if(!seatingBL.IsSeatLicensingEnabled(currentLicense)) {

                _log.Debug("old license did not have seat licensing");
                seatingBL.RevokeSeats(currentLicense);
            }

            // Seat licensing
            if(seatingEnabledInNewLicense) {
                var seats = seatingBL.HandleSeatTransition(licenseDoc);
                if(seats.Assigned > seats.Allowed) {
                    HandleExcessSeats(currentLicense, seatingBL, seats);
                }

                // set a seat for the owner
                seatingBL.SetOwnerUserSeat(newLicense);
            } else {
                _log.Debug("new license does not contain seat licensing");

                // Clear the seat state when going to non-seat license
                seatingBL.RevokeSeats(newLicense);
            }
            _log.DebugFormat("transitioned license from '{0}' to '{1}'", currentLicense.LicenseState, newLicense.LicenseState);
            return newLicense;
        }
Example #10
0
        //--- Methods ---
        public virtual LicenseData UpdateLicense(XDoc license, LicenseData currentLicense, ILicenseBL licenseBL, ISeatingBL seatingBL) {
            licenseBL.Validate(license);

            // Only site owner of a license can upload a license that has seat licensing enabled.
            seatingBL.ValidateLicenseUpdateUser(license);
            var newLicense = HandleLicenseTransition(license, currentLicense, seatingBL, licenseBL);
            _licenseStoragePlug.At(_wikiId, LICENSE_FILE).Put(license);
            return newLicense;
        }
Example #11
0
 protected virtual void HandleExcessSeats(LicenseData license, ISeatingBL seatingBL, SeatAssignmentInfo seats) {
     _log.WarnFormat("site has {0} assigned seats, but is only licensed for {1} (revoking seats)", seats.Assigned, seats.Allowed);
     seatingBL.RevokeSeats(license);
 }
Example #12
0
        protected LicenseData HandleLicenseTransition(XDoc licenseDoc, LicenseData currentLicense, ISeatingBL seatingBL, ILicenseBL licenseBL) {
            var seatingEnabledInNewLicense = seatingBL.IsSeatLicensingEnabled(licenseDoc);
            var tempLicense = licenseBL.BuildLicenseData(licenseDoc, true, seatingEnabledInNewLicense);
            var newLicense = licenseBL.ValidateNewLicenseTransition(tempLicense, currentLicense);
            _log.DebugFormat("new license with state '{0}' has passed validation and will be accepted", newLicense.LicenseState);

            // Ensure that all seats are cleared if seat licensing is disabled. 
            // This will allow a known clean seat state if it becomes enabled.
            if(!seatingBL.IsSeatLicensingEnabled(currentLicense)) {

                _log.Debug("old license did not have seat licensing");
                seatingBL.RevokeSeats(currentLicense);
            }

            // Seat licensing
            if(seatingEnabledInNewLicense) {
                var seats = seatingBL.HandleSeatTransition(licenseDoc);
                if(seats.Assigned > seats.Allowed) {
                    HandleExcessSeats(currentLicense, seatingBL, seats);
                }

                // set a seat for the owner
                seatingBL.SetOwnerUserSeat(newLicense);
            } else {
                _log.Debug("new license does not contain seat licensing");

                // Clear the seat state when going to non-seat license
                seatingBL.RevokeSeats(newLicense);
            }
            _log.DebugFormat("transitioned license from '{0}' to '{1}'", currentLicense.LicenseState, newLicense.LicenseState);
            return newLicense;
        }
Example #13
0
 protected override void HandleExcessSeats(LicenseData license, ISeatingBL seatingBL, SeatAssignmentInfo seats) {
     _log.WarnFormat("site '{0}' has {1} assigned seats, but is only licensed for {2} (not revoking)", _wikiId, seats.Assigned, seats.Allowed);
 }
Example #14
0
 //--- Methods ---
 public override LicenseData UpdateLicense(XDoc license, LicenseData currentLicense, ILicenseBL licenseBL, ISeatingBL seatingBL) {
     _log.DebugFormat("updating license from '{1}' to '{0}'", license["@type"].Contents, currentLicense.LicenseState);
     licenseBL.Validate(license);
     return HandleLicenseTransition(license, currentLicense, seatingBL, licenseBL);
 }
Example #15
0
 protected override void HandleExcessSeats(LicenseData license, ISeatingBL seatingBL, SeatAssignmentInfo seats)
 {
     _log.WarnFormat("site '{0}' has {1} assigned seats, but is only licensed for {2} (not revoking)", _wikiId, seats.Assigned, seats.Allowed);
 }
Example #16
0
        public override LicenseData VerifyLicenseData(LicenseData licenseData, ILicenseBL licenseBL, ISeatingBL seatingBL)
        {
            _log.Debug("verifying license: " + licenseData.LicenseState);

            // load authoritative license from remote
            var license  = LicenseDoc;
            var verified = licenseBL.DetermineLicenseState(new LicenseData().WithLicenseDocument(license), true, seatingBL.IsSeatLicensingEnabled(licenseData));

            if (!(new[] { LicenseStateType.COMMERCIAL, LicenseStateType.TRIAL, LicenseStateType.INACTIVE, LicenseStateType.EXPIRED }).Contains(verified.LicenseState))
            {
                _log.DebugFormat("license state '{0}' is not allowed for remotely managed instances", verified.LicenseState);
                throw new MindTouchRemoteLicenseFailedException();
            }
            _log.Debug("verified license: " + verified.LicenseState);
            return(verified);
        }
Example #17
0
 //--- Methods ---
 public override LicenseData UpdateLicense(XDoc license, LicenseData currentLicense, ILicenseBL licenseBL, ISeatingBL seatingBL)
 {
     _log.DebugFormat("updating license from '{1}' to '{0}'", license["@type"].Contents, currentLicense.LicenseState);
     licenseBL.Validate(license);
     return(HandleLicenseTransition(license, currentLicense, seatingBL, licenseBL));
 }
Example #18
0
 //--- Constructors ---
 public LicenseManager(ILicenseController licenseController, IUserBL userBL, LicenseData licenseData, ILicenseBL licenseBL, IInstanceSettings settings, ISeatingBL seatingBL, LicenseStateTransitionCallback licenseStateTransitionCallback) {
     _licenseController = licenseController;
     _userBL = userBL;
     _licenseData = licenseData;
     _licenseBL = licenseBL;
     _settings = settings;
     _seatingBL = seatingBL;
     _licenseStateTransitionCallback = licenseStateTransitionCallback;
 }