public void ContentEditorControllerTests_Sort_Invalidated() { //Arrange var parentEntity = CreateEntityRevision(new RegexPropertyEditor()); var subEntity1 = CreateEntityRevision(new RegexPropertyEditor()); var subEntity2 = CreateEntityRevision(new RegexPropertyEditor()); var subEntity3 = CreateEntityRevision(new RegexPropertyEditor()); //setup the relations using (var writer = UmbracoApplicationContext.Hive.OpenWriter<IContentStore>()) { writer.Repositories.AddRelation(parentEntity.Item, subEntity1.Item, FixedRelationTypes.DefaultRelationType, 0); writer.Repositories.AddRelation(parentEntity.Item, subEntity2.Item, FixedRelationTypes.DefaultRelationType, 0); writer.Repositories.AddRelation(parentEntity.Item, subEntity3.Item, FixedRelationTypes.DefaultRelationType, 0); writer.Complete(); } //var controller = new ContentEditorController(GetBackOfficeRequestContext()); var controller = new SortController(GetBackOfficeRequestContext()); controller.InjectDependencies(new Dictionary<string, string>(), new Dictionary<string, string>(), GetBackOfficeRequestContext()); //Act //a model not containing any of the id's or sort indexes var result = controller.SortForm(new SortModel()); var model = new BendyObject(result.Data); //Assert dynamic check = model.AsDynamic(); Assert.AreEqual("ValidationError", check.failureType); Assert.AreEqual("false", check.success); }
public void ContentEditorControllerTest_Actions_Secured_By_Permissions() { //Arrange var backOfficeRequestContext = GetBackOfficeRequestContext(); var controller = new ContentEditorController(backOfficeRequestContext); controller.InjectDependencies(GetBackOfficeRequestContext()); //TODO: There may be a better way of automatically getting a single controller variable using the controller extenders, //but likely that's just testing the action invoker, so for now here's the individual controllers var copyController = new MoveCopyController(backOfficeRequestContext); copyController.InjectDependencies(GetBackOfficeRequestContext()); var sortController = new SortController(backOfficeRequestContext); sortController.InjectDependencies(GetBackOfficeRequestContext()); var publishController = new PublishController(backOfficeRequestContext); publishController.InjectDependencies(GetBackOfficeRequestContext()); var hos = new HostnameController(backOfficeRequestContext); hos.InjectDependencies(GetBackOfficeRequestContext()); var rollback = new RollbackController(backOfficeRequestContext); rollback.InjectDependencies(GetBackOfficeRequestContext()); var permissions = new PermissionsController(backOfficeRequestContext); permissions.InjectDependencies(GetBackOfficeRequestContext()); //Assert Assert.IsTrue(ActionIsSecuredByPermission(controller, "CreateNew", FixedPermissionIds.Create)); Assert.IsTrue(ActionIsSecuredByPermission(controller, "Edit", FixedPermissionIds.Update)); Assert.IsTrue(ActionIsSecuredByPermission(controller, "Delete", FixedPermissionIds.Delete)); Assert.IsTrue(ActionIsSecuredByPermission(copyController, "Copy", FixedPermissionIds.Copy)); Assert.IsTrue(ActionIsSecuredByPermission(copyController, "Move", FixedPermissionIds.Move)); Assert.IsTrue(ActionIsSecuredByPermission(sortController, "Sort", FixedPermissionIds.Sort)); Assert.IsTrue(ActionIsSecuredByPermission(publishController, "Publish", FixedPermissionIds.Publish)); Assert.IsTrue(ActionIsSecuredByPermission(permissions, "Permissions", FixedPermissionIds.Permissions)); Assert.IsTrue(ActionIsSecuredByPermission(rollback, "Rollback", FixedPermissionIds.Rollback)); // TODO: (APN @ Matt) the assertion for action name doesn't take into account two methods with the same name // but differing parameter counts, so this one fails // NOTE: (MPB) Have renamed post action to HostnameForm to get test passing for now, not sure if that is enough // or whether assertion method should allow you to query for a specific method signature? Assert.IsTrue(ActionIsSecuredByPermission(hos, "Hostname", FixedPermissionIds.Hostnames)); }
public void ContentEditorControllerTests_Sort_Success() { //Arrange var parentEntity = CreateEntityRevision(new RegexPropertyEditor()); var subEntity1 = CreateEntityRevision(new RegexPropertyEditor()); var subEntity2 = CreateEntityRevision(new RegexPropertyEditor()); var subEntity3 = CreateEntityRevision(new RegexPropertyEditor()); //setup the relations using (var writer = UmbracoApplicationContext.Hive.OpenWriter<IContentStore>()) { writer.Repositories.AddRelation(parentEntity.Item, subEntity1.Item, FixedRelationTypes.DefaultRelationType, 0); writer.Repositories.AddRelation(parentEntity.Item, subEntity2.Item, FixedRelationTypes.DefaultRelationType, 0); writer.Repositories.AddRelation(parentEntity.Item, subEntity3.Item, FixedRelationTypes.DefaultRelationType, 0); writer.Complete(); } var controller = new SortController(GetBackOfficeRequestContext()); controller.InjectDependencies(new Dictionary<string, string>(), new Dictionary<string, string>(), GetBackOfficeRequestContext(), false); //Act //a model not containing any of the id's or sort indexes var result = controller.SortForm(new SortModel { ParentId = parentEntity.Item.Id, Items = new[] { new SortItem {Id = subEntity1.Item.Id, SortIndex = 2}, new SortItem {Id = subEntity2.Item.Id, SortIndex = 1}, new SortItem {Id = subEntity3.Item.Id, SortIndex = 0}, } }) as CustomJsonResult; //Assert Assert.IsNotNull(result); var json = JObject.Parse(result.OutputJson()); Assert.AreEqual(true, json["success"].Value<bool>()); using (var uow = UmbracoApplicationContext.Hive.OpenReader<IContentStore>()) { var children = uow.Repositories.GetChildRelations(parentEntity.Item, FixedRelationTypes.DefaultRelationType).ToArray(); Assert.That(children.Length, Is.EqualTo(3)); Assert.AreEqual(0, children.Where(x => x.DestinationId == subEntity3.Item.Id).Single().Ordinal); Assert.AreEqual(1, children.Where(x => x.DestinationId == subEntity2.Item.Id).Single().Ordinal); Assert.AreEqual(2, children.Where(x => x.DestinationId == subEntity1.Item.Id).Single().Ordinal); } }