From de895ee54a14f21ee0609e6a3636a31407495aa3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 14 Nov 2011 17:18:51 +0000 Subject: [PATCH] Add very simple FriendsModuleTests.TestNoFriends() --- .../Avatar/Friends/FriendsModule.cs | 4 +- .../Avatar/Friends/Tests/FriendModuleTests.cs | 78 +++++++++++++++++++ OpenSim/Tests/Common/Mock/TestClient.cs | 11 ++- prebuild.xml | 1 + 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index c952ebf8fc..28a2f7362d 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs @@ -165,7 +165,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends // Instantiate the request handler IHttpServer server = MainServer.GetHttpServer((uint)mPort); - server.AddStreamHandler(new FriendsRequestHandler(this)); + + if (server != null) + server.AddStreamHandler(new FriendsRequestHandler(this)); } if (m_FriendsService == null) diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs new file mode 100644 index 0000000000..b52093a98d --- /dev/null +++ b/OpenSim/Region/CoreModules/Avatar/Friends/Tests/FriendModuleTests.cs @@ -0,0 +1,78 @@ +/* + * 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 Nini.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.CoreModules.Avatar.Friends; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; + +namespace OpenSim.Region.CoreModules.Avatar.Friends.Tests +{ + [TestFixture] + public class FriendsModuleTests + { + private FriendsModule m_fm; + private TestScene m_scene; + + [SetUp] + public void Init() + { + IConfigSource config = new IniConfigSource(); + config.AddConfig("Modules"); + // Not strictly necessary since FriendsModule assumes it is the default (!) + config.Configs["Modules"].Set("FriendsModule", "FriendsModule"); + config.AddConfig("Friends"); + config.Configs["Friends"].Set("Connector", "OpenSim.Services.FriendsService.dll"); + config.AddConfig("FriendsService"); + config.Configs["FriendsService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); + + m_scene = SceneHelpers.SetupScene(); + m_fm = new FriendsModule(); + SceneHelpers.SetupSceneModules(m_scene, config, m_fm); + } + + [Test] + public void TestNoFriends() + { + TestHelpers.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + UUID userId = TestHelpers.ParseTail(0x1); + + ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); + + Assert.That(((TestClient)sp.ControllingClient).OfflineNotificationsReceived.Count, Is.EqualTo(0)); + Assert.That(((TestClient)sp.ControllingClient).OnlineNotificationsReceived.Count, Is.EqualTo(0)); + } + } +} \ No newline at end of file diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index 4636961c5e..3ba9ed4e5d 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -56,6 +56,10 @@ namespace OpenSim.Tests.Common.Mock private IScene m_scene; + // Properties so that we can get at received data for test purposes + public List OfflineNotificationsReceived { get; private set; } + public List OnlineNotificationsReceived { get; private set; } + // disable warning: public events, part of the public API #pragma warning disable 67 @@ -440,6 +444,9 @@ namespace OpenSim.Tests.Common.Mock m_circuitCode = agentData.circuitcode; m_scene = scene; CapsSeedUrl = agentData.CapsPath; + + OfflineNotificationsReceived = new List(); + OnlineNotificationsReceived = new List(); } /// @@ -827,12 +834,12 @@ namespace OpenSim.Tests.Common.Mock public void SendAgentOffline(UUID[] agentIDs) { - + OfflineNotificationsReceived.AddRange(agentIDs); } public void SendAgentOnline(UUID[] agentIDs) { - + OnlineNotificationsReceived.AddRange(agentIDs); } public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, diff --git a/prebuild.xml b/prebuild.xml index 4e4bc61b24..7013598537 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2915,6 +2915,7 @@ +