From ec75e5c13a85a6d5aeb7e7932d660cad83e075db Mon Sep 17 00:00:00 2001 From: eeichinger Date: Tue, 14 Jul 2009 16:59:47 +0000 Subject: [PATCH] upgraded to NUnitAspEx 2.0.3482.27831 - no nunit dependency anymore --- lib/Net/1.1/NUnitAspEx.dll | Bin 49152 -> 45056 bytes lib/Net/1.1/NUnitAspEx.xml | 139 ++++++++++++++++++ lib/Net/2.0/NUnitAspEx.dll | Bin 49152 -> 45056 bytes lib/Net/2.0/NUnitAspEx.xml | 139 ++++++++++++++++++ .../Support/WebApplicationContextTests.cs | 20 +-- .../Spring.Web.Tests/MyNUnitAddinHelper.cs | 38 ----- .../WebObjectDefinitionFactoryTests.cs | 24 ++- .../Spring.Web.Tests.2008.csproj | 6 +- .../TestSupport/NUnitAdapter.cs | 9 +- .../TestSupport/WebApplicationTests.cs | 60 ++++++++ .../Web/Support/LocalResourceManagerTests.cs | 20 +-- .../Web/Support/PageHandlerFactoryTests.cs | 31 +++- 12 files changed, 417 insertions(+), 69 deletions(-) create mode 100644 lib/Net/1.1/NUnitAspEx.xml create mode 100644 lib/Net/2.0/NUnitAspEx.xml delete mode 100644 test/Spring/Spring.Web.Tests/MyNUnitAddinHelper.cs create mode 100644 test/Spring/Spring.Web.Tests/TestSupport/WebApplicationTests.cs diff --git a/lib/Net/1.1/NUnitAspEx.dll b/lib/Net/1.1/NUnitAspEx.dll index 95c1eb4b8a1da99c67d53dca574b8059043b26fb..030f906e2ec3e5dd722016cb2dc97ea50ef875c3 100644 GIT binary patch literal 45056 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 diff --git a/lib/Net/1.1/NUnitAspEx.xml b/lib/Net/1.1/NUnitAspEx.xml new file mode 100644 index 00000000..e6d3470a --- /dev/null +++ b/lib/Net/1.1/NUnitAspEx.xml @@ -0,0 +1,139 @@ + + + + NUnitAspEx + + + +

+ Encapsulates a request from within a testsuite using the "asptest://" pseudo-protocol. + + + + + Encapsulates the ugly details of deriving from HttpWebRequest. + + + Since various frameworks like NUnitAsp rely on the output of WebRequest.Create() being of type HttpWebRequest + but HttpWebRequest is not customizable the easy way, this class shields further derived classes from the ugly reflection details. + + + + + Creates a new instance for the given uri. + + the to create this request for. + + + + + + + + + + + Override this method in your derived class and call to set the response object. + + + + + Create the stream to be used for uploading content. + + + + + + Encapsulates a response from an . + + + + + Encapsulates the ugly details of deriving from HttpWebResponse. + + + + + Summary description for HttpReflectionUtils. + + + + + Summary description for HttpWebClient. + + + + + An AspFixtureHost lives inside it's own AppDomain with an initialized HttpRuntime. + + + + + Summary description for IAspFixtureHost. + + + + + Creates a new Host instance within a new AppDomain based on the passed in Properties. + + + You must not call this method from within an existing Host's AppDomain. + + + + + Unload the passed Host's AppDomain. + + + + + Return null to avoid timing out of remoting references + + + + + + Initializes the newly created host instance. + + + + + Use this property to gain access to the Host from within the Host's AppDomain + + + This property is set only within the Host's AppDomain. + Outside the AppDomain it will always return null. + + + + + Use to synchronize access to this host instance + + + + + Returns a reference to the AppDomain, that created this Host instance + + + + + Returns the physical assembly reference location this AppDomain has been created from. + + + + + Summary description for AspTestClient. + + + + + Summary description for AspTestContext. + + + + + Summary description for AspTestExecutionModule. + + + + diff --git a/lib/Net/2.0/NUnitAspEx.dll b/lib/Net/2.0/NUnitAspEx.dll index 95c1eb4b8a1da99c67d53dca574b8059043b26fb..030f906e2ec3e5dd722016cb2dc97ea50ef875c3 100644 GIT binary patch literal 45056 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 diff --git a/lib/Net/2.0/NUnitAspEx.xml b/lib/Net/2.0/NUnitAspEx.xml new file mode 100644 index 00000000..e6d3470a --- /dev/null +++ b/lib/Net/2.0/NUnitAspEx.xml @@ -0,0 +1,139 @@ + + + + NUnitAspEx + + + +

