From 63383bf3c5f5923b33e43ddd6b24b5616288ff4f Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Fri, 14 Apr 2017 21:55:37 +0100
Subject: add functions to send entity updates imediatly, except for avatars
(or now) they should be use to bypass normal delayed updates, for debug
---
OpenSim/Tests/Common/Mock/TestClient.cs | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index e2f57b5..a835925 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -760,7 +760,11 @@ namespace OpenSim.Tests.Common
{
}
- public void SendAvatarDataImmediate(ISceneEntity avatar)
+ public void SendEntityFullUpdateImmediate(ISceneEntity ent)
+ {
+ }
+
+ public void SendEntityTerseUpdateImmediate(ISceneEntity ent)
{
}
--
cgit v1.1
From 45096b6238a3b6335429a680fa0bae0a6c0ce190 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 1 May 2017 07:06:50 -0700
Subject: Initial commit of the emerging test suite for permissions and more.
---
OpenSim/Tests/Permissions/DirectTransferTests.cs | 252 +++++++++++++++++++++++
1 file changed, 252 insertions(+)
create mode 100644 OpenSim/Tests/Permissions/DirectTransferTests.cs
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
new file mode 100644
index 0000000..7716776
--- /dev/null
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -0,0 +1,252 @@
+/*
+ * 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.Reflection;
+using System.Threading;
+using Nini.Config;
+using NUnit.Framework;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Region.CoreModules.World.Permissions;
+using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer;
+using OpenSim.Region.CoreModules.Framework.InventoryAccess;
+using OpenSim.Region.Framework.Scenes.Serialization;
+using OpenSim.Services.Interfaces;
+using OpenSim.Tests.Common;
+using PermissionMask = OpenSim.Framework.PermissionMask;
+
+namespace OpenSim.Tests.Permissions
+{
+ ///
+ /// Basic scene object tests (create, read and delete but not update).
+ ///
+ [TestFixture]
+ public class DirectTransferTests : OpenSimTestCase
+ {
+ private static string Perms = "Owner: {0}; Group: {1}; Everyone: {2}; Next: {3}";
+ protected TestScene m_Scene;
+ private ScenePresence[] m_Avatars = new ScenePresence[3];
+
+ [SetUp]
+ public override void SetUp()
+ {
+ base.SetUp();
+ TestHelpers.EnableLogging();
+
+ IConfigSource config = new IniConfigSource();
+ config.AddConfig("Messaging");
+ config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule");
+ config.AddConfig("Modules");
+ config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
+ config.AddConfig("InventoryService");
+ config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService");
+ config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin");
+
+ m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config);
+ // Add modules
+ SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule());
+
+ // Add 3 avatars
+ for (int i = 0; i < 3; i++)
+ {
+ UUID id = TestHelpers.ParseTail(i+1);
+
+ m_Avatars[i] = AddScenePresence("Bot", "Bot_" + i, id);
+ Assert.That(m_Avatars[i], Is.Not.Null);
+ Assert.That(m_Avatars[i].IsChildAgent, Is.False);
+ Assert.That(m_Avatars[i].UUID, Is.EqualTo(id));
+
+ Assert.That(m_Scene.GetScenePresences().Count, Is.EqualTo(i+1));
+ }
+ }
+
+ ///
+ /// Test adding an object to a scene.
+ ///
+ [Test]
+ public void TestGiveCBox()
+ {
+ TestHelpers.InMethod();
+
+ // Create a C Box
+ SceneObjectGroup boxC = AddSceneObject("Box C", 10, 1, m_Avatars[0].UUID);
+
+ // field = 16 is NextOwner
+ // set = 1 means add the permission; set = 0 means remove permission
+ m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
+ ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Copy, 1);
+
+ m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
+ ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Transfer, 0);
+ PrintPerms(boxC);
+
+ Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Copy) != 0);
+ Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Modify) == 0);
+ Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Transfer) == 0);
+
+ InventoryItemBase item = TakeCopyToInventory(boxC);
+
+ GiveInventoryItem(item.ID, m_Avatars[0], m_Avatars[1]);
+
+ item = GetItemFromInventory(m_Avatars[1].UUID, "Objects", "Box C");
+
+ // Check the receiver
+ PrintPerms(item);
+ Assert.True((item.BasePermissions & (int)PermissionMask.Copy) != 0);
+ Assert.True((item.BasePermissions & (int)PermissionMask.Modify) == 0);
+ Assert.True((item.BasePermissions & (int)PermissionMask.Transfer) == 0);
+
+ // Rez it and check perms in scene too
+ m_Scene.RezObject(m_Avatars[1].ControllingClient, item.ID, UUID.Zero, Vector3.One, Vector3.Zero, UUID.Zero, 0, false, false, false, UUID.Zero);
+ Assert.That(m_Scene.GetSceneObjectGroups().Count, Is.EqualTo(2));
+ SceneObjectGroup copyBoxC = m_Scene.GetSceneObjectGroups().Find(sog => sog.OwnerID == m_Avatars[1].UUID);
+ PrintPerms(copyBoxC);
+ Assert.That(copyBoxC, Is.Not.Null);
+
+ }
+
+ #region Helper Functions
+
+ private void PrintPerms(SceneObjectGroup sog)
+ {
+ Console.WriteLine("SOG " + sog.Name + ": " + String.Format(Perms, (PermissionMask)sog.EffectiveOwnerPerms,
+ (PermissionMask)sog.EffectiveGroupPerms, (PermissionMask)sog.EffectiveEveryOnePerms, (PermissionMask)sog.RootPart.NextOwnerMask));
+
+ }
+
+ private void PrintPerms(InventoryItemBase item)
+ {
+ Console.WriteLine("Inv " + item.Name + ": " + String.Format(Perms, (PermissionMask)item.BasePermissions,
+ (PermissionMask)item.GroupPermissions, (PermissionMask)item.EveryOnePermissions, (PermissionMask)item.NextPermissions));
+
+ }
+
+ private ScenePresence AddScenePresence(string first, string last, UUID id)
+ {
+ UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_Scene, first, last, id, "pw");
+ ScenePresence sp = SceneHelpers.AddScenePresence(m_Scene, id);
+ Assert.That(m_Scene.AuthenticateHandler.GetAgentCircuitData(id), Is.Not.Null);
+
+ return sp;
+ }
+
+ private SceneObjectGroup AddSceneObject(string name, int suffix, int partsToTestCount, UUID ownerID)
+ {
+ TestHelpers.InMethod();
+
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(partsToTestCount, ownerID, name, suffix);
+ so.Name = name;
+ so.Description = name;
+
+ Assert.That(m_Scene.AddNewSceneObject(so, false), Is.True);
+ SceneObjectGroup retrievedSo = m_Scene.GetSceneObjectGroup(so.UUID);
+
+ // If the parts have the same UUID then we will consider them as one and the same
+ Assert.That(retrievedSo.PrimCount, Is.EqualTo(partsToTestCount));
+
+ return so;
+ }
+
+ private InventoryItemBase TakeCopyToInventory(SceneObjectGroup sog)
+ {
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects");
+ Assert.That(objsFolder, Is.Not.Null);
+
+ List localIds = new List(); localIds.Add(sog.LocalId);
+ m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID);
+ Thread.Sleep(5000);
+
+ List items = m_Scene.InventoryService.GetFolderItems(sog.OwnerID, objsFolder.ID);
+ InventoryItemBase item = items.Find(i => i.Name == sog.Name);
+ Assert.That(item, Is.Not.Null);
+
+ return item;
+
+ }
+
+ private InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName)
+ {
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, userID, folderName);
+ Assert.That(objsFolder, Is.Not.Null);
+ List items = m_Scene.InventoryService.GetFolderItems(userID, objsFolder.ID);
+ InventoryItemBase item = items.Find(i => i.Name == itemName);
+ Assert.That(item, Is.Not.Null);
+
+ return item;
+ }
+
+ private void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp)
+ {
+ TestClient giverClient = (TestClient)giverSp.ControllingClient;
+ TestClient receiverClient = (TestClient)receiverSp.ControllingClient;
+
+ UUID initialSessionId = TestHelpers.ParseTail(0x10);
+ byte[] giveImBinaryBucket = new byte[17];
+ byte[] itemIdBytes = itemId.GetBytes();
+ Array.Copy(itemIdBytes, 0, giveImBinaryBucket, 1, itemIdBytes.Length);
+
+ GridInstantMessage giveIm
+ = new GridInstantMessage(
+ m_Scene,
+ giverSp.UUID,
+ giverSp.Name,
+ receiverSp.UUID,
+ (byte)InstantMessageDialog.InventoryOffered,
+ false,
+ "inventory offered msg",
+ initialSessionId,
+ false,
+ Vector3.Zero,
+ giveImBinaryBucket,
+ true);
+
+ giverClient.HandleImprovedInstantMessage(giveIm);
+
+ // These details might not all be correct.
+ GridInstantMessage acceptIm
+ = new GridInstantMessage(
+ m_Scene,
+ receiverSp.UUID,
+ receiverSp.Name,
+ giverSp.UUID,
+ (byte)InstantMessageDialog.InventoryAccepted,
+ false,
+ "inventory accepted msg",
+ initialSessionId,
+ false,
+ Vector3.Zero,
+ null,
+ true);
+
+ receiverClient.HandleImprovedInstantMessage(acceptIm);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
--
cgit v1.1
From 9c6dd5d967d44d2eb222a2382d9f19572b871d87 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 1 May 2017 10:09:31 -0700
Subject: Perms test framework: make a lot of things more generic.
---
OpenSim/Tests/Permissions/Common.cs | 259 +++++++++++++++++++++++
OpenSim/Tests/Permissions/DirectTransferTests.cs | 208 +++---------------
2 files changed, 293 insertions(+), 174 deletions(-)
create mode 100644 OpenSim/Tests/Permissions/Common.cs
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
new file mode 100644
index 0000000..63b91b6
--- /dev/null
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -0,0 +1,259 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Threading;
+using Nini.Config;
+using NUnit.Framework;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Region.CoreModules.World.Permissions;
+using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer;
+using OpenSim.Region.CoreModules.Framework.InventoryAccess;
+using OpenSim.Region.Framework.Scenes.Serialization;
+using OpenSim.Services.Interfaces;
+using OpenSim.Tests.Common;
+using PermissionMask = OpenSim.Framework.PermissionMask;
+
+namespace OpenSim.Tests.Permissions
+{
+ [SetUpFixture]
+ public class Common : OpenSimTestCase
+ {
+ public static Common TheInstance;
+
+ public static TestScene TheScene
+ {
+ get { return TheInstance.m_Scene; }
+ }
+
+ public static ScenePresence[] TheAvatars
+ {
+ get { return TheInstance.m_Avatars; }
+ }
+
+ private static string Perms = "Owner: {0}; Group: {1}; Everyone: {2}; Next: {3}";
+ private TestScene m_Scene;
+ private ScenePresence[] m_Avatars = new ScenePresence[3];
+
+ [SetUp]
+ public override void SetUp()
+ {
+ if (TheInstance == null)
+ TheInstance = this;
+
+ base.SetUp();
+ TestHelpers.EnableLogging();
+
+ IConfigSource config = new IniConfigSource();
+ config.AddConfig("Messaging");
+ config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule");
+ config.AddConfig("Modules");
+ config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
+ config.AddConfig("InventoryService");
+ config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService");
+ config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin");
+
+ m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config);
+ // Add modules
+ SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule());
+
+ SetUpBasicEnvironment();
+ }
+
+ ///
+ /// The basic environment consists of:
+ /// - 3 avatars: A1, A2, A3
+ /// - 6 simple boxes inworld belonging to A0 and with Next Owner perms:
+ /// C, CT, MC, MCT, MT, T
+ /// - Copies of all of these boxes in A0's inventory in the Objects folder
+ /// - One additional box in A0's inventory which is a copy of MCT, but
+ /// with C removed in inventory. This one is called MCT-C
+ ///
+ private void SetUpBasicEnvironment()
+ {
+ Console.WriteLine("===> SetUpBasicEnvironment <===");
+
+ // Add 3 avatars
+ for (int i = 0; i < 3; i++)
+ {
+ UUID id = TestHelpers.ParseTail(i + 1);
+
+ m_Avatars[i] = AddScenePresence("Bot", "Bot_" + (i+1), id);
+ Assert.That(m_Avatars[i], Is.Not.Null);
+ Assert.That(m_Avatars[i].IsChildAgent, Is.False);
+ Assert.That(m_Avatars[i].UUID, Is.EqualTo(id));
+ Assert.That(m_Scene.GetScenePresences().Count, Is.EqualTo(i + 1));
+ }
+
+ AddA1Object("Box C", 10, PermissionMask.Copy);
+ AddA1Object("Box CT", 11, PermissionMask.Copy | PermissionMask.Transfer);
+ AddA1Object("Box MC", 12, PermissionMask.Modify | PermissionMask.Copy);
+ AddA1Object("Box MCT", 13, PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer);
+ AddA1Object("Box MT", 14, PermissionMask.Modify | PermissionMask.Transfer);
+ AddA1Object("Box T", 15, PermissionMask.Transfer);
+
+ Thread.Sleep(5000);
+
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, m_Avatars[0].UUID, "Objects");
+ List items = m_Scene.InventoryService.GetFolderItems(m_Avatars[0].UUID, objsFolder.ID);
+ Assert.That(items.Count, Is.EqualTo(6));
+ }
+
+ private ScenePresence AddScenePresence(string first, string last, UUID id)
+ {
+ UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_Scene, first, last, id, "pw");
+ ScenePresence sp = SceneHelpers.AddScenePresence(m_Scene, id);
+ Assert.That(m_Scene.AuthenticateHandler.GetAgentCircuitData(id), Is.Not.Null);
+
+ return sp;
+ }
+
+ private void AddA1Object(string name, int suffix, PermissionMask nextOwnerPerms)
+ {
+ // Create a Box. Default permissions are just T
+ SceneObjectGroup box = AddSceneObject(name, suffix, 1, m_Avatars[0].UUID);
+ Assert.True((box.RootPart.NextOwnerMask & (int)PermissionMask.Copy) == 0);
+ Assert.True((box.RootPart.NextOwnerMask & (int)PermissionMask.Modify) == 0);
+ Assert.True((box.RootPart.NextOwnerMask & (int)PermissionMask.Transfer) != 0);
+
+ // field = 16 is NextOwner
+ // set = 1 means add the permission; set = 0 means remove permission
+
+ if ((nextOwnerPerms & PermissionMask.Copy) != 0)
+ m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
+ ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, box.LocalId, (uint)PermissionMask.Copy, 1);
+
+ if ((nextOwnerPerms & PermissionMask.Modify) != 0)
+ m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
+ ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, box.LocalId, (uint)PermissionMask.Modify, 1);
+
+ if ((nextOwnerPerms & PermissionMask.Transfer) == 0)
+ m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
+ ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, box.LocalId, (uint)PermissionMask.Transfer, 0);
+
+ PrintPerms(box);
+ AssertPermissions(nextOwnerPerms, (PermissionMask)box.RootPart.NextOwnerMask, box.OwnerID.ToString().Substring(34) + " : " + box.Name);
+
+ TakeCopyToInventory(box);
+
+ }
+
+ public void PrintPerms(SceneObjectGroup sog)
+ {
+ Console.WriteLine("SOG " + sog.Name + " (" + sog.OwnerID.ToString().Substring(34) + "): " +
+ String.Format(Perms, (PermissionMask)sog.EffectiveOwnerPerms,
+ (PermissionMask)sog.EffectiveGroupPerms, (PermissionMask)sog.EffectiveEveryOnePerms, (PermissionMask)sog.RootPart.NextOwnerMask));
+
+ }
+
+ public void PrintPerms(InventoryItemBase item)
+ {
+ Console.WriteLine("Inv " + item.Name + " (" + item.Owner.ToString().Substring(34) + "): " +
+ String.Format(Perms, (PermissionMask)item.BasePermissions,
+ (PermissionMask)item.GroupPermissions, (PermissionMask)item.EveryOnePermissions, (PermissionMask)item.NextPermissions));
+
+ }
+
+ public void AssertPermissions(PermissionMask desired, PermissionMask actual, string message)
+ {
+ if ((desired & PermissionMask.Copy) != 0)
+ Assert.True((actual & PermissionMask.Copy) != 0, message);
+ else
+ Assert.True((actual & PermissionMask.Copy) == 0, message);
+
+ if ((desired & PermissionMask.Modify) != 0)
+ Assert.True((actual & PermissionMask.Modify) != 0, message);
+ else
+ Assert.True((actual & PermissionMask.Modify) == 0, message);
+
+ if ((desired & PermissionMask.Transfer) != 0)
+ Assert.True((actual & PermissionMask.Transfer) != 0, message);
+ else
+ Assert.True((actual & PermissionMask.Transfer) == 0, message);
+
+ }
+
+ public SceneObjectGroup AddSceneObject(string name, int suffix, int partsToTestCount, UUID ownerID)
+ {
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(partsToTestCount, ownerID, name, suffix);
+ so.Name = name;
+ so.Description = name;
+
+ Assert.That(m_Scene.AddNewSceneObject(so, false), Is.True);
+ SceneObjectGroup retrievedSo = m_Scene.GetSceneObjectGroup(so.UUID);
+
+ // If the parts have the same UUID then we will consider them as one and the same
+ Assert.That(retrievedSo.PrimCount, Is.EqualTo(partsToTestCount));
+
+ return so;
+ }
+
+ public void TakeCopyToInventory(SceneObjectGroup sog)
+ {
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects");
+ Assert.That(objsFolder, Is.Not.Null);
+
+ List localIds = new List(); localIds.Add(sog.LocalId);
+ // This is an async operation
+ m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID);
+ }
+
+ public InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName)
+ {
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, userID, folderName);
+ Assert.That(objsFolder, Is.Not.Null);
+ List items = m_Scene.InventoryService.GetFolderItems(userID, objsFolder.ID);
+ InventoryItemBase item = items.Find(i => i.Name == itemName);
+ Assert.That(item, Is.Not.Null);
+
+ return item;
+ }
+
+ public void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp)
+ {
+ TestClient giverClient = (TestClient)giverSp.ControllingClient;
+ TestClient receiverClient = (TestClient)receiverSp.ControllingClient;
+
+ UUID initialSessionId = TestHelpers.ParseTail(0x10);
+ byte[] giveImBinaryBucket = new byte[17];
+ byte[] itemIdBytes = itemId.GetBytes();
+ Array.Copy(itemIdBytes, 0, giveImBinaryBucket, 1, itemIdBytes.Length);
+
+ GridInstantMessage giveIm
+ = new GridInstantMessage(
+ m_Scene,
+ giverSp.UUID,
+ giverSp.Name,
+ receiverSp.UUID,
+ (byte)InstantMessageDialog.InventoryOffered,
+ false,
+ "inventory offered msg",
+ initialSessionId,
+ false,
+ Vector3.Zero,
+ giveImBinaryBucket,
+ true);
+
+ giverClient.HandleImprovedInstantMessage(giveIm);
+
+ // These details might not all be correct.
+ GridInstantMessage acceptIm
+ = new GridInstantMessage(
+ m_Scene,
+ receiverSp.UUID,
+ receiverSp.Name,
+ giverSp.UUID,
+ (byte)InstantMessageDialog.InventoryAccepted,
+ false,
+ "inventory accepted msg",
+ initialSessionId,
+ false,
+ Vector3.Zero,
+ null,
+ true);
+
+ receiverClient.HandleImprovedInstantMessage(acceptIm);
+ }
+ }
+}
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index 7716776..e103d01 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -48,205 +48,65 @@ namespace OpenSim.Tests.Permissions
/// Basic scene object tests (create, read and delete but not update).
///
[TestFixture]
- public class DirectTransferTests : OpenSimTestCase
+ public class DirectTransferTests
{
- private static string Perms = "Owner: {0}; Group: {1}; Everyone: {2}; Next: {3}";
- protected TestScene m_Scene;
- private ScenePresence[] m_Avatars = new ScenePresence[3];
[SetUp]
- public override void SetUp()
+ public void SetUp()
{
- base.SetUp();
- TestHelpers.EnableLogging();
-
- IConfigSource config = new IniConfigSource();
- config.AddConfig("Messaging");
- config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule");
- config.AddConfig("Modules");
- config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
- config.AddConfig("InventoryService");
- config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService");
- config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin");
-
- m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config);
- // Add modules
- SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule());
-
- // Add 3 avatars
- for (int i = 0; i < 3; i++)
- {
- UUID id = TestHelpers.ParseTail(i+1);
-
- m_Avatars[i] = AddScenePresence("Bot", "Bot_" + i, id);
- Assert.That(m_Avatars[i], Is.Not.Null);
- Assert.That(m_Avatars[i].IsChildAgent, Is.False);
- Assert.That(m_Avatars[i].UUID, Is.EqualTo(id));
-
- Assert.That(m_Scene.GetScenePresences().Count, Is.EqualTo(i+1));
- }
}
///
- /// Test adding an object to a scene.
+ /// Test giving a C object.
///
[Test]
public void TestGiveCBox()
{
TestHelpers.InMethod();
- // Create a C Box
- SceneObjectGroup boxC = AddSceneObject("Box C", 10, 1, m_Avatars[0].UUID);
-
- // field = 16 is NextOwner
- // set = 1 means add the permission; set = 0 means remove permission
- m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
- ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Copy, 1);
-
- m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID,
- ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Transfer, 0);
- PrintPerms(boxC);
-
- Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Copy) != 0);
- Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Modify) == 0);
- Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Transfer) == 0);
-
- InventoryItemBase item = TakeCopyToInventory(boxC);
-
- GiveInventoryItem(item.ID, m_Avatars[0], m_Avatars[1]);
-
- item = GetItemFromInventory(m_Avatars[1].UUID, "Objects", "Box C");
-
- // Check the receiver
- PrintPerms(item);
- Assert.True((item.BasePermissions & (int)PermissionMask.Copy) != 0);
- Assert.True((item.BasePermissions & (int)PermissionMask.Modify) == 0);
- Assert.True((item.BasePermissions & (int)PermissionMask.Transfer) == 0);
-
- // Rez it and check perms in scene too
- m_Scene.RezObject(m_Avatars[1].ControllingClient, item.ID, UUID.Zero, Vector3.One, Vector3.Zero, UUID.Zero, 0, false, false, false, UUID.Zero);
- Assert.That(m_Scene.GetSceneObjectGroups().Count, Is.EqualTo(2));
- SceneObjectGroup copyBoxC = m_Scene.GetSceneObjectGroups().Find(sog => sog.OwnerID == m_Avatars[1].UUID);
- PrintPerms(copyBoxC);
- Assert.That(copyBoxC, Is.Not.Null);
-
- }
-
- #region Helper Functions
-
- private void PrintPerms(SceneObjectGroup sog)
- {
- Console.WriteLine("SOG " + sog.Name + ": " + String.Format(Perms, (PermissionMask)sog.EffectiveOwnerPerms,
- (PermissionMask)sog.EffectiveGroupPerms, (PermissionMask)sog.EffectiveEveryOnePerms, (PermissionMask)sog.RootPart.NextOwnerMask));
-
- }
-
- private void PrintPerms(InventoryItemBase item)
- {
- Console.WriteLine("Inv " + item.Name + ": " + String.Format(Perms, (PermissionMask)item.BasePermissions,
- (PermissionMask)item.GroupPermissions, (PermissionMask)item.EveryOnePermissions, (PermissionMask)item.NextPermissions));
-
+ // C, CT, MC, MCT, MT, T
+ string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T"};
+ PermissionMask[] perms = new PermissionMask[6] {
+ PermissionMask.Copy,
+ PermissionMask.Copy | PermissionMask.Transfer,
+ PermissionMask.Modify | PermissionMask.Copy,
+ PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer,
+ PermissionMask.Modify | PermissionMask.Transfer,
+ PermissionMask.Transfer
+ };
+
+ for (int i = 0; i < 6; i++)
+ TestOneBox(names[i], perms[i]);
}
- private ScenePresence AddScenePresence(string first, string last, UUID id)
+ private void TestOneBox(string name, PermissionMask mask)
{
- UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_Scene, first, last, id, "pw");
- ScenePresence sp = SceneHelpers.AddScenePresence(m_Scene, id);
- Assert.That(m_Scene.AuthenticateHandler.GetAgentCircuitData(id), Is.Not.Null);
-
- return sp;
- }
-
- private SceneObjectGroup AddSceneObject(string name, int suffix, int partsToTestCount, UUID ownerID)
- {
- TestHelpers.InMethod();
-
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(partsToTestCount, ownerID, name, suffix);
- so.Name = name;
- so.Description = name;
-
- Assert.That(m_Scene.AddNewSceneObject(so, false), Is.True);
- SceneObjectGroup retrievedSo = m_Scene.GetSceneObjectGroup(so.UUID);
+ InventoryItemBase item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[0].UUID, "Objects", name);
- // If the parts have the same UUID then we will consider them as one and the same
- Assert.That(retrievedSo.PrimCount, Is.EqualTo(partsToTestCount));
+ Common.TheInstance.GiveInventoryItem(item.ID, Common.TheAvatars[0], Common.TheAvatars[1]);
- return so;
- }
+ item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", name);
- private InventoryItemBase TakeCopyToInventory(SceneObjectGroup sog)
- {
- InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects");
- Assert.That(objsFolder, Is.Not.Null);
+ // Check the receiver
+ Common.TheInstance.PrintPerms(item);
+ Common.TheInstance.AssertPermissions(mask, (PermissionMask)item.BasePermissions, item.Owner.ToString().Substring(34) + " : " + item.Name);
- List localIds = new List(); localIds.Add(sog.LocalId);
- m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID);
- Thread.Sleep(5000);
+ int nObjects = Common.TheScene.GetSceneObjectGroups().Count;
+ // Rez it and check perms in scene too
+ Common.TheScene.RezObject(Common.TheAvatars[1].ControllingClient, item.ID, UUID.Zero, Vector3.One, Vector3.Zero, UUID.Zero, 0, false, false, false, UUID.Zero);
+ Assert.That(Common.TheScene.GetSceneObjectGroups().Count, Is.EqualTo(nObjects + 1));
- List items = m_Scene.InventoryService.GetFolderItems(sog.OwnerID, objsFolder.ID);
- InventoryItemBase item = items.Find(i => i.Name == sog.Name);
- Assert.That(item, Is.Not.Null);
+ SceneObjectGroup box = Common.TheScene.GetSceneObjectGroups().Find(sog => sog.OwnerID == Common.TheAvatars[1].UUID && sog.Name == name);
+ Common.TheInstance.PrintPerms(box);
+ Assert.That(box, Is.Not.Null);
- return item;
+ // Check Owner permissions
+ Common.TheInstance.AssertPermissions(mask, (PermissionMask)box.EffectiveOwnerPerms, box.OwnerID.ToString().Substring(34) + " : " + box.Name);
- }
+ // Check Next Owner permissions
+ Common.TheInstance.AssertPermissions(mask, (PermissionMask)box.RootPart.NextOwnerMask, box.OwnerID.ToString().Substring(34) + " : " + box.Name);
- private InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName)
- {
- InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, userID, folderName);
- Assert.That(objsFolder, Is.Not.Null);
- List items = m_Scene.InventoryService.GetFolderItems(userID, objsFolder.ID);
- InventoryItemBase item = items.Find(i => i.Name == itemName);
- Assert.That(item, Is.Not.Null);
-
- return item;
}
- private void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp)
- {
- TestClient giverClient = (TestClient)giverSp.ControllingClient;
- TestClient receiverClient = (TestClient)receiverSp.ControllingClient;
-
- UUID initialSessionId = TestHelpers.ParseTail(0x10);
- byte[] giveImBinaryBucket = new byte[17];
- byte[] itemIdBytes = itemId.GetBytes();
- Array.Copy(itemIdBytes, 0, giveImBinaryBucket, 1, itemIdBytes.Length);
-
- GridInstantMessage giveIm
- = new GridInstantMessage(
- m_Scene,
- giverSp.UUID,
- giverSp.Name,
- receiverSp.UUID,
- (byte)InstantMessageDialog.InventoryOffered,
- false,
- "inventory offered msg",
- initialSessionId,
- false,
- Vector3.Zero,
- giveImBinaryBucket,
- true);
-
- giverClient.HandleImprovedInstantMessage(giveIm);
-
- // These details might not all be correct.
- GridInstantMessage acceptIm
- = new GridInstantMessage(
- m_Scene,
- receiverSp.UUID,
- receiverSp.Name,
- giverSp.UUID,
- (byte)InstantMessageDialog.InventoryAccepted,
- false,
- "inventory accepted msg",
- initialSessionId,
- false,
- Vector3.Zero,
- null,
- true);
-
- receiverClient.HandleImprovedInstantMessage(acceptIm);
- }
- #endregion
}
}
\ No newline at end of file
--
cgit v1.1
From 1ca2a7937ebf246bb2ebe4b1355f8068912ea4b0 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 1 May 2017 14:58:03 -0700
Subject: Permissions tests: added test with 2 direct transfers with permission
changes in between (in inventory)
---
OpenSim/Tests/Permissions/Common.cs | 64 +++++++++++++++++++++++-
OpenSim/Tests/Permissions/DirectTransferTests.cs | 51 +++++++++++++++++--
2 files changed, 110 insertions(+), 5 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
index 63b91b6..84dadf2 100644
--- a/OpenSim/Tests/Permissions/Common.cs
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -93,11 +93,16 @@ namespace OpenSim.Tests.Permissions
AddA1Object("Box MT", 14, PermissionMask.Modify | PermissionMask.Transfer);
AddA1Object("Box T", 15, PermissionMask.Transfer);
+ // MCT-C
+ AddA1Object("Box MCT-C", 16, PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer);
+
Thread.Sleep(5000);
InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, m_Avatars[0].UUID, "Objects");
List items = m_Scene.InventoryService.GetFolderItems(m_Avatars[0].UUID, objsFolder.ID);
- Assert.That(items.Count, Is.EqualTo(6));
+ Assert.That(items.Count, Is.EqualTo(7));
+
+ RevokePermission(0, "Box MCT-C", PermissionMask.Copy);
}
private ScenePresence AddScenePresence(string first, string last, UUID id)
@@ -139,6 +144,30 @@ namespace OpenSim.Tests.Permissions
}
+ public void RevokePermission(int ownerIndex, string name, PermissionMask perm)
+ {
+ InventoryItemBase item = Common.TheInstance.GetItemFromInventory(m_Avatars[ownerIndex].UUID, "Objects", name);
+ Assert.That(item, Is.Not.Null);
+
+ // Clone it, so to avoid aliasing -- just like the viewer does.
+ InventoryItemBase clone = Common.TheInstance.CloneInventoryItem(item);
+ // Revoke the permission in this copy
+ clone.NextPermissions &= ~(uint)perm;
+ Common.TheInstance.AssertPermissions((PermissionMask)clone.NextPermissions & ~perm,
+ (PermissionMask)clone.NextPermissions, Common.TheInstance.IdStr(clone));
+ Assert.That(clone.ID == item.ID);
+
+ // Update properties of the item in inventory. This should affect the original item above.
+ Common.TheScene.UpdateInventoryItemAsset(m_Avatars[ownerIndex].ControllingClient, UUID.Zero, clone.ID, clone);
+
+ item = Common.TheInstance.GetItemFromInventory(m_Avatars[ownerIndex].UUID, "Objects", name);
+ Assert.That(item, Is.Not.Null);
+ Common.TheInstance.PrintPerms(item);
+ Common.TheInstance.AssertPermissions((PermissionMask)item.NextPermissions & ~perm,
+ (PermissionMask)item.NextPermissions, Common.TheInstance.IdStr(item));
+
+ }
+
public void PrintPerms(SceneObjectGroup sog)
{
Console.WriteLine("SOG " + sog.Name + " (" + sog.OwnerID.ToString().Substring(34) + "): " +
@@ -210,6 +239,39 @@ namespace OpenSim.Tests.Permissions
return item;
}
+ public InventoryItemBase CloneInventoryItem(InventoryItemBase item)
+ {
+ InventoryItemBase clone = new InventoryItemBase(item.ID);
+ clone.Name = item.Name;
+ clone.Description = item.Description;
+ clone.AssetID = item.AssetID;
+ clone.AssetType = item.AssetType;
+ clone.BasePermissions = item.BasePermissions;
+ clone.CreatorId = item.CreatorId;
+ clone.CurrentPermissions = item.CurrentPermissions;
+ clone.EveryOnePermissions = item.EveryOnePermissions;
+ clone.Flags = item.Flags;
+ clone.Folder = item.Folder;
+ clone.GroupID = item.GroupID;
+ clone.GroupOwned = item.GroupOwned;
+ clone.GroupPermissions = item.GroupPermissions;
+ clone.InvType = item.InvType;
+ clone.NextPermissions = item.NextPermissions;
+ clone.Owner = item.Owner;
+
+ return clone;
+ }
+
+ public string IdStr(InventoryItemBase item)
+ {
+ return item.Owner.ToString().Substring(34) + " : " + item.Name;
+ }
+
+ public string IdStr(SceneObjectGroup sog)
+ {
+ return sog.OwnerID.ToString().Substring(34) + " : " + sog.Name;
+ }
+
public void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp)
{
TestClient giverClient = (TestClient)giverSp.ControllingClient;
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index e103d01..3ca711a 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -48,7 +48,7 @@ namespace OpenSim.Tests.Permissions
/// Basic scene object tests (create, read and delete but not update).
///
[TestFixture]
- public class DirectTransferTests
+ public class DirectTransferTests
{
[SetUp]
@@ -57,15 +57,15 @@ namespace OpenSim.Tests.Permissions
}
///
- /// Test giving a C object.
+ /// Test giving simple objecta with various combinations of next owner perms.
///
[Test]
- public void TestGiveCBox()
+ public void TestGiveBox()
{
TestHelpers.InMethod();
// C, CT, MC, MCT, MT, T
- string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T"};
+ string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T" };
PermissionMask[] perms = new PermissionMask[6] {
PermissionMask.Copy,
PermissionMask.Copy | PermissionMask.Transfer,
@@ -108,5 +108,48 @@ namespace OpenSim.Tests.Permissions
}
+ ///
+ /// Test giving simple objecta with variour combinations of next owner perms.
+ ///
+ [Test]
+ public void TestDoubleGiveWithChange()
+ {
+ TestHelpers.InMethod();
+
+ string name = "Box MCT-C";
+ InventoryItemBase item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[0].UUID, "Objects", name);
+
+ // Now give the item to A2. We give the original item, not a clone.
+ // The giving methods are supposed to duplicate it.
+ Common.TheInstance.GiveInventoryItem(item.ID, Common.TheAvatars[0], Common.TheAvatars[1]);
+
+ item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", name);
+
+ // Check the receiver
+ Common.TheInstance.PrintPerms(item);
+ Common.TheInstance.AssertPermissions(PermissionMask.Modify | PermissionMask.Transfer,
+ (PermissionMask)item.BasePermissions, Common.TheInstance.IdStr(item));
+
+ // ---------------------------
+ // Second transfer
+ //----------------------------
+
+ // A2 revokes M
+ Common.TheInstance.RevokePermission(1, name, PermissionMask.Modify);
+
+ item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", name);
+
+ // Now give the item to A3. We give the original item, not a clone.
+ // The giving methods are supposed to duplicate it.
+ Common.TheInstance.GiveInventoryItem(item.ID, Common.TheAvatars[1], Common.TheAvatars[2]);
+
+ item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[2].UUID, "Objects", name);
+
+ // Check the receiver
+ Common.TheInstance.PrintPerms(item);
+ Common.TheInstance.AssertPermissions(PermissionMask.Transfer,
+ (PermissionMask)item.BasePermissions, Common.TheInstance.IdStr(item));
+
+ }
}
}
\ No newline at end of file
--
cgit v1.1
From 3c43cdbbcc2687e2f5d4319c5c3c3cbad4930fab Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 1 May 2017 16:42:47 -0700
Subject: Added some indirect transfer tests -- Take Copy by another avatar
---
OpenSim/Tests/Permissions/Common.cs | 40 ++++--
OpenSim/Tests/Permissions/DirectTransferTests.cs | 10 --
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 137 +++++++++++++++++++++
3 files changed, 169 insertions(+), 18 deletions(-)
create mode 100644 OpenSim/Tests/Permissions/IndirectTransferTests.cs
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
index 84dadf2..e62991b 100644
--- a/OpenSim/Tests/Permissions/Common.cs
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -1,6 +1,31 @@
-using System;
+/*
+ * 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.Reflection;
using System.Threading;
using Nini.Config;
using NUnit.Framework;
@@ -10,7 +35,6 @@ using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.CoreModules.World.Permissions;
using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer;
using OpenSim.Region.CoreModules.Framework.InventoryAccess;
-using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using PermissionMask = OpenSim.Framework.PermissionMask;
@@ -67,7 +91,7 @@ namespace OpenSim.Tests.Permissions
/// - 6 simple boxes inworld belonging to A0 and with Next Owner perms:
/// C, CT, MC, MCT, MT, T
/// - Copies of all of these boxes in A0's inventory in the Objects folder
- /// - One additional box in A0's inventory which is a copy of MCT, but
+ /// - One additional box inworld and in A0's inventory which is a copy of MCT, but
/// with C removed in inventory. This one is called MCT-C
///
private void SetUpBasicEnvironment()
@@ -140,7 +164,7 @@ namespace OpenSim.Tests.Permissions
PrintPerms(box);
AssertPermissions(nextOwnerPerms, (PermissionMask)box.RootPart.NextOwnerMask, box.OwnerID.ToString().Substring(34) + " : " + box.Name);
- TakeCopyToInventory(box);
+ TakeCopyToInventory(0, box);
}
@@ -218,14 +242,14 @@ namespace OpenSim.Tests.Permissions
return so;
}
- public void TakeCopyToInventory(SceneObjectGroup sog)
+ public void TakeCopyToInventory(int userIndex, SceneObjectGroup sog)
{
- InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects");
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, m_Avatars[userIndex].UUID, "Objects");
Assert.That(objsFolder, Is.Not.Null);
List localIds = new List(); localIds.Add(sog.LocalId);
// This is an async operation
- m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID);
+ m_Scene.DeRezObjects((IClientAPI)m_Avatars[userIndex].ClientView, localIds, m_Avatars[userIndex].UUID, DeRezAction.TakeCopy, objsFolder.ID);
}
public InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName)
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index 3ca711a..3b711a1 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -25,20 +25,10 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Threading;
-using Nini.Config;
using NUnit.Framework;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
-using OpenSim.Region.CoreModules.World.Permissions;
-using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer;
-using OpenSim.Region.CoreModules.Framework.InventoryAccess;
-using OpenSim.Region.Framework.Scenes.Serialization;
-using OpenSim.Services.Interfaces;
using OpenSim.Tests.Common;
using PermissionMask = OpenSim.Framework.PermissionMask;
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
new file mode 100644
index 0000000..6a6ba2f
--- /dev/null
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -0,0 +1,137 @@
+/*
+ * 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.Collections.Generic;
+using System.Threading;
+using NUnit.Framework;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Tests.Common;
+using PermissionMask = OpenSim.Framework.PermissionMask;
+
+namespace OpenSim.Tests.Permissions
+{
+ ///
+ /// Basic scene object tests (create, read and delete but not update).
+ ///
+ [TestFixture]
+ public class IndirectTransferTests
+ {
+
+ [SetUp]
+ public void SetUp()
+ {
+ // Delete everything in A2 and A3's Objects folders from previous tests
+ for (int i = 1; i < 3; i++)
+ {
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[i].UUID, "Objects");
+ Assert.That(objsFolder, Is.Not.Null);
+
+ List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID);
+ List ids = new List();
+ foreach (InventoryItemBase it in items)
+ ids.Add(it.ID);
+
+ Common.TheScene.InventoryService.DeleteItems(Common.TheAvatars[i].UUID, ids);
+ items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID);
+ Assert.That(items.Count, Is.EqualTo(0), "A" + (i+1));
+ }
+ }
+
+ ///
+ /// Test giving simple objecta with various combinations of next owner perms.
+ ///
+ [Test]
+ public void SimpleTakeCopy()
+ {
+ TestHelpers.InMethod();
+
+ // The Objects folder of A2
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[1].UUID, "Objects");
+
+ // C, CT, MC, MCT, MT, T
+ string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T" };
+ PermissionMask[] perms = new PermissionMask[6] {
+ PermissionMask.Copy,
+ PermissionMask.Copy | PermissionMask.Transfer,
+ PermissionMask.Modify | PermissionMask.Copy,
+ PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer,
+ PermissionMask.Modify | PermissionMask.Transfer,
+ PermissionMask.Transfer
+ };
+
+ // Try A2 takes copies of objects that cannot be copied.
+ for (int i = 0; i < 6; i++)
+ TakeOneBox(Common.TheScene.GetSceneObjectGroups(), names[i], perms[i]);
+ Thread.Sleep(5000);
+
+ List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[1].UUID, objsFolder.ID);
+ Assert.That(items.Count, Is.EqualTo(0));
+
+ // A1 makes the objects copyable
+ for (int i = 0; i < 6; i++)
+ MakeCopyable(Common.TheScene.GetSceneObjectGroups(), names[i]);
+
+ // Try A2 takes copies of objects that can be copied.
+ for (int i = 0; i < 6; i++)
+ TakeOneBox(Common.TheScene.GetSceneObjectGroups(), names[i], perms[i]);
+ Thread.Sleep(5000);
+
+ items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[1].UUID, objsFolder.ID);
+ Assert.That(items.Count, Is.EqualTo(6));
+
+ for (int i = 0; i < 6; i++)
+ {
+ InventoryItemBase item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", names[i]);
+ Assert.That(item, Is.Not.Null);
+ Common.TheInstance.AssertPermissions(perms[i], (PermissionMask)item.BasePermissions, Common.TheInstance.IdStr(item));
+ }
+ }
+
+ private void TakeOneBox(List objs, string name, PermissionMask mask)
+ {
+ SceneObjectGroup box = objs.Find(sog => sog.Name == name && sog.OwnerID == Common.TheAvatars[0].UUID);
+ Assert.That(box, Is.Not.Null, name);
+
+ // A2's inventory (index 1)
+ Common.TheInstance.TakeCopyToInventory(1, box);
+ }
+
+ private void MakeCopyable(List objs, string name)
+ {
+ SceneObjectGroup box = objs.Find(sog => sog.Name == name && sog.OwnerID == Common.TheAvatars[0].UUID);
+ Assert.That(box, Is.Not.Null, name);
+
+ // field = 8 is Everyone
+ // set = 1 means add the permission; set = 0 means remove permission
+ Common.TheScene.HandleObjectPermissionsUpdate((IClientAPI)Common.TheAvatars[0].ClientView, Common.TheAvatars[0].UUID,
+ Common.TheAvatars[0].ControllingClient.SessionId, 8, box.LocalId, (uint)PermissionMask.Copy, 1);
+ Common.TheInstance.PrintPerms(box);
+ }
+ }
+}
\ No newline at end of file
--
cgit v1.1
From 9c82ff76730c9eff80cace1ddece0148d8d0a7ee Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 1 May 2017 16:49:42 -0700
Subject: Shuffle some code around
---
OpenSim/Tests/Permissions/Common.cs | 20 ++++++++++++++++++++
OpenSim/Tests/Permissions/DirectTransferTests.cs | 1 +
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 16 +---------------
3 files changed, 22 insertions(+), 15 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
index e62991b..f93c120 100644
--- a/OpenSim/Tests/Permissions/Common.cs
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -286,6 +286,26 @@ namespace OpenSim.Tests.Permissions
return clone;
}
+ public void DeleteObjectsFolders()
+ {
+ // Delete everything in A2 and A3's Objects folders, so we can restart
+ for (int i = 1; i < 3; i++)
+ {
+ InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[i].UUID, "Objects");
+ Assert.That(objsFolder, Is.Not.Null);
+
+ List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID);
+ List ids = new List();
+ foreach (InventoryItemBase it in items)
+ ids.Add(it.ID);
+
+ Common.TheScene.InventoryService.DeleteItems(Common.TheAvatars[i].UUID, ids);
+ items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID);
+ Assert.That(items.Count, Is.EqualTo(0), "A" + (i + 1));
+ }
+
+ }
+
public string IdStr(InventoryItemBase item)
{
return item.Owner.ToString().Substring(34) + " : " + item.Name;
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index 3b711a1..c68bbdf 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -44,6 +44,7 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
+ Common.TheInstance.DeleteObjectsFolders();
}
///
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index 6a6ba2f..7d8027f 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -46,21 +46,7 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
- // Delete everything in A2 and A3's Objects folders from previous tests
- for (int i = 1; i < 3; i++)
- {
- InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[i].UUID, "Objects");
- Assert.That(objsFolder, Is.Not.Null);
-
- List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID);
- List ids = new List();
- foreach (InventoryItemBase it in items)
- ids.Add(it.ID);
-
- Common.TheScene.InventoryService.DeleteItems(Common.TheAvatars[i].UUID, ids);
- items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID);
- Assert.That(items.Count, Is.EqualTo(0), "A" + (i+1));
- }
+ Common.TheInstance.DeleteObjectsFolders();
}
///
--
cgit v1.1
From 3a8dd24fd1c1aead0a81a4a9d63b59bbf9f10855 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Thu, 4 May 2017 11:37:13 +0100
Subject: move deep effective permissions aggregation to first time use and
not on changes. There flag it is need with InvalidateDeepEffectivePerms().
Add config options PropagateGroupShareOutwards and PropagateAnyOneOutwards
---
OpenSim/Tests/Common/Helpers/SceneHelpers.cs | 2 ++
1 file changed, 2 insertions(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
index fbd7e90..7902fb1 100644
--- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
@@ -626,6 +626,7 @@ namespace OpenSim.Tests.Common
//part.ObjectFlags |= (uint)PrimFlags.Phantom;
scene.AddNewSceneObject(so, true);
+ so.InvalidateDeepEffectivePerms();
return so;
}
@@ -652,6 +653,7 @@ namespace OpenSim.Tests.Common
SceneObjectGroup so = CreateSceneObject(parts, ownerId, partNamePrefix, uuidTail);
scene.AddNewSceneObject(so, false);
+ so.InvalidateDeepEffectivePerms();
return so;
}
--
cgit v1.1
From dd883194959e082b3489deaa9935291ba2c6e53a Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Thu, 4 May 2017 18:20:10 -0700
Subject: Add a groups module to the perms test suite
---
OpenSim/Tests/Permissions/Common.cs | 9 +++++++++
1 file changed, 9 insertions(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
index f93c120..4ecce38 100644
--- a/OpenSim/Tests/Permissions/Common.cs
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -72,12 +72,21 @@ namespace OpenSim.Tests.Permissions
IConfigSource config = new IniConfigSource();
config.AddConfig("Messaging");
config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule");
+
config.AddConfig("Modules");
config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule");
+
config.AddConfig("InventoryService");
config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService");
config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin");
+ config.AddConfig("Groups");
+ config.Configs["Groups"].Set("Enabled", "true");
+ config.Configs["Groups"].Set("Module", "Groups Module V2");
+ config.Configs["Groups"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestGroupsDataPlugin");
+ config.Configs["Groups"].Set("ServicesConnectorModule", "Groups Local Service Connector");
+ config.Configs["Groups"].Set("LocalService", "local");
+
m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config);
// Add modules
SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule());
--
cgit v1.1
From 3f641d98bd4c9fa1ce5b98c8d071f53596d06a7a Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Thu, 4 May 2017 20:17:54 -0700
Subject: Added a fully functional groups data layer for testing.
---
OpenSim/Tests/Common/Mock/TestGroupsDataPlugin.cs | 339 ++++++++++++++++++++++
1 file changed, 339 insertions(+)
create mode 100644 OpenSim/Tests/Common/Mock/TestGroupsDataPlugin.cs
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestGroupsDataPlugin.cs b/OpenSim/Tests/Common/Mock/TestGroupsDataPlugin.cs
new file mode 100644
index 0000000..8e2d8e6
--- /dev/null
+++ b/OpenSim/Tests/Common/Mock/TestGroupsDataPlugin.cs
@@ -0,0 +1,339 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using OpenMetaverse;
+using OpenSim.Data;
+
+namespace OpenSim.Tests.Common.Mock
+{
+ public class TestGroupsDataPlugin : IGroupsData
+ {
+ class CompositeKey
+ {
+ private readonly string _key;
+ public string Key
+ {
+ get { return _key; }
+ }
+
+ public CompositeKey(UUID _k1, string _k2)
+ {
+ _key = _k1.ToString() + _k2;
+ }
+
+ public CompositeKey(UUID _k1, string _k2, string _k3)
+ {
+ _key = _k1.ToString() + _k2 + _k3;
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (obj is CompositeKey)
+ {
+ return Key == ((CompositeKey)obj).Key;
+ }
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return Key;
+ }
+ }
+
+ private Dictionary m_Groups;
+ private Dictionary m_Membership;
+ private Dictionary m_Roles;
+ private Dictionary m_RoleMembership;
+ private Dictionary m_Invites;
+ private Dictionary m_Notices;
+ private Dictionary m_Principals;
+
+ public TestGroupsDataPlugin(string connectionString, string realm)
+ {
+ m_Groups = new Dictionary();
+ m_Membership = new Dictionary();
+ m_Roles = new Dictionary();
+ m_RoleMembership = new Dictionary();
+ m_Invites = new Dictionary();
+ m_Notices = new Dictionary();
+ m_Principals = new Dictionary();
+ }
+
+ #region groups table
+ public bool StoreGroup(GroupData data)
+ {
+ return false;
+ }
+
+ public GroupData RetrieveGroup(UUID groupID)
+ {
+ if (m_Groups.ContainsKey(groupID))
+ return m_Groups[groupID];
+
+ return null;
+ }
+
+ public GroupData RetrieveGroup(string name)
+ {
+ return m_Groups.Values.First(g => g.Data.ContainsKey("Name") && g.Data["Name"] == name);
+ }
+
+ public GroupData[] RetrieveGroups(string pattern)
+ {
+ if (string.IsNullOrEmpty(pattern))
+ pattern = "1";
+
+ IEnumerable groups = m_Groups.Values.Where(g => g.Data.ContainsKey("Name") && (g.Data["Name"].StartsWith(pattern) || g.Data["Name"].EndsWith(pattern)));
+
+ return (groups != null) ? groups.ToArray() : new GroupData[0];
+ }
+
+ public bool DeleteGroup(UUID groupID)
+ {
+ return m_Groups.Remove(groupID);
+ }
+
+ public int GroupsCount()
+ {
+ return m_Groups.Count;
+ }
+ #endregion
+
+ #region membership table
+ public MembershipData RetrieveMember(UUID groupID, string pricipalID)
+ {
+ CompositeKey dkey = new CompositeKey(groupID, pricipalID);
+ if (m_Membership.ContainsKey(dkey))
+ return m_Membership[dkey];
+
+ return null;
+ }
+
+ public MembershipData[] RetrieveMembers(UUID groupID)
+ {
+ IEnumerable keys = m_Membership.Keys.Where(k => k.Key.StartsWith(groupID.ToString()));
+ return keys.Where(m_Membership.ContainsKey).Select(x => m_Membership[x]).ToArray();
+ }
+
+ public MembershipData[] RetrieveMemberships(string principalID)
+ {
+ IEnumerable keys = m_Membership.Keys.Where(k => k.Key.EndsWith(principalID.ToString()));
+ return keys.Where(m_Membership.ContainsKey).Select(x => m_Membership[x]).ToArray();
+ }
+
+ public MembershipData[] RetrievePrincipalGroupMemberships(string principalID)
+ {
+ return RetrieveMemberships(principalID);
+ }
+
+ public MembershipData RetrievePrincipalGroupMembership(string principalID, UUID groupID)
+ {
+ CompositeKey dkey = new CompositeKey(groupID, principalID);
+ if (m_Membership.ContainsKey(dkey))
+ return m_Membership[dkey];
+ return null;
+ }
+
+ public bool StoreMember(MembershipData data)
+ {
+ CompositeKey dkey = new CompositeKey(data.GroupID, data.PrincipalID);
+ m_Membership[dkey] = data;
+ return true;
+ }
+
+ public bool DeleteMember(UUID groupID, string principalID)
+ {
+ CompositeKey dkey = new CompositeKey(groupID, principalID);
+ if (m_Membership.ContainsKey(dkey))
+ return m_Membership.Remove(dkey);
+
+ return false;
+ }
+
+ public int MemberCount(UUID groupID)
+ {
+ return m_Membership.Count;
+ }
+ #endregion
+
+ #region roles table
+ public bool StoreRole(RoleData data)
+ {
+ CompositeKey dkey = new CompositeKey(data.GroupID, data.RoleID.ToString());
+ m_Roles[dkey] = data;
+ return true;
+ }
+
+ public RoleData RetrieveRole(UUID groupID, UUID roleID)
+ {
+ CompositeKey dkey = new CompositeKey(groupID, roleID.ToString());
+ if (m_Roles.ContainsKey(dkey))
+ return m_Roles[dkey];
+
+ return null;
+ }
+
+ public RoleData[] RetrieveRoles(UUID groupID)
+ {
+ IEnumerable keys = m_Roles.Keys.Where(k => k.Key.StartsWith(groupID.ToString()));
+ return keys.Where(m_Roles.ContainsKey).Select(x => m_Roles[x]).ToArray();
+ }
+
+ public bool DeleteRole(UUID groupID, UUID roleID)
+ {
+ CompositeKey dkey = new CompositeKey(groupID, roleID.ToString());
+ if (m_Roles.ContainsKey(dkey))
+ return m_Roles.Remove(dkey);
+
+ return false;
+ }
+
+ public int RoleCount(UUID groupID)
+ {
+ return m_Roles.Count;
+ }
+ #endregion
+
+ #region rolememberhip table
+ public RoleMembershipData[] RetrieveRolesMembers(UUID groupID)
+ {
+ IEnumerable keys = m_Roles.Keys.Where(k => k.Key.StartsWith(groupID.ToString()));
+ return keys.Where(m_RoleMembership.ContainsKey).Select(x => m_RoleMembership[x]).ToArray();
+ }
+
+ public RoleMembershipData[] RetrieveRoleMembers(UUID groupID, UUID roleID)
+ {
+ IEnumerable keys = m_Roles.Keys.Where(k => k.Key.StartsWith(groupID.ToString() + roleID.ToString()));
+ return keys.Where(m_RoleMembership.ContainsKey).Select(x => m_RoleMembership[x]).ToArray();
+ }
+
+ public RoleMembershipData[] RetrieveMemberRoles(UUID groupID, string principalID)
+ {
+ IEnumerable keys = m_Roles.Keys.Where(k => k.Key.StartsWith(groupID.ToString()) && k.Key.EndsWith(principalID));
+ return keys.Where(m_RoleMembership.ContainsKey).Select(x => m_RoleMembership[x]).ToArray();
+ }
+
+ public RoleMembershipData RetrieveRoleMember(UUID groupID, UUID roleID, string principalID)
+ {
+ CompositeKey dkey = new CompositeKey(groupID, roleID.ToString(), principalID);
+ if (m_RoleMembership.ContainsKey(dkey))
+ return m_RoleMembership[dkey];
+
+ return null;
+ }
+
+ public int RoleMemberCount(UUID groupID, UUID roleID)
+ {
+ return m_RoleMembership.Count;
+ }
+
+ public bool StoreRoleMember(RoleMembershipData data)
+ {
+ CompositeKey dkey = new CompositeKey(data.GroupID, data.RoleID.ToString(), data.PrincipalID);
+ m_RoleMembership[dkey] = data;
+ return true;
+ }
+
+ public bool DeleteRoleMember(RoleMembershipData data)
+ {
+ CompositeKey dkey = new CompositeKey(data.GroupID, data.RoleID.ToString(), data.PrincipalID);
+ if (m_RoleMembership.ContainsKey(dkey))
+ return m_RoleMembership.Remove(dkey);
+
+ return false;
+ }
+
+ public bool DeleteMemberAllRoles(UUID groupID, string principalID)
+ {
+ List keys = m_RoleMembership.Keys.Where(k => k.Key.StartsWith(groupID.ToString()) && k.Key.EndsWith(principalID)).ToList();
+ foreach (CompositeKey k in keys)
+ m_RoleMembership.Remove(k);
+ return true;
+ }
+ #endregion
+
+ #region principals table
+ public bool StorePrincipal(PrincipalData data)
+ {
+ m_Principals[data.PrincipalID] = data;
+ return true;
+ }
+
+ public PrincipalData RetrievePrincipal(string principalID)
+ {
+ if (m_Principals.ContainsKey(principalID))
+ return m_Principals[principalID];
+
+ return null;
+ }
+
+ public bool DeletePrincipal(string principalID)
+ {
+ if (m_Principals.ContainsKey(principalID))
+ return m_Principals.Remove(principalID);
+ return false;
+ }
+ #endregion
+
+ #region invites table
+ public bool StoreInvitation(InvitationData data)
+ {
+ return false;
+ }
+
+ public InvitationData RetrieveInvitation(UUID inviteID)
+ {
+ return null;
+ }
+
+ public InvitationData RetrieveInvitation(UUID groupID, string principalID)
+ {
+ return null;
+ }
+
+ public bool DeleteInvite(UUID inviteID)
+ {
+ return false;
+ }
+
+ public void DeleteOldInvites()
+ {
+ }
+ #endregion
+
+ #region notices table
+ public bool StoreNotice(NoticeData data)
+ {
+ return false;
+ }
+
+ public NoticeData RetrieveNotice(UUID noticeID)
+ {
+ return null;
+ }
+
+ public NoticeData[] RetrieveNotices(UUID groupID)
+ {
+ return new NoticeData[0];
+ }
+
+ public bool DeleteNotice(UUID noticeID)
+ {
+ return false;
+ }
+
+ public void DeleteOldNotices()
+ {
+ }
+ #endregion
+
+ }
+}
--
cgit v1.1
From 25ca8695f3746b000fee42a0d73b91dfa6a1c9c0 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Sat, 13 May 2017 20:21:56 +0100
Subject: find parcels by GlobalID.. well most time
---
OpenSim/Tests/Common/Mock/TestLandChannel.cs | 5 +++++
1 file changed, 5 insertions(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
index 3d44a33..48dc840 100644
--- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs
+++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
@@ -96,6 +96,11 @@ namespace OpenSim.Tests.Common
return GetNoLand();
}
+ public ILandObject GetLandObject(UUID ID)
+ {
+ return GetNoLand();
+ }
+
public ILandObject GetLandObject(float x, float y)
{
return GetNoLand();
--
cgit v1.1
From c68e7b66218a6f85fdca71be2740bf9a15e92f37 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Wed, 31 May 2017 23:31:02 +0100
Subject: change child agents close control; disablesimulator is not a caps
event message
---
OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs b/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs
index 3e00d82..f2ce064 100644
--- a/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs
+++ b/OpenSim/Tests/Common/Mock/TestEventQueueGetModule.cs
@@ -108,12 +108,12 @@ namespace OpenSim.Tests.Common
AddEvent(avatarID, "Enqueue", o);
return true;
}
-
+/*
public void DisableSimulator(ulong handle, UUID avatarID)
{
AddEvent(avatarID, "DisableSimulator", handle);
}
-
+*/
public void EnableSimulator (ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY)
{
AddEvent(avatarID, "EnableSimulator", handle);
--
cgit v1.1
From 1a8a77c41e4061b75ff97fcf89e39717550bfa25 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Sat, 24 Jun 2017 09:24:56 +0100
Subject: revert the thread level change; remove unused dynamic texture timer
from internal code; let blend alpha work if < 255; let blend work with the
selected face; etc
---
OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs b/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs
index 5e6a638..e9767f3 100644
--- a/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs
+++ b/OpenSim/Tests/Stress/VectorRenderModuleStressTests.cs
@@ -118,8 +118,7 @@ namespace OpenSim.Tests.Stress
so.UUID,
m_tests.Vrm.GetContentType(),
string.Format("PenColour BLACK; MoveTo 40,220; FontSize 32; Text {0};", text),
- "",
- 0);
+ "");
Assert.That(originalTextureID, Is.Not.EqualTo(so.RootPart.Shape.Textures.GetFace(0).TextureID));
--
cgit v1.1
From aff9c345dddfa290222ceaf42b6c452a590a2276 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Wed, 12 Jul 2017 07:27:21 +0100
Subject: osSetParcelDetails: add more land update code
---
OpenSim/Tests/Common/Mock/TestLandChannel.cs | 1 +
1 file changed, 1 insertion(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
index 48dc840..05db03fe 100644
--- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs
+++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
@@ -109,6 +109,7 @@ namespace OpenSim.Tests.Common
public bool IsLandPrimCountTainted() { return false; }
public bool IsForcefulBansAllowed() { return false; }
public void UpdateLandObject(int localID, LandData data) {}
+ public void SendParcelsOverlay(IClientAPI client) {}
public void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient) {}
public void setParcelObjectMaxOverride(overrideParcelMaxPrimCountDelegate overrideDel) {}
public void setSimulatorObjectMaxOverride(overrideSimulatorMaxPrimCountDelegate overrideDel) {}
--
cgit v1.1
From 3052c7080a5978b78774be1b846d7a881fe3e5f0 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 14:48:38 -0700
Subject: Added comment just to trigger jenkins
---
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 1 +
1 file changed, 1 insertion(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index 7d8027f..d5a36cc 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -74,6 +74,7 @@ namespace OpenSim.Tests.Permissions
// Try A2 takes copies of objects that cannot be copied.
for (int i = 0; i < 6; i++)
TakeOneBox(Common.TheScene.GetSceneObjectGroups(), names[i], perms[i]);
+ // Ad-hoc. Enough time to let the take work.
Thread.Sleep(5000);
List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[1].UUID, objsFolder.ID);
--
cgit v1.1
From af5573728a1c139607fe189d5a532db1e16d0f8b Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 15:01:19 -0700
Subject: Another comment for testing jenkins
---
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 1 +
1 file changed, 1 insertion(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index d5a36cc..b2c6e76 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -87,6 +87,7 @@ namespace OpenSim.Tests.Permissions
// Try A2 takes copies of objects that can be copied.
for (int i = 0; i < 6; i++)
TakeOneBox(Common.TheScene.GetSceneObjectGroups(), names[i], perms[i]);
+ // Ad-hoc. Enough time to let the take work.
Thread.Sleep(5000);
items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[1].UUID, objsFolder.ID);
--
cgit v1.1
From 26a4c5ff85562cde2fd84286d3d486f868c8ce55 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 16:15:08 -0700
Subject: Comment to trigger jenkins
---
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 1 +
1 file changed, 1 insertion(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index b2c6e76..66a228a 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -103,6 +103,7 @@ namespace OpenSim.Tests.Permissions
private void TakeOneBox(List objs, string name, PermissionMask mask)
{
+ // Find the object inworld
SceneObjectGroup box = objs.Find(sog => sog.Name == name && sog.OwnerID == Common.TheAvatars[0].UUID);
Assert.That(box, Is.Not.Null, name);
--
cgit v1.1
From 40f4b30361d10db4ac35bcec5e172e8f6ae012c4 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 16:33:21 -0700
Subject: Strengthen the tests for the possibility that SetUpFixture does not
run in the beginning.
---
OpenSim/Tests/Permissions/DirectTransferTests.cs | 7 +++++++
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 6 ++++++
2 files changed, 13 insertions(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index c68bbdf..c3dfa6c 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -44,6 +44,13 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
+ // In case we're dealing with some older version of nunit
+ if (Common.TheInstance == null)
+ {
+ Common c = new Common();
+ c.SetUp();
+ }
+
Common.TheInstance.DeleteObjectsFolders();
}
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index 66a228a..e33332a 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -46,6 +46,12 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
+ // In case we're dealing with some older version of nunit
+ if (Common.TheInstance == null)
+ {
+ Common c = new Common();
+ c.SetUp();
+ }
Common.TheInstance.DeleteObjectsFolders();
}
--
cgit v1.1
From 6a0b7a607f13fcee447c9d10224d5ea77db4f355 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 16:40:36 -0700
Subject: This is the correct work around. Jenkins is confuzzled.
---
OpenSim/Tests/Permissions/DirectTransferTests.cs | 4 ++--
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index c3dfa6c..0f251db 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -47,8 +47,8 @@ namespace OpenSim.Tests.Permissions
// In case we're dealing with some older version of nunit
if (Common.TheInstance == null)
{
- Common c = new Common();
- c.SetUp();
+ Common.TheInstance = new Common();
+ Common.TheInstance.SetUp();
}
Common.TheInstance.DeleteObjectsFolders();
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index e33332a..fb96b8b 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -49,8 +49,8 @@ namespace OpenSim.Tests.Permissions
// In case we're dealing with some older version of nunit
if (Common.TheInstance == null)
{
- Common c = new Common();
- c.SetUp();
+ Common.TheInstance = new Common();
+ Common.TheInstance.SetUp();
}
Common.TheInstance.DeleteObjectsFolders();
}
--
cgit v1.1
From 8b6557e377f7bac1bdb38f3e6dd22c797417d09c Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 16:49:11 -0700
Subject: Let's try giving Common a default constructor instead of the
workaround
---
OpenSim/Tests/Permissions/Common.cs | 4 ++++
OpenSim/Tests/Permissions/DirectTransferTests.cs | 7 -------
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 6 ------
3 files changed, 4 insertions(+), 13 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
index 4ecce38..cf4d2bd 100644
--- a/OpenSim/Tests/Permissions/Common.cs
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -60,6 +60,10 @@ namespace OpenSim.Tests.Permissions
private TestScene m_Scene;
private ScenePresence[] m_Avatars = new ScenePresence[3];
+ public Common()
+ {
+ }
+
[SetUp]
public override void SetUp()
{
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index 0f251db..c68bbdf 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -44,13 +44,6 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
- // In case we're dealing with some older version of nunit
- if (Common.TheInstance == null)
- {
- Common.TheInstance = new Common();
- Common.TheInstance.SetUp();
- }
-
Common.TheInstance.DeleteObjectsFolders();
}
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index fb96b8b..66a228a 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -46,12 +46,6 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
- // In case we're dealing with some older version of nunit
- if (Common.TheInstance == null)
- {
- Common.TheInstance = new Common();
- Common.TheInstance.SetUp();
- }
Common.TheInstance.DeleteObjectsFolders();
}
--
cgit v1.1
From eb837defdf7d9f260603fe400b3a482258605f43 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 14 Aug 2017 16:55:50 -0700
Subject: Revert "Let's try giving Common a default constructor instead of the
workaround"
This reverts commit 8b6557e377f7bac1bdb38f3e6dd22c797417d09c.
---
OpenSim/Tests/Permissions/Common.cs | 4 ----
OpenSim/Tests/Permissions/DirectTransferTests.cs | 7 +++++++
OpenSim/Tests/Permissions/IndirectTransferTests.cs | 6 ++++++
3 files changed, 13 insertions(+), 4 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs
index cf4d2bd..4ecce38 100644
--- a/OpenSim/Tests/Permissions/Common.cs
+++ b/OpenSim/Tests/Permissions/Common.cs
@@ -60,10 +60,6 @@ namespace OpenSim.Tests.Permissions
private TestScene m_Scene;
private ScenePresence[] m_Avatars = new ScenePresence[3];
- public Common()
- {
- }
-
[SetUp]
public override void SetUp()
{
diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs
index c68bbdf..0f251db 100644
--- a/OpenSim/Tests/Permissions/DirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs
@@ -44,6 +44,13 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
+ // In case we're dealing with some older version of nunit
+ if (Common.TheInstance == null)
+ {
+ Common.TheInstance = new Common();
+ Common.TheInstance.SetUp();
+ }
+
Common.TheInstance.DeleteObjectsFolders();
}
diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
index 66a228a..fb96b8b 100644
--- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs
+++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs
@@ -46,6 +46,12 @@ namespace OpenSim.Tests.Permissions
[SetUp]
public void SetUp()
{
+ // In case we're dealing with some older version of nunit
+ if (Common.TheInstance == null)
+ {
+ Common.TheInstance = new Common();
+ Common.TheInstance.SetUp();
+ }
Common.TheInstance.DeleteObjectsFolders();
}
--
cgit v1.1
From 2f13b68d4f4fd634eaee005bdf4c4a8e21c21c9a Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Thu, 16 Nov 2017 17:50:06 +0000
Subject: add missing part of mutes list protocol
---
OpenSim/Tests/Common/Mock/TestClient.cs | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index a835925..449716b 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -1315,6 +1315,10 @@ namespace OpenSim.Tests.Common
{
}
+ public void SendEmpytMuteList()
+ {
+ }
+
public void SendMuteListUpdate(string filename)
{
}
--
cgit v1.1
From aee981e5e2c0bbbfc5c6e840fe13fb107bc47804 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Sat, 14 Jul 2018 21:48:59 +0100
Subject: http reusecontext is obsolete
---
OpenSim/Tests/Common/Mock/TestOSHttpResponse.cs | 2 --
1 file changed, 2 deletions(-)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestOSHttpResponse.cs b/OpenSim/Tests/Common/Mock/TestOSHttpResponse.cs
index 2e17f1e..4577ca3 100644
--- a/OpenSim/Tests/Common/Mock/TestOSHttpResponse.cs
+++ b/OpenSim/Tests/Common/Mock/TestOSHttpResponse.cs
@@ -117,8 +117,6 @@ namespace OpenSim.Tests.Common
///
public string StatusDescription { get; set; }
- public bool ReuseContext { get; set; }
-
///
/// Add a header field and content to the response.
///
--
cgit v1.1
From e15fca60d1efcfe32e795e3494e35bdae26111e2 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Sat, 21 Jul 2018 18:31:58 +0100
Subject: mantis8342: make max ban height above ground configurable per regions
instance with ini file option BanLineSafeHeight
---
OpenSim/Tests/Common/Mock/TestLandChannel.cs | 2 ++
1 file changed, 2 insertions(+)
(limited to 'OpenSim/Tests')
diff --git a/OpenSim/Tests/Common/Mock/TestLandChannel.cs b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
index 05db03fe..cb16f55 100644
--- a/OpenSim/Tests/Common/Mock/TestLandChannel.cs
+++ b/OpenSim/Tests/Common/Mock/TestLandChannel.cs
@@ -42,6 +42,8 @@ namespace OpenSim.Tests.Common
private Scene m_scene;
private List m_parcels;
+ public float BanLineSafeHeight { get { return 100f; } }
+
public TestLandChannel(Scene scene)
{
m_scene = scene;
--
cgit v1.1