diff options
author | Justin Clark-Casey (justincc) | 2014-11-11 17:28:24 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2014-11-25 23:23:11 +0000 |
commit | 550cf714bc7e974064306956638f08e9b15c30b5 (patch) | |
tree | 3a6a91dc00cfe18b4620c10791bb25e0bf65b8f2 | |
parent | When processing incoming attachments via HG, if a request for uuid gathering ... (diff) | |
download | opensim-SC_OLD-550cf714bc7e974064306956638f08e9b15c30b5.zip opensim-SC_OLD-550cf714bc7e974064306956638f08e9b15c30b5.tar.gz opensim-SC_OLD-550cf714bc7e974064306956638f08e9b15c30b5.tar.bz2 opensim-SC_OLD-550cf714bc7e974064306956638f08e9b15c30b5.tar.xz |
Fix issue where llRemoteLoadScriptPin() would treat 0 (the default) as a valid set pin in a destination prim rather than the unset no pin state
Adds regression test for this case.
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs index 6afe551..eb91bc3 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs | |||
@@ -237,5 +237,52 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
237 | Assert.IsNotNull(receivedItem); | 237 | Assert.IsNotNull(receivedItem); |
238 | Assert.AreEqual(0, receivedItem.CurrentPermissions & (uint)PermissionMask.Modify); | 238 | Assert.AreEqual(0, receivedItem.CurrentPermissions & (uint)PermissionMask.Modify); |
239 | } | 239 | } |
240 | |||
241 | [Test] | ||
242 | public void TestLlRemoteLoadScriptPin() | ||
243 | { | ||
244 | TestHelpers.InMethod(); | ||
245 | // TestHelpers.EnableLogging(); | ||
246 | |||
247 | UUID user1Id = TestHelpers.ParseTail(0x1); | ||
248 | UUID user2Id = TestHelpers.ParseTail(0x2); | ||
249 | |||
250 | SceneObjectGroup sourceSo = SceneHelpers.AddSceneObject((m_scene, "sourceSo", user1Id); | ||
251 | m_scene.AddSceneObject(sourceSo); | ||
252 | LSL_Api api = new LSL_Api(); | ||
253 | api.Initialize(m_engine, sourceSo.RootPart, null, null); | ||
254 | TaskInventoryHelpers.AddScript(m_scene, sourceSo.RootPart, "script", "Hello World"); | ||
255 | |||
256 | SceneObjectGroup targetSo = SceneHelpers.AddSceneObject(m_scene, "targetSo", user1Id); | ||
257 | SceneObjectGroup otherOwnedTargetSo = SceneHelpers.AddSceneObject(m_scene, "otherOwnedTargetSo", user2Id); | ||
258 | |||
259 | // Test that we cannot load a script when the target pin has never been set (i.e. it is zero) | ||
260 | api.llRemoteLoadScriptPin(targetSo.UUID.ToString(), "script", 0, 0, 0); | ||
261 | Assert.IsNull(targetSo.RootPart.Inventory.GetInventoryItem("script")); | ||
262 | |||
263 | // Test that we cannot load a script when the given pin does not match the target | ||
264 | targetSo.RootPart.ScriptAccessPin = 5; | ||
265 | api.llRemoteLoadScriptPin(targetSo.UUID.ToString(), "script", 3, 0, 0); | ||
266 | Assert.IsNull(targetSo.RootPart.Inventory.GetInventoryItem("script")); | ||
267 | |||
268 | // Test that we cannot load into a prim with a different owner | ||
269 | otherOwnedTargetSo.RootPart.ScriptAccessPin = 3; | ||
270 | api.llRemoteLoadScriptPin(otherOwnedTargetSo.UUID.ToString(), "script", 3, 0, 0); | ||
271 | Assert.IsNull(otherOwnedTargetSo.RootPart.Inventory.GetInventoryItem("script")); | ||
272 | |||
273 | // Test that we can load a script when given pin and dest pin match. | ||
274 | targetSo.RootPart.ScriptAccessPin = 3; | ||
275 | api.llRemoteLoadScriptPin(targetSo.UUID.ToString(), "script", 3, 0, 0); | ||
276 | TaskInventoryItem insertedItem = targetSo.RootPart.Inventory.GetInventoryItem("script"); | ||
277 | Assert.IsNotNull(insertedItem); | ||
278 | |||
279 | // Test that we can no longer load if access pin is unset | ||
280 | targetSo.RootPart.Inventory.RemoveInventoryItem(insertedItem.ItemID); | ||
281 | Assert.IsNull(targetSo.RootPart.Inventory.GetInventoryItem("script")); | ||
282 | |||
283 | targetSo.RootPart.ScriptAccessPin = 0; | ||
284 | api.llRemoteLoadScriptPin(otherOwnedTargetSo.UUID.ToString(), "script", 3, 0, 0); | ||
285 | Assert.IsNull(otherOwnedTargetSo.RootPart.Inventory.GetInventoryItem("script")); | ||
286 | } | ||
240 | } | 287 | } |
241 | } \ No newline at end of file | 288 | } \ No newline at end of file |