diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml new file mode 100644 index 000000000..8b4518b86 --- /dev/null +++ b/.github/workflows/compile.yml @@ -0,0 +1,33 @@ +name: Compile + +on: + workflow_dispatch: + pull_request: + push: + branches: + - dev + - 1.10.x + +jobs: + compile: + name: Compile + defaults: + run: + shell: pwsh + runs-on: windows-latest + + steps: + - name: Clone repository + uses: actions/checkout@v3.1.0 + + - name: Restore NuGet packages + run: nuget restore src/Orchard.sln + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1.3.1 + + - name: Compile + run: msbuild Orchard.proj /m /t:Compile /p:MvcBuildViews=true /p:TreatWarningsAsErrors=true -WarnAsError + + - name: Test + run: msbuild Orchard.proj /m /t:Test diff --git a/Orchard.proj b/Orchard.proj index 6d43596bd..2537a7fd3 100644 --- a/Orchard.proj +++ b/Orchard.proj @@ -181,7 +181,7 @@ <NUnit Assemblies="@(TestAssemblies)" ToolPath="@(NUnitPackageToolsFolder)" WorkingDirectory="$(CompileFolder)" OutputXmlFile="$(BuildFolder)\Orchard.Tests.xml" ExcludeCategory="longrunning" /> </Target> - <Target Name="Spec" DependsOnTargets="Package-Stage"> + <Target Name="Spec" DependsOnTargets="Compile"> <!-- Running SpecFlow tests --> <CreateItem Include="$(CompileFolder)\*.Specs.*dll"> <Output TaskParameter="Include" ItemName="SpecAssemblies" /> diff --git a/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj b/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj index 5a749f29b..03cc68035 100644 --- a/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj +++ b/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj @@ -138,8 +138,8 @@ <HintPath>..\packages\MySql.Data.6.7.9\lib\net45\MySql.Data.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> - <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> + <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> + <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="Npgsql, Version=2.2.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL"> @@ -191,8 +191,8 @@ <Reference Include="System.Web.Abstractions"> <Private>False</Private> </Reference> - <Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath> + <Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath> <Private>True</Private> </Reference> <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> diff --git a/src/Orchard.Azure/Orchard.Azure.Web/packages.config b/src/Orchard.Azure/Orchard.Azure.Web/packages.config index 7d0615129..bee13f369 100644 --- a/src/Orchard.Azure/Orchard.Azure.Web/packages.config +++ b/src/Orchard.Azure/Orchard.Azure.Web/packages.config @@ -2,7 +2,7 @@ <packages> <package id="Autofac" version="3.5.2" targetFramework="net451" /> <package id="log4net" version="2.0.3" targetFramework="net451" /> - <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net451" /> + <package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net451" /> <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net451" /> <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net451" /> <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net451" /> @@ -11,7 +11,7 @@ <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" targetFramework="net451" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net451" /> <package id="MySql.Data" version="6.7.9" targetFramework="net451" /> - <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" /> + <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net451" /> <package id="Npgsql" version="2.2.3" targetFramework="net451" /> <package id="Orchard.NuGet.Core" version="1.1.0.0" targetFramework="net451" /> <package id="Owin" version="1.0" targetFramework="net451" /> diff --git a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs index c0008ad59..06c1a21ac 100644 --- a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs +++ b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs @@ -177,7 +177,7 @@ namespace Orchard.Core.Tests.Common.Providers { contentManager.UpdateEditor(item.ContentItem, updateModel.Object); } - class UpdatModelStub : IUpdateModel { + class UpdateModelStub : IUpdateModel { ModelStateDictionary _modelState = new ModelStateDictionary(); @@ -215,11 +215,11 @@ namespace Orchard.Core.Tests.Common.Providers { var user = contentManager.New<IUser>("User"); _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); - _authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true); + _authz.Setup(x => x.TryCheckAccess(OwnerEditorPermissions.MayEditContentOwner, user, item)).Returns(true); item.Owner = user; - var updater = new UpdatModelStub() { Owner = null }; + var updater = new UpdateModelStub() { Owner = null }; contentManager.UpdateEditor(item.ContentItem, updater); } @@ -232,11 +232,11 @@ namespace Orchard.Core.Tests.Common.Providers { var user = contentManager.New<IUser>("User"); _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); - _authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true); + _authz.Setup(x => x.TryCheckAccess(OwnerEditorPermissions.MayEditContentOwner, user, item)).Returns(true); item.Owner = user; - var updater = new UpdatModelStub() { Owner = "" }; + var updater = new UpdateModelStub() { Owner = "" }; _container.Resolve<DefaultShapeTableManagerTests.TestShapeProvider>().Discover = b => b.Describe("Parts_Common_Owner_Edit").From(TestFeature()) @@ -255,11 +255,11 @@ namespace Orchard.Core.Tests.Common.Providers { var user = contentManager.New<IUser>("User"); _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); - _authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true); + _authz.Setup(x => x.TryCheckAccess(OwnerEditorPermissions.MayEditContentOwner, user, item)).Returns(true); item.Owner = user; - var updater = new UpdatModelStub() { Owner = "" }; + var updater = new UpdateModelStub() { Owner = "" }; _container.Resolve<DefaultShapeTableManagerTests.TestShapeProvider>().Discover = b => b.Describe("Parts_Common_Owner_Edit").From(TestFeature()) @@ -384,7 +384,7 @@ namespace Orchard.Core.Tests.Common.Providers { _clock.Advance(TimeSpan.FromMinutes(1)); var editUtc = _clock.UtcNow; - var updater = new UpdatModelStub() { Owner = "" }; + var updater = new UpdateModelStub() { Owner = "" }; contentManager.UpdateEditor(item.ContentItem, updater); Assert.That(item.CreatedUtc, Is.EqualTo(createUtc)); diff --git a/src/Orchard.Specs/Bindings/Settings.cs b/src/Orchard.Specs/Bindings/Settings.cs index 607c01ab0..4bd67b750 100644 --- a/src/Orchard.Specs/Bindings/Settings.cs +++ b/src/Orchard.Specs/Bindings/Settings.cs @@ -1,15 +1,7 @@ -using System; -using NUnit.Framework; -using Orchard.ContentManagement; -using Orchard.ContentManagement.Aspects; -using Orchard.Core.Contents; -using Orchard.Data; -using Orchard.Security; -using Orchard.Security.Permissions; +using System.Linq; +using Orchard.Localization.Services; using Orchard.Specs.Hosting.Orchard.Web; using TechTalk.SpecFlow; -using Orchard.Localization.Services; -using System.Linq; namespace Orchard.Specs.Bindings { [Binding] @@ -20,7 +12,7 @@ namespace Orchard.Specs.Bindings { var webApp = Binding<WebAppHosting>(); webApp.Host.Execute(() => { - using ( var environment = MvcApplication.CreateStandaloneEnvironment("Default") ) { + using (var environment = MvcApplication.CreateStandaloneEnvironment("Default")) { var orchardServices = environment.Resolve<IOrchardServices>(); var cultureManager = environment.Resolve<ICultureManager>(); @@ -30,6 +22,11 @@ namespace Orchard.Specs.Bindings { } orchardServices.WorkContext.CurrentSite.SiteCulture = cultureName; + + // Restarting the shell to reset the cache, because the cache entry storing the list of available + // cultures isn't invalidated by the signal in DefaultCultureManager.ListCultures when running + // inside the test webhost. + MvcApplication.RestartTenant("Default"); } }); } diff --git a/src/Orchard.Specs/Bindings/WebAppHosting.cs b/src/Orchard.Specs/Bindings/WebAppHosting.cs index e6790ece3..f8ff9458e 100644 --- a/src/Orchard.Specs/Bindings/WebAppHosting.cs +++ b/src/Orchard.Specs/Bindings/WebAppHosting.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using System.Threading; using System.Web; using Castle.Core.Logging; using HtmlAgilityPack; @@ -364,6 +365,11 @@ namespace Orchard.Specs.Bindings { } } + [When(@"I wait ""(.*)""")] + public void WhenIWait(int waitMilliseconds) { + Thread.Sleep(waitMilliseconds); + } + [Then(@"the status should be (.*) ""(.*)""")] public void ThenTheStatusShouldBe(int statusCode, string statusDescription) { Assert.That(Details.StatusCode, Is.EqualTo(statusCode)); diff --git a/src/Orchard.Specs/Blogs.feature b/src/Orchard.Specs/Blogs.feature index 3b1cfdacc..f693c571d 100644 --- a/src/Orchard.Specs/Blogs.feature +++ b/src/Orchard.Specs/Blogs.feature @@ -171,6 +171,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 1 | @@ -179,6 +180,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 2 | @@ -187,6 +189,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 3 | @@ -195,6 +198,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 4 | @@ -203,6 +207,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 5 | @@ -211,6 +216,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 6 | @@ -219,6 +225,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 7 | @@ -227,6 +234,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 8 | @@ -235,6 +243,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 9 | @@ -243,6 +252,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 10 | @@ -251,6 +261,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 11 | @@ -259,6 +270,7 @@ Scenario: I can create browse blog posts on several pages And I go to "admin/blogs" And I follow "My Blog" And I follow "New Post" where class name has "primaryAction" + And I wait "1000" And I fill in | name | value | | Title.Title | My Post 12 | @@ -269,12 +281,12 @@ Scenario: I can create browse blog posts on several pages Then I should see "<h1[^>]*>.*?My Blog.*?</h1>" And I should see "<h1[^>]*>.*?My Post 12.*?</h1>" And I should see "<h1[^>]*>.*?My Post 11.*?</h1>" - And I should not see "<h1[^>]*>.*?My Post 10.*?</h1>" + And I should not see "My Post 2" When I go to "my-blog?page=2" Then I should see "<h1[^>]*>.*?My Blog.*?</h1>" And I should see "<h1[^>]*>.*?My Post 1.*?</h1>" And I should see "<h1[^>]*>.*?My Post 2.*?</h1>" - And I should not see "<h1[^>]*>.*?My Post 3.*?</h1>" + And I should not see "My Post 3" Scenario: I can create a new blog with a percent sign in the title and it gets stripped out of the slug Given I have installed Orchard diff --git a/src/Orchard.Specs/Blogs.feature.cs b/src/Orchard.Specs/Blogs.feature.cs index 15357d321..6ada69748 100644 --- a/src/Orchard.Specs/Blogs.feature.cs +++ b/src/Orchard.Specs/Blogs.feature.cs @@ -525,6 +525,8 @@ this.ScenarioSetup(scenarioInfo); testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 173 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 174 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table15 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -532,18 +534,20 @@ this.ScenarioSetup(scenarioInfo); table15.AddRow(new string[] { "Title.Title", "My Post 1"}); -#line 174 +#line 175 testRunner.And("I fill in", ((string)(null)), table15, "And "); -#line 177 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 178 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 179 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 180 - testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 181 + testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 182 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 183 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table16 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -551,18 +555,20 @@ this.ScenarioSetup(scenarioInfo); table16.AddRow(new string[] { "Title.Title", "My Post 2"}); -#line 182 +#line 184 testRunner.And("I fill in", ((string)(null)), table16, "And "); -#line 185 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 186 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 187 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 188 - testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 189 + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 190 + testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 191 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 192 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table17 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -570,18 +576,20 @@ this.ScenarioSetup(scenarioInfo); table17.AddRow(new string[] { "Title.Title", "My Post 3"}); -#line 190 - testRunner.And("I fill in", ((string)(null)), table17, "And "); #line 193 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 194 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 195 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I fill in", ((string)(null)), table17, "And "); #line 196 - testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 197 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 198 + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 199 + testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 200 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 201 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table18 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -589,18 +597,20 @@ this.ScenarioSetup(scenarioInfo); table18.AddRow(new string[] { "Title.Title", "My Post 4"}); -#line 198 - testRunner.And("I fill in", ((string)(null)), table18, "And "); -#line 201 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 202 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 203 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 204 - testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I fill in", ((string)(null)), table18, "And "); #line 205 + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 206 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 207 + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 208 + testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 209 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 210 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table19 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -608,18 +618,20 @@ this.ScenarioSetup(scenarioInfo); table19.AddRow(new string[] { "Title.Title", "My Post 5"}); -#line 206 - testRunner.And("I fill in", ((string)(null)), table19, "And "); -#line 209 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 210 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 211 + testRunner.And("I fill in", ((string)(null)), table19, "And "); +#line 214 + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 215 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 216 testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 212 +#line 217 testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 213 +#line 218 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 219 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table20 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -627,18 +639,20 @@ this.ScenarioSetup(scenarioInfo); table20.AddRow(new string[] { "Title.Title", "My Post 6"}); -#line 214 - testRunner.And("I fill in", ((string)(null)), table20, "And "); -#line 217 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 218 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 219 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 220 + testRunner.And("I fill in", ((string)(null)), table20, "And "); +#line 223 + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 224 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 225 + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 226 testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 221 +#line 227 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 228 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table21 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -646,18 +660,20 @@ this.ScenarioSetup(scenarioInfo); table21.AddRow(new string[] { "Title.Title", "My Post 7"}); -#line 222 - testRunner.And("I fill in", ((string)(null)), table21, "And "); -#line 225 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 226 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 227 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 228 - testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 229 + testRunner.And("I fill in", ((string)(null)), table21, "And "); +#line 232 + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 233 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 234 + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 235 + testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 236 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 237 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table22 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -665,27 +681,8 @@ this.ScenarioSetup(scenarioInfo); table22.AddRow(new string[] { "Title.Title", "My Post 8"}); -#line 230 - testRunner.And("I fill in", ((string)(null)), table22, "And "); -#line 233 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 234 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 235 - testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 236 - testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 237 - testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - TechTalk.SpecFlow.Table table23 = new TechTalk.SpecFlow.Table(new string[] { - "name", - "value"}); - table23.AddRow(new string[] { - "Title.Title", - "My Post 9"}); #line 238 - testRunner.And("I fill in", ((string)(null)), table23, "And "); + testRunner.And("I fill in", ((string)(null)), table22, "And "); #line 241 testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 242 @@ -696,6 +693,29 @@ this.ScenarioSetup(scenarioInfo); testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 245 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 246 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + TechTalk.SpecFlow.Table table23 = new TechTalk.SpecFlow.Table(new string[] { + "name", + "value"}); + table23.AddRow(new string[] { + "Title.Title", + "My Post 9"}); +#line 247 + testRunner.And("I fill in", ((string)(null)), table23, "And "); +#line 250 + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 251 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 252 + testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 253 + testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 254 + testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 255 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table24 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -703,18 +723,20 @@ this.ScenarioSetup(scenarioInfo); table24.AddRow(new string[] { "Title.Title", "My Post 10"}); -#line 246 +#line 256 testRunner.And("I fill in", ((string)(null)), table24, "And "); -#line 249 +#line 259 testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 250 +#line 260 testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 251 +#line 261 testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 252 +#line 262 testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 253 +#line 263 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 264 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table25 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -722,18 +744,20 @@ this.ScenarioSetup(scenarioInfo); table25.AddRow(new string[] { "Title.Title", "My Post 11"}); -#line 254 +#line 265 testRunner.And("I fill in", ((string)(null)), table25, "And "); -#line 257 +#line 268 testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 258 +#line 269 testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 259 +#line 270 testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 260 +#line 271 testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 261 +#line 272 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 273 + testRunner.And("I wait \"1000\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table26 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -741,34 +765,34 @@ this.ScenarioSetup(scenarioInfo); table26.AddRow(new string[] { "Title.Title", "My Post 12"}); -#line 262 - testRunner.And("I fill in", ((string)(null)), table26, "And "); -#line 265 - testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 266 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 267 - testRunner.Then("I should see \"Your Blog Post has been created.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 268 - testRunner.When("I go to \"my-blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 269 - testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 270 - testRunner.And("I should see \"<h1[^>]*>.*?My Post 12.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 271 - testRunner.And("I should see \"<h1[^>]*>.*?My Post 11.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 272 - testRunner.And("I should not see \"<h1[^>]*>.*?My Post 10.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 273 - testRunner.When("I go to \"my-blog?page=2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line 274 - testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 275 - testRunner.And("I should see \"<h1[^>]*>.*?My Post 1.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 276 - testRunner.And("I should see \"<h1[^>]*>.*?My Post 2.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I fill in", ((string)(null)), table26, "And "); #line 277 - testRunner.And("I should not see \"<h1[^>]*>.*?My Post 3.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 278 + testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 279 + testRunner.Then("I should see \"Your Blog Post has been created.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 280 + testRunner.When("I go to \"my-blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 281 + testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 282 + testRunner.And("I should see \"<h1[^>]*>.*?My Post 12.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 283 + testRunner.And("I should see \"<h1[^>]*>.*?My Post 11.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 284 + testRunner.And("I should not see \"My Post 2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 285 + testRunner.When("I go to \"my-blog?page=2\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 286 + testRunner.Then("I should see \"<h1[^>]*>.*?My Blog.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 287 + testRunner.And("I should see \"<h1[^>]*>.*?My Post 1.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 288 + testRunner.And("I should see \"<h1[^>]*>.*?My Post 2.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 289 + testRunner.And("I should not see \"My Post 3\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden this.ScenarioCleanup(); } @@ -780,11 +804,11 @@ this.ScenarioSetup(scenarioInfo); { TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("I can create a new blog with a percent sign in the title and it gets stripped out" + " of the slug", ((string[])(null))); -#line 279 +#line 291 this.ScenarioSetup(scenarioInfo); -#line 280 +#line 292 testRunner.Given("I have installed Orchard", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line 281 +#line 293 testRunner.When("I go to \"admin/blogs/create\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden TechTalk.SpecFlow.Table table27 = new TechTalk.SpecFlow.Table(new string[] { @@ -793,15 +817,15 @@ this.ScenarioSetup(scenarioInfo); table27.AddRow(new string[] { "Title.Title", "My Blog"}); -#line 282 +#line 294 testRunner.And("I fill in", ((string)(null)), table27, "And "); -#line 285 +#line 297 testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 286 +#line 298 testRunner.And("I go to \"admin/blogs\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 287 +#line 299 testRunner.And("I follow \"My Blog\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 288 +#line 300 testRunner.And("I follow \"New Post\" where class name has \"primaryAction\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden TechTalk.SpecFlow.Table table28 = new TechTalk.SpecFlow.Table(new string[] { @@ -813,15 +837,15 @@ this.ScenarioSetup(scenarioInfo); table28.AddRow(new string[] { "Body.Text", "Hi there."}); -#line 289 +#line 301 testRunner.And("I fill in", ((string)(null)), table28, "And "); -#line 293 +#line 305 testRunner.And("I hit \"Publish Now\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 294 +#line 306 testRunner.And("I go to \"my-blog/my-post-with-a-sign\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 295 +#line 307 testRunner.Then("I should see \"<h1[^>]*>.*?My Post with a % Sign.*?</h1>\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 296 +#line 308 testRunner.And("I should see \"Hi there.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden this.ScenarioCleanup(); diff --git a/src/Orchard.Specs/DateTime.feature b/src/Orchard.Specs/DateTime.feature index f925977ed..a93363993 100644 --- a/src/Orchard.Specs/DateTime.feature +++ b/src/Orchard.Specs/DateTime.feature @@ -173,7 +173,7 @@ Scenario: Creating and using date time fields in another culture And I go to "Admin/ContentTypes/" Then I should see "Event" - # Adding a Date field + # Adding a Date field and changing its settings When I go to "Admin/ContentTypes/Edit/Event" And I follow "Add Field" And I fill in @@ -184,15 +184,15 @@ Scenario: Creating and using date time fields in another culture And I hit "Save" And I am redirected Then I should see "The \"Date of the event\" field has been added." - - # Date & Time are inputted based on current culture - When I have "fr-FR" as the default culture - And I go to "Admin/ContentTypes/Edit/Event" + When I go to "Admin/ContentTypes/Edit/Event" And I fill in | name | value | | Fields[EventDate].DateTimeFieldSettings.Display | DateAndTime | | Fields[EventDate].DateTimeFieldSettings.Required | true | And I hit "Save" + + # Date & Time are validated based on current culture + When I have "fr-FR" as the default culture When I go to "Admin/Contents/Create/Event" And I fill in | name | value | diff --git a/src/Orchard.Specs/DateTime.feature.cs b/src/Orchard.Specs/DateTime.feature.cs index 2efc6aa89..267a106c7 100644 --- a/src/Orchard.Specs/DateTime.feature.cs +++ b/src/Orchard.Specs/DateTime.feature.cs @@ -452,10 +452,8 @@ this.ScenarioSetup(scenarioInfo); testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 186 testRunner.Then("I should see \"The \\\"Date of the event\\\" field has been added.\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 189 - testRunner.When("I have \"fr-FR\" as the default culture", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 190 - testRunner.And("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 187 + testRunner.When("I go to \"Admin/ContentTypes/Edit/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden TechTalk.SpecFlow.Table table18 = new TechTalk.SpecFlow.Table(new string[] { "name", @@ -466,10 +464,12 @@ this.ScenarioSetup(scenarioInfo); table18.AddRow(new string[] { "Fields[EventDate].DateTimeFieldSettings.Required", "true"}); -#line 191 +#line 188 testRunner.And("I fill in", ((string)(null)), table18, "And "); -#line 195 +#line 192 testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 195 + testRunner.When("I have \"fr-FR\" as the default culture", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line 196 testRunner.When("I go to \"Admin/Contents/Create/Event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden diff --git a/src/Orchard.Specs/Hosting/Orchard.Web/Global.asax.cs b/src/Orchard.Specs/Hosting/Orchard.Web/Global.asax.cs index f98e7cf48..b74924eed 100644 --- a/src/Orchard.Specs/Hosting/Orchard.Web/Global.asax.cs +++ b/src/Orchard.Specs/Hosting/Orchard.Web/Global.asax.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Web; +using System.Web.Helpers; using System.Web.Mvc; using System.Web.Routing; using Autofac; @@ -16,6 +17,7 @@ namespace Orchard.Specs.Hosting.Orchard.Web { } protected void Application_Start() { + AntiForgeryConfig.SuppressXFrameOptionsHeader = true; RegisterRoutes(RouteTable.Routes); _container = OrchardStarter.CreateHostContainer(MvcSingletons); _host = _container.Resolve<IOrchardHost>(); @@ -29,6 +31,7 @@ namespace Orchard.Specs.Hosting.Orchard.Web { protected void Application_BeginRequest() { Context.Items["originalHttpContext"] = Context; + HttpContext.Current.Response.AddHeader("X-Frame-Options", "SAMEORIGIN"); _host.BeginRequest(); } @@ -66,7 +69,7 @@ namespace Orchard.Specs.Hosting.Orchard.Web { State = TenantState.Uninitialized }; } - + return _host.CreateStandaloneEnvironment(settings); } } diff --git a/src/Orchard.Specs/Hosting/Orchard.Web/Web.config b/src/Orchard.Specs/Hosting/Orchard.Web/Web.config index 1319a3e7b..8ba9b717a 100644 --- a/src/Orchard.Specs/Hosting/Orchard.Web/Web.config +++ b/src/Orchard.Specs/Hosting/Orchard.Web/Web.config @@ -141,4 +141,22 @@ <mimeMap fileExtension=".woff2" mimeType="font/woff2" /> </staticContent> </system.webServer> + <runtime> + <gcServer enabled="true" /> + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> + <probing privatePath="App_Data/Dependencies" /> + <dependentAssembly> + <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> + </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.1.0.4000" newVersion="4.1.0.4000" /> + </dependentAssembly> + </assemblyBinding> + </runtime> </configuration> diff --git a/src/Orchard.Specs/Media.feature b/src/Orchard.Specs/Media.feature index 4f4b6dfb7..2696dbfba 100644 --- a/src/Orchard.Specs/Media.feature +++ b/src/Orchard.Specs/Media.feature @@ -1,31 +1,13 @@ Feature: Media management In order to reference images and such from content As an author - I want to upload and manage files in a media folder + I want to access the Media Library Scenario: Media admin is available Given I have installed Orchard - And I have installed "Orchard.Media" + And I have installed "Orchard.MediaLibrary" - # Accessing the media page - When I go to "admin/media" - Then I should see "Media" - And the status should be 200 "OK" - - # Creating a folder - When I go to "admin/media/create" - And I fill in - | name | value | - | Name | Hello World | - And I hit "Save" - And I am redirected - Then I should see "Media" - And I should see "Hello World" - And the status should be 200 "OK" - - # Editing a media with limited rights - When I go to "admin/media/edit?name=..\..\bin&mediaPath=..\..\bin" - And I am redirected - Then I should see "Media" - And I should see "Editing failed: Invalid path" - And the status should be 200 "OK" + # Accessing the Media Library page + When I go to "Admin/Orchard.MediaLibrary" + Then I should see "Media Library" + And the status should be 200 "OK" diff --git a/src/Orchard.Specs/Media.feature.cs b/src/Orchard.Specs/Media.feature.cs index 55efb6a0a..798b7a9b2 100644 --- a/src/Orchard.Specs/Media.feature.cs +++ b/src/Orchard.Specs/Media.feature.cs @@ -33,7 +33,7 @@ namespace Orchard.Specs { testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Media management", " In order to reference images and such from content\r\n As an author\r\n I want to" + - " upload and manage files in a media folder", ProgrammingLanguage.CSharp, ((string[])(null))); + " access the Media Library", ProgrammingLanguage.CSharp, ((string[])(null))); testRunner.OnFeatureStart(featureInfo); } @@ -75,44 +75,13 @@ this.ScenarioSetup(scenarioInfo); #line 7 testRunner.Given("I have installed Orchard", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given "); #line 8 - testRunner.And("I have installed \"Orchard.Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("I have installed \"Orchard.MediaLibrary\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line 11 - testRunner.When("I go to \"admin/media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + testRunner.When("I go to \"Admin/Orchard.MediaLibrary\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line 12 - testRunner.Then("I should see \"Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); + testRunner.Then("I should see \"Media Library\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line 13 - testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 16 - testRunner.When("I go to \"admin/media/create\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden - TechTalk.SpecFlow.Table table1 = new TechTalk.SpecFlow.Table(new string[] { - "name", - "value"}); - table1.AddRow(new string[] { - "Name", - "Hello World"}); -#line 17 - testRunner.And("I fill in", ((string)(null)), table1, "And "); -#line 20 - testRunner.And("I hit \"Save\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 21 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 22 - testRunner.Then("I should see \"Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 23 - testRunner.And("I should see \"Hello World\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 24 - testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 27 - testRunner.When("I go to \"admin/media/edit?name=..\\..\\bin&mediaPath=..\\..\\bin\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line 28 - testRunner.And("I am redirected", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 29 - testRunner.Then("I should see \"Media\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line 30 - testRunner.And("I should see \"Editing failed: Invalid path\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); -#line 31 - testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("the status should be 200 \"OK\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden this.ScenarioCleanup(); } diff --git a/src/Orchard.Specs/Orchard.Specs.csproj b/src/Orchard.Specs/Orchard.Specs.csproj index 787f44c65..9eada9333 100644 --- a/src/Orchard.Specs/Orchard.Specs.csproj +++ b/src/Orchard.Specs/Orchard.Specs.csproj @@ -535,4 +535,4 @@ <Target Name="AfterBuild"> </Target> --> -</Project> +</Project> \ No newline at end of file diff --git a/src/Orchard.Tests.Modules/Recipes/Services/RecipeManagerTests.cs b/src/Orchard.Tests.Modules/Recipes/Services/RecipeManagerTests.cs index 9ead3ec3a..6510fe3b6 100644 --- a/src/Orchard.Tests.Modules/Recipes/Services/RecipeManagerTests.cs +++ b/src/Orchard.Tests.Modules/Recipes/Services/RecipeManagerTests.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Configuration; using System.IO; using System.Linq; using System.Xml; @@ -14,6 +13,7 @@ using Orchard.Environment.Extensions.Folders; using Orchard.Environment.Extensions.Loaders; using Orchard.FileSystems.AppData; using Orchard.FileSystems.WebSite; +using Orchard.Mvc; using Orchard.Recipes.Events; using Orchard.Recipes.Models; using Orchard.Recipes.Services; @@ -93,6 +93,7 @@ namespace Orchard.Tests.Modules.Recipes.Services { builder.RegisterType<RecipeParser>().As<IRecipeParser>(); builder.RegisterType<StubWebSiteFolder>().As<IWebSiteFolder>(); builder.RegisterType<CustomRecipeHandler>().As<IRecipeHandler>(); + builder.RegisterType<StubHttpContextAccessor>().As<IHttpContextAccessor>(); } public override void Init() { diff --git a/src/Orchard.Tests/Localization/CurrentCultureWorkContextTests.cs b/src/Orchard.Tests/Localization/CurrentCultureWorkContextTests.cs index 7cb8741f9..db14dc7ca 100644 --- a/src/Orchard.Tests/Localization/CurrentCultureWorkContextTests.cs +++ b/src/Orchard.Tests/Localization/CurrentCultureWorkContextTests.cs @@ -1,7 +1,13 @@ -using Autofac; +using System.IO; +using Autofac; +using NHibernate; using NUnit.Framework; +using Orchard.Caching; +using Orchard.Data; +using Orchard.Localization.Records; using Orchard.Localization.Services; using Orchard.Mvc; +using Orchard.Tests.ContentManagement; using Orchard.Tests.Stubs; namespace Orchard.Tests.Localization { @@ -10,25 +16,56 @@ namespace Orchard.Tests.Localization { private IContainer _container; private IWorkContextStateProvider _currentCultureStateProvider; private WorkContext _workContext; + private ISessionFactory _sessionFactory; + private ISession _session; + private string _databaseFileName; + private const string _testCulture = "fr-CA"; + + [TestFixtureSetUp] + public void InitFixture() { + _databaseFileName = Path.GetTempFileName(); + _sessionFactory = DataUtility.CreateSessionFactory( + _databaseFileName, + typeof(CultureRecord)); + } [SetUp] public void Init() { + _session = _sessionFactory.OpenSession(); + var builder = new ContainerBuilder(); _workContext = new StubWorkContext(); - builder.RegisterInstance(new StubCultureSelector("fr-CA")).As<ICultureSelector>(); + builder.RegisterInstance(new StubCultureSelector(_testCulture)).As<ICultureSelector>(); builder.RegisterInstance(new StubHttpContext("~/")); builder.RegisterInstance(_workContext); builder.RegisterType<StubHttpContextAccessor>().As<IHttpContextAccessor>(); builder.RegisterType<CurrentCultureWorkContext>().As<IWorkContextStateProvider>(); + builder.RegisterType<DefaultCultureManager>().As<ICultureManager>(); + builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)); + builder.RegisterType<Signals>().As<ISignals>().SingleInstance(); + builder.RegisterType<StubWorkContextAccessor>().As<IWorkContextAccessor>(); + builder.RegisterType<StubCacheManager>().As<ICacheManager>(); + _session = _sessionFactory.OpenSession(); + builder.RegisterInstance(new TestTransactionManager(_session)).As<ITransactionManager>(); _container = builder.Build(); _currentCultureStateProvider = _container.Resolve<IWorkContextStateProvider>(); + _container.Resolve<ICultureManager>().AddCulture(_testCulture); + } + + [TearDown] + public void Term() { + _session.Close(); + } + + [TestFixtureTearDown] + public void TermFixture() { + File.Delete(_databaseFileName); } [Test] public void CultureManagerReturnsCultureFromSelectors() { var actualCulture = _currentCultureStateProvider.Get<string>("CurrentCulture")(_workContext); - var expectedCulture = "fr-CA"; - Assert.That(actualCulture, Is.EqualTo(expectedCulture)); + Assert.That(actualCulture, Is.EqualTo(_testCulture)); } } } \ No newline at end of file diff --git a/src/Orchard.Tests/Localization/DefaultDateFormatterTests.cs b/src/Orchard.Tests/Localization/DefaultDateFormatterTests.cs index a2135f09c..9a5cf113d 100644 --- a/src/Orchard.Tests/Localization/DefaultDateFormatterTests.cs +++ b/src/Orchard.Tests/Localization/DefaultDateFormatterTests.cs @@ -13,7 +13,7 @@ using Orchard.Localization.Services; namespace Orchard.Tests.Localization { [TestFixture()] - [Category("longrunning")] + [Category("longrunning")] public class DefaultDateFormatterTests { [SetUp] diff --git a/src/Orchard.Tests/Orchard.Framework.Tests.csproj b/src/Orchard.Tests/Orchard.Framework.Tests.csproj index 1449ee13c..0758a2d8b 100644 --- a/src/Orchard.Tests/Orchard.Framework.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Framework.Tests.csproj @@ -133,7 +133,7 @@ <HintPath>..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="System.Net.Http" /> + <Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath> </Reference> diff --git a/src/Orchard.Tests/Storage/FileSystemStorageProviderTests.cs b/src/Orchard.Tests/Storage/FileSystemStorageProviderTests.cs index 80885263e..1d4250ed6 100644 --- a/src/Orchard.Tests/Storage/FileSystemStorageProviderTests.cs +++ b/src/Orchard.Tests/Storage/FileSystemStorageProviderTests.cs @@ -1,10 +1,9 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using NUnit.Framework; -using System; -using Orchard.Environment; using Orchard.Environment.Configuration; using Orchard.FileSystems.Media; @@ -215,8 +214,8 @@ namespace Orchard.Tests.Storage { [Test] public void GetFileFailsInInvalidPath() { - Assert.That(() => _storageProvider.GetFile(@"../InvalidFile.txt"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.GetFile(@"../../InvalidFile.txt"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.GetFile(@"../InvalidFile.txt"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.GetFile(@"../../InvalidFile.txt"), Throws.InstanceOf(typeof(OrchardException))); // Valid get one level up within the storage provider domain _storageProvider.CreateFile(@"test.txt"); @@ -226,8 +225,8 @@ namespace Orchard.Tests.Storage { [Test] public void ListFilesFailsInInvalidPath() { - Assert.That(() => _storageProvider.ListFiles(@"../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.ListFiles(@"../../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.ListFiles(@"../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.ListFiles(@"../../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException))); // Valid get one level up within the storage provider domain Assert.That(_storageProvider.ListFiles(@"SubFolder1"), Is.Not.Null); @@ -236,8 +235,8 @@ namespace Orchard.Tests.Storage { [Test] public void ListFoldersFailsInInvalidPath() { - Assert.That(() => _storageProvider.ListFolders(@"../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.ListFolders(@"../../InvalidFolder"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.ListFolders(@"../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.ListFolders(@"../../InvalidFolder"), Throws.InstanceOf(typeof(OrchardException))); // Valid get one level up within the storage provider domain Assert.That(_storageProvider.ListFolders(@"SubFolder1"), Is.Not.Null); @@ -255,8 +254,8 @@ namespace Orchard.Tests.Storage { [Test] public void CreateFolderFailsInInvalidPath() { - Assert.That(() => _storageProvider.CreateFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.CreateFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.CreateFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.CreateFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException))); // Valid create one level up within the storage provider domain _storageProvider.CreateFolder(@"SubFolder1\..\ValidFolder1"); @@ -265,8 +264,8 @@ namespace Orchard.Tests.Storage { [Test] public void DeleteFolderFailsInInvalidPath() { - Assert.That(() => _storageProvider.DeleteFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.DeleteFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.DeleteFolder(@"../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.DeleteFolder(@"../../InvalidFolder1"), Throws.InstanceOf(typeof(OrchardException))); // Valid create one level up within the storage provider domain Assert.That(GetFolder("SubFolder1"), Is.Not.Null); @@ -277,8 +276,8 @@ namespace Orchard.Tests.Storage { [Test] public void RenameFolderFailsInInvalidPath() { Assert.That(GetFolder(@"SubFolder1/SubSubFolder1"), Is.Not.Null); - Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../SubSubFolder1"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../../SubSubFolder1"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../SubSubFolder1"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.RenameFolder(@"SubFolder1", @"../../SubSubFolder1"), Throws.InstanceOf(typeof(OrchardException))); // Valid move one level up within the storage provider domain _storageProvider.RenameFolder(@"SubFolder1\SubSubFolder1", @"SubFolder1\..\SubSubFolder1"); @@ -291,8 +290,8 @@ namespace Orchard.Tests.Storage { [Test] public void DeleteFileFailsInInvalidPath() { - Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.DeleteFile(@"../test.txt"), Throws.InstanceOf(typeof(OrchardException))); // Valid move one level up within the storage provider domain _storageProvider.CreateFile(@"test.txt"); @@ -308,8 +307,8 @@ namespace Orchard.Tests.Storage { [Test] public void RenameFileFailsInInvalidPath() { - Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.RenameFile(@"../test.txt", "invalid.txt"), Throws.InstanceOf(typeof(OrchardException))); // Valid move one level up within the storage provider domain _storageProvider.CreateFile(@"test.txt"); @@ -322,8 +321,8 @@ namespace Orchard.Tests.Storage { [Test] public void CreateFileFailsInInvalidPath() { - Assert.That(() => _storageProvider.CreateFile(@"../InvalidFolder1.txt"), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.CreateFile(@"../../InvalidFolder1.txt"), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.CreateFile(@"../InvalidFolder1.txt"), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.CreateFile(@"../../InvalidFolder1.txt"), Throws.InstanceOf(typeof(OrchardException))); // Valid create one level up within the storage provider domain _storageProvider.CreateFile(@"SubFolder1\..\ValidFolder1.txt"); @@ -335,8 +334,8 @@ namespace Orchard.Tests.Storage { _storageProvider.CreateFile(@"test.txt"); using (Stream stream = GetFile("test.txt").OpenRead()) { - Assert.That(() => _storageProvider.SaveStream(@"../newTest.txt", stream), Throws.InstanceOf(typeof(ArgumentException))); - Assert.That(() => _storageProvider.SaveStream(@"../../newTest.txt", stream), Throws.InstanceOf(typeof(ArgumentException))); + Assert.That(() => _storageProvider.SaveStream(@"../newTest.txt", stream), Throws.InstanceOf(typeof(OrchardException))); + Assert.That(() => _storageProvider.SaveStream(@"../../newTest.txt", stream), Throws.InstanceOf(typeof(OrchardException))); // Valid create one level up within the storage provider domain _storageProvider.SaveStream(@"SubFolder1\..\newTest.txt", stream); diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Web.config b/src/Orchard.Web/Modules/Orchard.AuditTrail/Web.config index d27f3e6d4..c323e6354 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Web.config +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Web.config @@ -29,6 +29,7 @@ <compilation targetFramework="4.8"> <assemblies> <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> diff --git a/src/Orchard.Web/Modules/Orchard.JobsQueue/Tests/Orchard.Messaging.Tests.csproj b/src/Orchard.Web/Modules/Orchard.JobsQueue/Tests/Orchard.Messaging.Tests.csproj index 239aaa277..4fd4acae4 100644 --- a/src/Orchard.Web/Modules/Orchard.JobsQueue/Tests/Orchard.Messaging.Tests.csproj +++ b/src/Orchard.Web/Modules/Orchard.JobsQueue/Tests/Orchard.Messaging.Tests.csproj @@ -44,9 +44,8 @@ <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\..\..\lib\moq\Moq.dll</HintPath> </Reference> - <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll</HintPath> + <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> + <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="nunit.framework"> <HintPath>..\..\..\..\..\lib\nunit\nunit.framework.dll</HintPath> diff --git a/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config b/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config index 3cd573478..94bd30067 100644 --- a/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config +++ b/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config @@ -29,6 +29,7 @@ <compilation targetFramework="4.8"> <assemblies> <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index d0fd1dd7d..c40355259 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -69,7 +69,6 @@ <Reference Include="System.ComponentModel.DataAnnotations"> <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> - <Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath> </Reference> diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeManager.cs b/src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeManager.cs index c787a212f..434b33850 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeManager.cs @@ -3,6 +3,7 @@ using System.Linq; using log4net; using Orchard.Data; using Orchard.Logging; +using Orchard.Mvc; using Orchard.Recipes.Events; using Orchard.Recipes.Models; @@ -12,20 +13,20 @@ namespace Orchard.Recipes.Services { private readonly IRecipeScheduler _recipeScheduler; private readonly IRecipeExecuteEventHandler _recipeExecuteEventHandler; private readonly IRepository<RecipeStepResultRecord> _recipeStepResultRecordRepository; - private readonly IWorkContextAccessor _workContextAccessor; + private readonly IHttpContextAccessor _httpContextAccessor; public RecipeManager( IRecipeStepQueue recipeStepQueue, IRecipeScheduler recipeScheduler, IRecipeExecuteEventHandler recipeExecuteEventHandler, IRepository<RecipeStepResultRecord> recipeStepResultRecordRepository, - IWorkContextAccessor workContextAccessor) { + IHttpContextAccessor httpContextAccessor) { _recipeStepQueue = recipeStepQueue; _recipeScheduler = recipeScheduler; _recipeExecuteEventHandler = recipeExecuteEventHandler; _recipeStepResultRecordRepository = recipeStepResultRecordRepository; - _workContextAccessor = workContextAccessor; + _httpContextAccessor = httpContextAccessor; RecipeExecutionTimeout = 600; } @@ -57,9 +58,9 @@ namespace Orchard.Recipes.Services { } // Sets the request timeout to a configurable amount of seconds to give enough time to execute custom recipes. - var workContext = _workContextAccessor.GetContext(); - if (workContext?.HttpContext != null) { - workContext.HttpContext.Server.ScriptTimeout = RecipeExecutionTimeout; + var httpContext = _httpContextAccessor.Current(); + if (httpContext != null) { + httpContext.Server.ScriptTimeout = RecipeExecutionTimeout; } var executionId = Guid.NewGuid().ToString("n"); diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Web.config b/src/Orchard.Web/Modules/Orchard.Roles/Web.config index 3cd573478..94bd30067 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Web.config +++ b/src/Orchard.Web/Modules/Orchard.Roles/Web.config @@ -29,6 +29,7 @@ <compilation targetFramework="4.8"> <assemblies> <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj b/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj index 2e2e019db..3428cdd4e 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj @@ -70,7 +70,6 @@ <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath> </Reference> diff --git a/src/Orchard.Web/Modules/Orchard.Users/Web.config b/src/Orchard.Web/Modules/Orchard.Users/Web.config index 3cd573478..94bd30067 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Web.config +++ b/src/Orchard.Web/Modules/Orchard.Users/Web.config @@ -29,6 +29,7 @@ <compilation targetFramework="4.8"> <assemblies> <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj b/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj index e4c2a91a4..7ee84ed83 100644 --- a/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj +++ b/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj @@ -70,7 +70,7 @@ <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> + <Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <Reference Include="System.Web.ApplicationServices" /> <Reference Include="System.Web.DynamicData" /> <Reference Include="System.Web.Entity" /> diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Web.config b/src/Orchard.Web/Modules/Orchard.Workflows/Web.config index 3cd573478..94bd30067 100644 --- a/src/Orchard.Web/Modules/Orchard.Workflows/Web.config +++ b/src/Orchard.Web/Modules/Orchard.Workflows/Web.config @@ -29,6 +29,7 @@ <compilation targetFramework="4.8"> <assemblies> <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> + <add assembly="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> diff --git a/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj b/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj index 0b128ac4e..50dd89d1f 100644 --- a/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj +++ b/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj @@ -75,7 +75,6 @@ <Reference Include="System.ComponentModel.DataAnnotations"> <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> - <Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath> </Reference> diff --git a/src/Orchard.Web/Web.config b/src/Orchard.Web/Web.config index 0d024841d..71284090d 100644 --- a/src/Orchard.Web/Web.config +++ b/src/Orchard.Web/Web.config @@ -204,7 +204,7 @@ <dependentAssembly> <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> - </dependentAssembly> + </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" /> diff --git a/src/Orchard.sln b/src/Orchard.sln index 167dee8c3..556dc0dbe 100644 --- a/src/Orchard.sln +++ b/src/Orchard.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29926.136 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33815.320 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5}" EndProject @@ -278,6 +278,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Conditions", "Orcha EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Resources", "Orchard.Web\Modules\Orchard.Resources\Orchard.Resources.csproj", "{D4E8F7C8-2DB2-4C50-A422-DA1DF1E3CC73}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{C149D676-DC9E-4C3E-A218-955EFBBC4B74}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{1A90D20E-90DF-4988-8E35-0A4C1275EC46}" + ProjectSection(SolutionItems) = preProject + ..\.github\workflows\compile.yml = ..\.github\workflows\compile.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution CodeCoverage|Any CPU = CodeCoverage|Any CPU @@ -1191,9 +1198,10 @@ Global {90EBEE36-B5CD-42A8-A21B-76270E2C5D24} = {DF3909B0-1DDD-4D8A-9919-56FC438E25E2} {98251EAE-A41B-47B2-AA91-E28B8482DA70} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {D4E8F7C8-2DB2-4C50-A422-DA1DF1E3CC73} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} + {1A90D20E-90DF-4988-8E35-0A4C1275EC46} = {C149D676-DC9E-4C3E-A218-955EFBBC4B74} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {3585D970-275B-4363-9F61-CD37CFC9DCD3} EnterpriseLibraryConfigurationToolBinariesPath = packages\TransientFaultHandling.Core.5.1.1209.1\lib\NET4 + SolutionGuid = {3585D970-275B-4363-9F61-CD37CFC9DCD3} EndGlobalSection EndGlobal diff --git a/src/Orchard/FileSystems/Media/FileSystemStorageProvider.cs b/src/Orchard/FileSystems/Media/FileSystemStorageProvider.cs index e932271dc..ab0abfd26 100644 --- a/src/Orchard/FileSystems/Media/FileSystemStorageProvider.cs +++ b/src/Orchard/FileSystems/Media/FileSystemStorageProvider.cs @@ -395,6 +395,7 @@ namespace Orchard.FileSystems.Media { /// <param name="path">The relative path to the file to be created.</param> /// <param name="inputStream">The stream to be saved.</param> /// <exception cref="ArgumentException">If the stream can't be saved due to access permissions.</exception> + /// <exception cref="OrchardException">If the path is invalid.</exception> public void SaveStream(string path, Stream inputStream) { // Create the file. // The CreateFile method will map the still relative path diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index 1ed5bd2d1..9ad2d40c4 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -108,9 +108,7 @@ <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Data" /> - <Reference Include="System.Net.Http"> - <Private>True</Private> - </Reference> + <Reference Include="System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath> </Reference> diff --git a/src/Orchard/Validation/PathValidation.cs b/src/Orchard/Validation/PathValidation.cs index 3d0b5b864..85370a87a 100644 --- a/src/Orchard/Validation/PathValidation.cs +++ b/src/Orchard/Validation/PathValidation.cs @@ -15,7 +15,7 @@ namespace Orchard.Validation { /// <param name="basePath">The base path which boundaries are not to be transposed.</param> /// <param name="mappedPath">The path to determine.</param> /// <rereturns>The mapped path if valid.</rereturns> - /// <exception cref="ArgumentException">If the path is invalid.</exception> + /// <exception cref="OrchardException">If the path is invalid.</exception> public static string ValidatePath(string basePath, string mappedPath) { bool valid = false;