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