mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Added unit tests on CommonAspect.Owner validation
This commit is contained in:
@@ -6,13 +6,18 @@ using JetBrains.Annotations;
|
|||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Orchard.ContentManagement.Aspects;
|
using Orchard.ContentManagement.Aspects;
|
||||||
|
using Orchard.Core.Common;
|
||||||
using Orchard.Core.Common.Handlers;
|
using Orchard.Core.Common.Handlers;
|
||||||
using Orchard.Core.Common.Models;
|
using Orchard.Core.Common.Models;
|
||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.ContentManagement.Records;
|
using Orchard.ContentManagement.Records;
|
||||||
|
using Orchard.Localization;
|
||||||
using Orchard.Security;
|
using Orchard.Security;
|
||||||
using Orchard.Tests.Modules;
|
using Orchard.Tests.Modules;
|
||||||
|
using Orchard.Mvc.ViewModels;
|
||||||
|
using Orchard.Core.Common.ViewModels;
|
||||||
|
using System.Web.Mvc;
|
||||||
|
|
||||||
namespace Orchard.Core.Tests.Common.Providers {
|
namespace Orchard.Core.Tests.Common.Providers {
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
@@ -29,6 +34,7 @@ namespace Orchard.Core.Tests.Common.Providers {
|
|||||||
_authn = new Mock<IAuthenticationService>();
|
_authn = new Mock<IAuthenticationService>();
|
||||||
_authz = new Mock<IAuthorizationService>();
|
_authz = new Mock<IAuthorizationService>();
|
||||||
_membership = new Mock<IMembershipService>();
|
_membership = new Mock<IMembershipService>();
|
||||||
|
|
||||||
builder.RegisterInstance(_authn.Object);
|
builder.RegisterInstance(_authn.Object);
|
||||||
builder.RegisterInstance(_authz.Object);
|
builder.RegisterInstance(_authz.Object);
|
||||||
builder.RegisterInstance(_membership.Object);
|
builder.RegisterInstance(_membership.Object);
|
||||||
@@ -87,7 +93,83 @@ namespace Orchard.Core.Tests.Common.Providers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void PublishingShouldSetPublishUtc() {
|
public void PublishingShouldFailIfOwnerIsUnknown()
|
||||||
|
{
|
||||||
|
var contentManager = _container.Resolve<IContentManager>();
|
||||||
|
var updateModel = new Mock<IUpdateModel>();
|
||||||
|
|
||||||
|
var user = contentManager.New<IUser>("user");
|
||||||
|
_authn.Setup(x => x.GetAuthenticatedUser()).Returns(user);
|
||||||
|
|
||||||
|
var createUtc = _clock.UtcNow;
|
||||||
|
var item = contentManager.Create<ICommonAspect>("test-item", VersionOptions.Draft, init => { });
|
||||||
|
var viewModel = new OwnerEditorViewModel() { Owner = "user" };
|
||||||
|
updateModel.Setup(x => x.TryUpdateModel(viewModel, "", null, null)).Returns(true);
|
||||||
|
contentManager.UpdateEditorModel(item.ContentItem, updateModel.Object);
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdatModelStub : IUpdateModel {
|
||||||
|
|
||||||
|
ModelStateDictionary _modelState = new ModelStateDictionary();
|
||||||
|
|
||||||
|
public ModelStateDictionary ModelErrors
|
||||||
|
{
|
||||||
|
get { return _modelState; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Owner { get; set; }
|
||||||
|
|
||||||
|
public bool TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) where TModel : class {
|
||||||
|
(model as OwnerEditorViewModel).Owner = Owner;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddModelError(string key, LocalizedString errorMessage) {
|
||||||
|
_modelState.AddModelError(key, errorMessage.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void PublishingShouldNotThrowExceptionIfOwnerIsNull()
|
||||||
|
{
|
||||||
|
var contentManager = _container.Resolve<IContentManager>();
|
||||||
|
|
||||||
|
var item = contentManager.Create<ICommonAspect>("test-item", VersionOptions.Draft, init => { });
|
||||||
|
|
||||||
|
var user = contentManager.New<IUser>("user");
|
||||||
|
_authn.Setup(x => x.GetAuthenticatedUser()).Returns(user);
|
||||||
|
_authz.Setup(x => x.TryCheckAccess(Permissions.ChangeOwner, user, item)).Returns(true);
|
||||||
|
|
||||||
|
item.Owner = user;
|
||||||
|
|
||||||
|
var updater = new UpdatModelStub() { Owner = null };
|
||||||
|
|
||||||
|
contentManager.UpdateEditorModel(item.ContentItem, updater);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void PublishingShouldFailIfOwnerIsEmpty()
|
||||||
|
{
|
||||||
|
var contentManager = _container.Resolve<IContentManager>();
|
||||||
|
|
||||||
|
var item = contentManager.Create<ICommonAspect>("test-item", VersionOptions.Draft, init => { });
|
||||||
|
|
||||||
|
var user = contentManager.New<IUser>("user");
|
||||||
|
_authn.Setup(x => x.GetAuthenticatedUser()).Returns(user);
|
||||||
|
_authz.Setup(x => x.TryCheckAccess(Permissions.ChangeOwner, user, item)).Returns(true);
|
||||||
|
|
||||||
|
item.Owner = user;
|
||||||
|
|
||||||
|
var updater = new UpdatModelStub() {Owner = ""};
|
||||||
|
|
||||||
|
contentManager.UpdateEditorModel(item.ContentItem, updater);
|
||||||
|
|
||||||
|
Assert.That(updater.ModelErrors.ContainsKey("CommonAspect.Owner"), Is.True);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void PublishingShouldSetPublishUtc()
|
||||||
|
{
|
||||||
var contentManager = _container.Resolve<IContentManager>();
|
var contentManager = _container.Resolve<IContentManager>();
|
||||||
|
|
||||||
var createUtc = _clock.UtcNow;
|
var createUtc = _clock.UtcNow;
|
||||||
@@ -105,6 +187,7 @@ namespace Orchard.Core.Tests.Common.Providers {
|
|||||||
Assert.That(item.PublishedUtc, Is.EqualTo(publishUtc));
|
Assert.That(item.PublishedUtc, Is.EqualTo(publishUtc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void VersioningItemShouldCreatedAndPublishedUtcValuesPerVersion() {
|
public void VersioningItemShouldCreatedAndPublishedUtcValuesPerVersion() {
|
||||||
var contentManager = _container.Resolve<IContentManager>();
|
var contentManager = _container.Resolve<IContentManager>();
|
||||||
|
Reference in New Issue
Block a user