public void user_doesnt_have_a_plan_throws_error() { var testUser = new AppUser(new AspNetUser() { Id = Guid.NewGuid().ToString(), BillingOn = DateTime.Now, MyShopifyDomain = "store1.myshopify.com", ShopifyChargeId = 1, Email = "*****@*****.**", PlanId = null, UserName = "******", ShopifyAccessToken = "thetoken" }, false); //mock user caching var userCache = new Mock <IUserCaching>(); userCache.Setup(x => x.GetLoggedOnUser(It.IsAny <bool>())).Returns(Task.FromResult(testUser)); var planReader = new Mock <IPlansReader>(); RequiresPlan obj = new RequiresPlan(userCache.Object, planReader.Object, realSettingsReader, mockLogger.Object, 1, "HasThis", "yes"); var authCtx = _GetMockAuthrizationContext(); var ex = Assert.Throws <Exception>(() => obj.OnAuthorization(authCtx)); userCache.Verify(x => x.GetLoggedOnUser(It.IsAny <bool>()), Times.Exactly(1)); Assert.Equal("Your account is not associated with any valid plan.Contact Support.", ex.Message); }
public void user_has_required_plan_id_x_but_db_doesn_not_have_it_anymore_thorws_error() { //requires plan id 1 and user has 1 but it doesnt exist in the DB anymore var reqPlanId = 1; var testUser = new AppUser(new AspNetUser() { Id = Guid.NewGuid().ToString(), BillingOn = DateTime.Now, MyShopifyDomain = "store1.myshopify.com", ShopifyChargeId = 1, Email = "*****@*****.**", PlanId = reqPlanId, UserName = "******", ShopifyAccessToken = "thetoken" }, false); //mock user caching var userCache = new Mock <IUserCaching>(); userCache.Setup(x => x.GetLoggedOnUser(It.IsAny <bool>())).Returns(Task.FromResult(testUser)); var planReader = new Mock <IPlansReader>(); planReader.Setup(x => x[It.IsAny <int>()]).Returns((PlanAppModel)null); //requires plan id 1 RequiresPlan obj = new RequiresPlan(userCache.Object, planReader.Object, realSettingsReader, mockLogger.Object, reqPlanId, "HasThis", "yes"); var authCtx = _GetMockAuthrizationContext(); var ex = Assert.Throws <Exception>(() => obj.OnAuthorization(authCtx)); Assert.Equal($"Current user '{testUser.MyShopifyDomain}' plan id ='{testUser.PlanId.Value}' is not found in the loaded plans list.", ex.Message); userCache.Verify(x => x.GetLoggedOnUser(It.IsAny <bool>()), Times.Exactly(1)); }
public void user_has_right_plan_wrong_option_value_should_redirect() { var reqPlanId = 1; var optionName = "HasThis"; var optionValue = "Yes"; var testUser = new AppUser(new AspNetUser() { Id = Guid.NewGuid().ToString(), BillingOn = DateTime.Now, MyShopifyDomain = "store1.myshopify.com", ShopifyChargeId = 1, Email = "*****@*****.**", PlanId = reqPlanId, UserName = "******", ShopifyAccessToken = "thetoken" }, false); //mock user caching var userCache = new Mock <IUserCaching>(); userCache.Setup(x => x.GetLoggedOnUser(It.IsAny <bool>())).Returns(Task.FromResult(testUser)); var plan = new PlanAppModel(new Plan() { Id = reqPlanId }); var def = new PlanDefinitionAppModel(new PlanDefinition() { OptionName = optionName, OptionValue = "wrong value", PlanId = plan.Id }); var planReader = new Mock <IPlansReader>(); planReader.Setup(x => x[It.IsAny <int>()]).Returns(plan); planReader.Setup(x => x[It.IsAny <int>(), It.IsAny <string>()]).Returns(def); //requires plan id 1 RequiresPlan obj = new RequiresPlan(userCache.Object, planReader.Object, realSettingsReader, mockLogger.Object, reqPlanId, optionName, optionValue); var authCtx = _GetMockAuthrizationContext(); obj.OnAuthorization(authCtx); userCache.Verify(x => x.GetLoggedOnUser(It.IsAny <bool>()), Times.Exactly(1)); planReader.VerifyAll(); Assert.IsType <RedirectToRouteResult>(authCtx.Result); var route = (RedirectToRouteResult)authCtx.Result; var controller = route.RouteValues["controller"]; var action = route.RouteValues["action"]; Assert.Equal(realSettingsReader.GetAppDashboardControllerName(), controller); Assert.Equal(DASHBOARD_ACTIONS.PlanDoesNotAllow.ToString(), action); }
public void user_has_right_plan_and_option_should_pass() { var reqPlanId = 1; var optionName = "HasThis"; var optionValue = "Yes"; var testUser = new AppUser(new AspNetUser() { Id = Guid.NewGuid().ToString(), BillingOn = DateTime.Now, MyShopifyDomain = "store1.myshopify.com", ShopifyChargeId = 1, Email = "*****@*****.**", PlanId = reqPlanId, UserName = "******", ShopifyAccessToken = "thetoken" }, false); //mock user caching var userCache = new Mock <IUserCaching>(); userCache.Setup(x => x.GetLoggedOnUser(It.IsAny <bool>())).Returns(Task.FromResult(testUser)); var plan = new PlanAppModel(new Plan() { Id = reqPlanId }); var def = new PlanDefinitionAppModel(new PlanDefinition() { OptionName = optionName, OptionValue = optionValue, PlanId = plan.Id }); var planReader = new Mock <IPlansReader>(); planReader.Setup(x => x[It.IsAny <int>()]).Returns(plan); planReader.Setup(x => x[It.IsAny <int>(), It.IsAny <string>()]).Returns(def); //requires plan id 1 RequiresPlan obj = new RequiresPlan(userCache.Object, planReader.Object, realSettingsReader, mockLogger.Object, reqPlanId, optionName, optionValue); var authCtx = _GetMockAuthrizationContext(); obj.OnAuthorization(authCtx); userCache.Verify(x => x.GetLoggedOnUser(It.IsAny <bool>()), Times.Exactly(1)); planReader.VerifyAll(); Assert.Null(authCtx.Result); }
public void user_doesnt_have_required_plan_id_should_redirect() { //requires plan id 1 but user has 5 var testUser = new AppUser(new AspNetUser() { Id = Guid.NewGuid().ToString(), BillingOn = DateTime.Now, MyShopifyDomain = "store1.myshopify.com", ShopifyChargeId = 1, Email = "*****@*****.**", PlanId = 5, UserName = "******", ShopifyAccessToken = "thetoken" }, false); //mock user caching var userCache = new Mock <IUserCaching>(); userCache.Setup(x => x.GetLoggedOnUser(It.IsAny <bool>())).Returns(Task.FromResult(testUser)); var planReader = new Mock <IPlansReader>(); planReader.Setup(x => x[It.IsAny <int>()]).Returns(new PlanAppModel() { IsDev = false }); //requires plan id 1 RequiresPlan obj = new RequiresPlan(userCache.Object, planReader.Object, realSettingsReader, mockLogger.Object, 1, "HasThis", "yes"); var authCtx = _GetMockAuthrizationContext(); obj.OnAuthorization(authCtx); var result = authCtx.Result; userCache.VerifyAll(); Assert.IsType <RedirectToRouteResult>(result); var route = (RedirectToRouteResult)result; var controller = route.RouteValues["controller"]; var action = route.RouteValues["action"]; Assert.Equal(realSettingsReader.GetAppDashboardControllerName(), controller); Assert.Equal(DASHBOARD_ACTIONS.PlanDoesNotAllow.ToString(), action); }