From 319507f5215f5705cbe80d0c468da15ffe778829 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Mon, 5 Dec 2011 21:04:17 +0000 Subject: Add test for not found response from GetTexture cap handler. Add OpenSim.Region.Capabilities.Handlers.Tests.dll into test suite --- .nant/local.include | 11 ++ .../GetTexture/Tests/GetTextureHandlerTests.cs | 63 ++++++++ OpenSim/Tests/Common/Mock/TestOSHttpRequest.cs | 179 +++++++++++++++++++++ prebuild.xml | 50 ++++++ 4 files changed, 303 insertions(+) create mode 100644 OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs create mode 100644 OpenSim/Tests/Common/Mock/TestOSHttpRequest.cs diff --git a/.nant/local.include b/.nant/local.include index 698af3f..94f510f 100644 --- a/.nant/local.include +++ b/.nant/local.include @@ -149,6 +149,11 @@ </exec> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" /> + <exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.capabilities.handlers.tests"> + <arg value="./bin/OpenSim.Capabilities.Handlers.Tests.dll" /> + </exec> + <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" /> + <delete dir="%temp%"/> </target> @@ -338,6 +343,11 @@ <arg value="-xml=test-results/OpenSim.Data.Tests.dll-Results.xml" /> </exec> + <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.capabilities.handlers.tests"> + <arg value="./bin/OpenSim.Capabilities.Handlers.Tests.dll" /> + <arg value="-xml=test-results/OpenSim.Capabilities.Handlers.Tests.dll-Results.xml" /> + </exec> + <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" /> @@ -347,6 +357,7 @@ <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.optionalmodules.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" /> + <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" /> </target> <!-- <exec program="nunit-console.exe" failonerror="false" resultproperty="testresult.acceptancetestassembly"> --> diff --git a/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs b/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs new file mode 100644 index 0000000..fd152c3 --- /dev/null +++ b/OpenSim/Capabilities/Handlers/GetTexture/Tests/GetTextureHandlerTests.cs @@ -0,0 +1,63 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Net; +using log4net; +using log4net.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Capabilities.Handlers; +using OpenSim.Framework; +using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; + +namespace OpenSim.Capabilities.Handlers.GetTexture.Tests +{ + [TestFixture] + public class GetTextureHandlerTests + { + [Test] + public void TestTextureNotFound() + { + TestHelpers.InMethod(); + + // Overkill - we only really need the asset service, not a whole scene. + Scene scene = SceneHelpers.SetupScene(); + + GetTextureHandler handler = new GetTextureHandler(null, scene.AssetService); + TestOSHttpRequest req = new TestOSHttpRequest(); + TestOSHttpResponse resp = new TestOSHttpResponse(); + req.Url = new Uri("http://localhost/?texture_id=00000000-0000-1111-9999-000000000012"); + handler.Handle(null, null, req, resp); + Assert.That(resp.StatusCode, Is.EqualTo((int)System.Net.HttpStatusCode.NotFound)); + } + } +} \ No newline at end of file diff --git a/OpenSim/Tests/Common/Mock/TestOSHttpRequest.cs b/OpenSim/Tests/Common/Mock/TestOSHttpRequest.cs new file mode 100644 index 0000000..e769d30 --- /dev/null +++ b/OpenSim/Tests/Common/Mock/TestOSHttpRequest.cs @@ -0,0 +1,179 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.IO; +using System.Net; +using System.Text; +using System.Web; +using OpenSim.Framework.Servers.HttpServer; + +namespace OpenSim.Tests.Common.Mock +{ + public class TestOSHttpRequest : IOSHttpRequest + { + public string[] AcceptTypes + { + get + { + throw new NotImplementedException (); + } + } + + public Encoding ContentEncoding + { + get + { + throw new NotImplementedException (); + } + } + + public long ContentLength + { + get + { + throw new NotImplementedException (); + } + } + + public long ContentLength64 + { + get + { + throw new NotImplementedException (); + } + } + + public string ContentType + { + get + { + throw new NotImplementedException (); + } + } + + public HttpCookieCollection Cookies + { + get + { + throw new NotImplementedException (); + } + } + + public bool HasEntityBody + { + get + { + throw new NotImplementedException (); + } + } + + public NameValueCollection Headers { get; set; } + + public string HttpMethod + { + get + { + throw new NotImplementedException (); + } + } + + public Stream InputStream + { + get + { + throw new NotImplementedException (); + } + } + + public bool IsSecured + { + get + { + throw new NotImplementedException (); + } + } + + public bool KeepAlive + { + get + { + throw new NotImplementedException (); + } + } + + public NameValueCollection QueryString + { + get + { + throw new NotImplementedException (); + } + } + + public Hashtable Query + { + get + { + throw new NotImplementedException (); + } + } + + public string RawUrl + { + get + { + throw new NotImplementedException (); + } + } + + public IPEndPoint RemoteIPEndPoint + { + get + { + throw new NotImplementedException (); + } + } + + public Uri Url { get; set; } + + public string UserAgent + { + get + { + throw new NotImplementedException (); + } + } + + public TestOSHttpRequest() + { + Headers = new NameValueCollection(); + } + } +} \ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index 05d9545..e951187 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2729,6 +2729,56 @@ </Project> + <Project frameworkVersion="v3_5" name="OpenSim.Capabilities.Handlers.Tests" path="OpenSim/Capabilities/Handlers" type="Library"> + <Configuration name="Debug"> + <Options> + <OutputPath>../../../bin/</OutputPath> + </Options> + </Configuration> + <Configuration name="Release"> + <Options> + <OutputPath>../../../bin/</OutputPath> + </Options> + </Configuration> + + <ReferencePath>../../../bin/</ReferencePath> + <Reference name="System"/> + <Reference name="System.Core"/> + <Reference name="System.Drawing"/> + <Reference name="System.Xml"/> + <Reference name="System.Web"/> + <Reference name="nunit.framework" path="../../../bin/"/> + <Reference name="OpenMetaverse" path="../../../bin/"/> + <Reference name="OpenMetaverseTypes" path="../../../bin/"/> + <Reference name="OpenMetaverse.StructuredData" path="../../../bin/"/> + <Reference name="OpenSim.Capabilities"/> + <Reference name="OpenSim.Capabilities.Handlers"/> + <Reference name="OpenSim.Framework"/> + <Reference name="OpenSim.Framework.Console"/> + <Reference name="OpenSim.Framework.Servers.HttpServer"/> + <Reference name="OpenSim.Region.Framework"/> + <Reference name="OpenSim.Server.Base"/> + <Reference name="OpenSim.Server.Handlers"/> + <Reference name="OpenSim.Services.Base"/> + <Reference name="OpenSim.Services.Interfaces"/> + <Reference name="OpenSim.Tests.Common"/> + <Reference name="Nini" path="../../../bin/"/> + <Reference name="log4net" path="../../../bin/"/> + <Reference name="DotNetOpenId" path="../../../bin/"/> + + <!-- + TODO: this is kind of lame, we basically build a duplicate + assembly but with tests added in, just so that we don't + need to hard code in a bunch of Test directories here. If + pattern="Tests/*.cs" worked, we wouldn't need this. + --> + <Files> + <!-- SADLY the way this works means you need to keep adding these paths --> + <Match path="GetTexture/Tests" pattern="*.cs" recurse="true"/> + </Files> + </Project> + + <Project frameworkVersion="v3_5" name="OpenSim.Data.Tests" path="OpenSim/Data/Tests" type="Library"> <Configuration name="Debug"> <Options> -- cgit v1.1