+ Encapsulates a request from within a testsuite using the "asptest://" pseudo-protocol. + + + + + Encapsulates the ugly details of deriving from HttpWebRequest. + + + Since various frameworks like NUnitAsp rely on the output of WebRequest.Create() being of type HttpWebRequest + but HttpWebRequest is not customizable the easy way, this class shields further derived classes from the ugly reflection details. + + + + + Creates a new instance for the given uri. + + the to create this request for. + + + + + + + + + + + Override this method in your derived class and call to set the response object. + + + + + Create the stream to be used for uploading content. + + + + + + Encapsulates a response from an . + + + + + Encapsulates the ugly details of deriving from HttpWebResponse. + + + + + Summary description for HttpReflectionUtils. + + + + + Summary description for HttpWebClient. + + + + + An AspFixtureHost lives inside it's own AppDomain with an initialized HttpRuntime. + + + + + Summary description for IAspFixtureHost. + + + + + Creates a new Host instance within a new AppDomain based on the passed in Properties. + + + You must not call this method from within an existing Host's AppDomain. + + + + + Unload the passed Host's AppDomain. + + + + + Return null to avoid timing out of remoting references + + + + + + Initializes the newly created host instance. + + + + + Use this property to gain access to the Host from within the Host's AppDomain + + + This property is set only within the Host's AppDomain. + Outside the AppDomain it will always return null. + + + + + Use to synchronize access to this host instance + + + + + Returns a reference to the AppDomain, that created this Host instance + + + + + Returns the physical assembly reference location this AppDomain has been created from. + + + + + Summary description for AspTestClient. + + + + + Summary description for AspTestContext. + + + + + Summary description for AspTestExecutionModule. + + + + diff --git a/test/Spring/Spring.Web.Tests/Context/Support/WebApplicationContextTests.cs b/test/Spring/Spring.Web.Tests/Context/Support/WebApplicationContextTests.cs index 3c887c96..83b95c3a 100644 --- a/test/Spring/Spring.Web.Tests/Context/Support/WebApplicationContextTests.cs +++ b/test/Spring/Spring.Web.Tests/Context/Support/WebApplicationContextTests.cs @@ -20,10 +20,6 @@ #region Imports -using System; -using System.Threading; -using System.Web; -using NUnit.Extensions.Asp.AspTester; using NUnit.Framework; using NUnitAspEx; using Spring.Objects.Factory; @@ -38,18 +34,24 @@ namespace Spring.Context.Support /// /// /// Erich Eichinger - [AspTestFixture("/Test", "/Spring/Context/Support/WebApplicationContextTests")] + [TestFixture] public class WebApplicationContextTests : WebFormTestCase { + public WebApplicationContextTests() + : base("/Test", "/Spring/Context/Support/WebApplicationContextTests/") + {} + [Test] public void CanAccessContextFromNonWebThread() + { + Host.Execute(new TestAction(CanAccessContextFromNonWebThreadImpl)); + } + + public static void CanAccessContextFromNonWebThreadImpl() { IApplicationContext ctx; - using (TestWebContext requestContext = new TestWebContext("/Test", "/DoesNotExist.oaspx")) - { - ctx = WebApplicationContext.Current; - } + ctx = WebApplicationContext.GetRootContext(); AsyncTestMethod testMethod = new AsyncTestMethod(1, new AsyncTestMethod.TestMethod(DoBackgroundWork), ctx); testMethod.Start(); diff --git a/test/Spring/Spring.Web.Tests/MyNUnitAddinHelper.cs b/test/Spring/Spring.Web.Tests/MyNUnitAddinHelper.cs deleted file mode 100644 index 1eb3c26d..00000000 --- a/test/Spring/Spring.Web.Tests/MyNUnitAddinHelper.cs +++ /dev/null @@ -1,38 +0,0 @@ -#region License - -/* - * Copyright © 2002-2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#endregion - -#region Imports - -using System; -using NUnit.Core.Extensibility; - -#endregion - -namespace Spring -{ - /// - /// Required for auto-registering NUnitAspEx extension with NUnit for this assembly - /// - /// Erich Eichinger - [NUnitAddin] - public class MyNUnitAddinHelper : NUnitAspEx.NUnitAddinHelper - { - } -} \ No newline at end of file diff --git a/test/Spring/Spring.Web.Tests/Objects/Factory/Support/WebObjectDefinitionFactoryTests.cs b/test/Spring/Spring.Web.Tests/Objects/Factory/Support/WebObjectDefinitionFactoryTests.cs index d8cc8e05..015bf5b4 100644 --- a/test/Spring/Spring.Web.Tests/Objects/Factory/Support/WebObjectDefinitionFactoryTests.cs +++ b/test/Spring/Spring.Web.Tests/Objects/Factory/Support/WebObjectDefinitionFactoryTests.cs @@ -23,6 +23,7 @@ using System; using NUnit.Framework; using NUnitAspEx; +using NUnitAspEx.Core; using Spring.TestSupport; #endregion @@ -33,9 +34,13 @@ namespace Spring.Objects.Factory.Support /// Unit tests for the WebObjectDefinitionFactory class. /// /// Erich Eichinger - [AspTestFixture("/Test", "/Spring/Objects/Factory/Support")] - public class WebObjectDefinitionFactoryTests + [TestFixture] + public class WebObjectDefinitionFactoryTests : WebApplicationTests { + public WebObjectDefinitionFactoryTests() + : base("/Test", "/Spring/Objects/Factory/Support") + {} + [Test] public void CreateRootDefinition() { @@ -83,6 +88,11 @@ namespace Spring.Objects.Factory.Support [Test] public void ResolvesToPageRootDefinitionIfEndsWithASPX() + { + Host.Execute(new TestAction(ResolvesToPageRootDefinitionIfEndsWithASPXImpl)); + } + + public static void ResolvesToPageRootDefinitionIfEndsWithASPXImpl() { using (TestWebContext ctx = new TestWebContext("/Test", "testform.aspx")) { @@ -97,6 +107,11 @@ namespace Spring.Objects.Factory.Support [Test] public void ResolvesToPageChildDefinitionIfEndsWithASPX() + { + Host.Execute(new TestAction(ResolvesToPageChildDefinitionIfEndsWithASPXImpl)); + } + + public static void ResolvesToPageChildDefinitionIfEndsWithASPXImpl() { using (TestWebContext ctx = new TestWebContext("/Test", "testform.aspx")) { @@ -112,6 +127,11 @@ namespace Spring.Objects.Factory.Support [Test] [ExpectedException(typeof(ObjectCreationException))] public void ThrowsArgumentExceptionOnNonExistingPath() + { + Host.Execute(new TestAction(ThrowsArgumentExceptionOnNonExistingPathImpl)); + } + + public static void ThrowsArgumentExceptionOnNonExistingPathImpl() { using (TestWebContext ctx = new TestWebContext("/Test", "testform.aspx")) { diff --git a/test/Spring/Spring.Web.Tests/Spring.Web.Tests.2008.csproj b/test/Spring/Spring.Web.Tests/Spring.Web.Tests.2008.csproj index 1f227275..d5434841 100644 --- a/test/Spring/Spring.Web.Tests/Spring.Web.Tests.2008.csproj +++ b/test/Spring/Spring.Web.Tests/Spring.Web.Tests.2008.csproj @@ -98,7 +98,6 @@ ASPXCodeBehind - @@ -115,6 +114,7 @@ + @@ -161,7 +161,9 @@ - + + ASPXCodeBehind + diff --git a/test/Spring/Spring.Web.Tests/TestSupport/NUnitAdapter.cs b/test/Spring/Spring.Web.Tests/TestSupport/NUnitAdapter.cs index 88ce07c2..2d9eb173 100644 --- a/test/Spring/Spring.Web.Tests/TestSupport/NUnitAdapter.cs +++ b/test/Spring/Spring.Web.Tests/TestSupport/NUnitAdapter.cs @@ -41,11 +41,14 @@ namespace Spring.TestSupport /// Base class for NUnitAsp test fixtures. Extend this class to use NUnitAsp. /// [TestFixture] - public abstract class WebFormTestCase : CompatibilityAdapter + public abstract class WebFormTestCase : WebApplicationTests { private bool setupCalled = false; - /// + protected WebFormTestCase(string virtualPath, string relativePhysicalPath) : base(virtualPath, relativePhysicalPath) + {} + + /// /// Do not call. For use by NUnit only. /// [SetUp] @@ -111,7 +114,7 @@ namespace Spring.TestSupport { if (!setupCalled) { - Fail("A required setup method in WebFormTestCase was not called. This is probably because you used the [SetUp] attribute in a subclass of WebFormTestCase. That is not supported. Override the SetUp() method instead."); + Assert.Fail("A required setup method in WebFormTestCase was not called. This is probably because you used the [SetUp] attribute in a subclass of WebFormTestCase. That is not supported. Override the SetUp() method instead."); } } } diff --git a/test/Spring/Spring.Web.Tests/TestSupport/WebApplicationTests.cs b/test/Spring/Spring.Web.Tests/TestSupport/WebApplicationTests.cs new file mode 100644 index 00000000..3523f4c1 --- /dev/null +++ b/test/Spring/Spring.Web.Tests/TestSupport/WebApplicationTests.cs @@ -0,0 +1,60 @@ +#region License + +/* + * Copyright 2002-2009 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#endregion + +using NUnit.Framework; +using NUnitAspEx; +using NUnitAspEx.Core; + +namespace Spring.TestSupport +{ + /// + /// + /// Erich Eichinger + public abstract class WebApplicationTests + { + private readonly string virtualPath; + private readonly string relativePhysicalPath; + private IAspFixtureHost host; + + public IAspFixtureHost Host + { + get { return host; } + } + + protected WebApplicationTests(string virtualPath, string relativePhysicalPath) + { + this.virtualPath = virtualPath; + this.relativePhysicalPath = relativePhysicalPath; + } + + [TestFixtureSetUp] + public virtual void TestFixtureSetup() + { + host = AspFixtureHost.CreateInstance(virtualPath, relativePhysicalPath, this); + } + + [TestFixtureTearDown] + public virtual void TestFixtureTearDown() + { + host = AspFixtureHost.ReleaseInstance(host); + } + + } +} \ No newline at end of file diff --git a/test/Spring/Spring.Web.Tests/Web/Support/LocalResourceManagerTests.cs b/test/Spring/Spring.Web.Tests/Web/Support/LocalResourceManagerTests.cs index 10e58b0b..682437ff 100644 --- a/test/Spring/Spring.Web.Tests/Web/Support/LocalResourceManagerTests.cs +++ b/test/Spring/Spring.Web.Tests/Web/Support/LocalResourceManagerTests.cs @@ -18,14 +18,10 @@ #endregion -#region Imports - -using System; using System.Diagnostics; using NUnit.Framework; -using NUnitAspEx; - -#endregion +using NUnitAspEx.Client; +using Spring.TestSupport; #if NET_2_0 @@ -35,13 +31,17 @@ namespace Spring.Web.Support /// /// /// Erich Eichinger - [AspTestFixture("/Test", "/Spring/Web/Support/LocalResourceManagerTests")] - public class LocalResourceManagerTests + [TestFixture] + public class LocalResourceManagerTests : WebApplicationTests { + public LocalResourceManagerTests() + : base("/Test", "/Spring/Web/Support/LocalResourceManagerTests") + {} + [Test] public void ReturnsWithResources() { - AspTestClient client = new AspTestClient(); + HttpWebClient client = Host.CreateWebClient(); string result = client.GetPage("WithResources.aspx"); Trace.Write(result); Assert.AreEqual("FromResource", result); @@ -50,7 +50,7 @@ namespace Spring.Web.Support [Test] public void ReturnsWithoutResources() { - AspTestClient client = new AspTestClient(); + HttpWebClient client = Host.CreateWebClient(); string result = client.GetPage("WithoutResources.aspx"); Assert.AreEqual("OK", result); } diff --git a/test/Spring/Spring.Web.Tests/Web/Support/PageHandlerFactoryTests.cs b/test/Spring/Spring.Web.Tests/Web/Support/PageHandlerFactoryTests.cs index 560537ca..666fec24 100644 --- a/test/Spring/Spring.Web.Tests/Web/Support/PageHandlerFactoryTests.cs +++ b/test/Spring/Spring.Web.Tests/Web/Support/PageHandlerFactoryTests.cs @@ -26,6 +26,7 @@ using System.IO; using NUnit.Extensions.Asp.AspTester; using NUnit.Framework; using NUnitAspEx; +using NUnitAspEx.Client; using Spring.TestSupport; #endregion @@ -36,13 +37,17 @@ namespace Spring.Web.Support /// /// /// Erich Eichinger - [AspTestFixture("/Test", "/Spring/Web/Support/PageHandlerFactoryTests")] + [TestFixture] public class PageHandlerFactoryTests : WebFormTestCase { + public PageHandlerFactoryTests() + : base("/Test", "/Spring/Web/Support/PageHandlerFactoryTests") + {} + [Test] public void DisablesSessions() { - AspTestClient client = new AspTestClient(); + HttpWebClient client = Host.CreateWebClient(); // a session-less page - checks, if session is correctly disabled string result = client.GetPage("DisablesSession.aspx"); Assert.AreEqual("OK", result); @@ -51,7 +56,7 @@ namespace Spring.Web.Support [Test, Explicit] public void UsesReadonlySession() { - AspTestClient client = new AspTestClient(); + HttpWebClient client = Host.CreateWebClient(); string result = client.GetPage("ReadOnlySession.aspx"); Assert.AreEqual("OK", result); } @@ -59,18 +64,26 @@ namespace Spring.Web.Support [Test] public void MaintainsSession() { - AspTestClient client = new AspTestClient(); + HttpWebClient client = Host.CreateWebClient(); string result = client.GetPage("MaintainsSession1.aspx"); Assert.AreEqual("OK", result); - Assert.AreEqual("somevalue", AspTestContext.HttpContext.Session["maintainsSession"]); +// Assert.AreEqual("somevalue", AspTestContext.HttpContext.Session["maintainsSession"]); // checks previously set session variable result = client.GetPage("MaintainsSession2.aspx"); Assert.AreEqual("OK", result); } + /// + /// Tests the behavior of the System.Web.PageHandlerFactory class + /// [Test] public void BCLPageHandlerFactoryBehavior() + { + Host.Execute(new TestAction(BCLPageHandlerFactoryBehaviorImpl)); + } + + public static void BCLPageHandlerFactoryBehaviorImpl() { using (TestWebContext ctx = new TestWebContext("/Test", "DoesNotExist.oaspx")) { @@ -93,8 +106,16 @@ namespace Spring.Web.Support } } + /// + /// Tests the behavior of our PageHandlerFactory class + /// [Test] public void PageHandlerFactoryBehavesLikeSystemPageHandlerFactory() + { + Host.Execute(new TestAction(PageHandlerFactoryBehavesLikeSystemPageHandlerFactoryImpl)); + } + + public static void PageHandlerFactoryBehavesLikeSystemPageHandlerFactoryImpl() { using (TestWebContext ctx = new TestWebContext("/Test", "DoesNotExist.aspx")) {