From 71433075a9db2dde76c0390299037aab3b8b8787 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 14 Jul 2010 17:12:12 +0100
Subject: Fix obvious bug in XInventoryService.GetFolderItems() which was
preventing the iar module from being able to save single item iars
---
.../Archiver/Tests/InventoryArchiverTests.cs | 125 ++++++++++++++++++++-
1 file changed, 120 insertions(+), 5 deletions(-)
(limited to 'OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests')
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index 5130fa5..4531bfd 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -63,13 +63,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
}
///
- /// Test saving a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet).
+ /// Test saving an inventory path to a V0.1 OpenSim Inventory Archive
+ /// (subject to change since there is no fixed format yet).
///
- // Commenting for now! The mock inventory service needs more beef, at least for
- // GetFolderForType
- // REFACTORING PROBLEM. This needs to be rewritten.
[Test]
- public void TestSaveIarV0_1()
+ public void TestSavePathToIarV0_1()
{
TestHelper.InMethod();
// log4net.Config.XmlConfigurator.Configure();
@@ -182,6 +180,123 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
}
///
+ /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive
+ /// (subject to change since there is no fixed format yet).
+ ///
+ [Test]
+ public void TestSaveItemToIarV0_1()
+ {
+ TestHelper.InMethod();
+// log4net.Config.XmlConfigurator.Configure();
+
+ InventoryArchiverModule archiverModule = new InventoryArchiverModule(true);
+
+ Scene scene = SceneSetupHelpers.SetupScene("Inventory");
+ SceneSetupHelpers.SetupSceneModules(scene, archiverModule);
+
+ // Create user
+ string userFirstName = "Jock";
+ string userLastName = "Stirrup";
+ string userPassword = "troll";
+ UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020");
+ UserProfileTestUtils.CreateUserWithInventory(scene, userFirstName, userLastName, userId, userPassword);
+
+ // Create asset
+ SceneObjectGroup object1;
+ SceneObjectPart part1;
+ {
+ string partName = "My Little Dog Object";
+ UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040");
+ PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere();
+ Vector3 groupPosition = new Vector3(10, 20, 30);
+ Quaternion rotationOffset = new Quaternion(20, 30, 40, 50);
+ Vector3 offsetPosition = new Vector3(5, 10, 15);
+
+ part1
+ = new SceneObjectPart(
+ ownerId, shape, groupPosition, rotationOffset, offsetPosition);
+ part1.Name = partName;
+
+ object1 = new SceneObjectGroup(part1);
+ scene.AddNewSceneObject(object1, false);
+ }
+
+ UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060");
+ AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1);
+ scene.AssetService.Store(asset1);
+
+ // Create item
+ UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080");
+ string item1Name = "My Little Dog";
+ InventoryItemBase item1 = new InventoryItemBase();
+ item1.Name = item1Name;
+ item1.AssetID = asset1.FullID;
+ item1.ID = item1Id;
+ InventoryFolderBase objsFolder
+ = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects")[0];
+ item1.Folder = objsFolder.ID;
+ scene.AddInventoryItem(userId, item1);
+
+ MemoryStream archiveWriteStream = new MemoryStream();
+ archiverModule.OnInventoryArchiveSaved += SaveCompleted;
+
+ mre.Reset();
+ archiverModule.ArchiveInventory(
+ Guid.NewGuid(), userFirstName, userLastName, "Objects/" + item1Name, userPassword, archiveWriteStream);
+ mre.WaitOne(60000, false);
+
+ byte[] archive = archiveWriteStream.ToArray();
+ MemoryStream archiveReadStream = new MemoryStream(archive);
+ TarArchiveReader tar = new TarArchiveReader(archiveReadStream);
+
+ //bool gotControlFile = false;
+ bool gotObject1File = false;
+ //bool gotObject2File = false;
+ string expectedObject1FileName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1);
+ string expectedObject1FilePath = string.Format(
+ "{0}{1}",
+ ArchiveConstants.INVENTORY_PATH,
+ expectedObject1FileName);
+
+ string filePath;
+ TarArchiveReader.TarEntryType tarEntryType;
+
+// Console.WriteLine("Reading archive");
+
+ while (tar.ReadEntry(out filePath, out tarEntryType) != null)
+ {
+ Console.WriteLine("Got {0}", filePath);
+
+// if (ArchiveConstants.CONTROL_FILE_PATH == filePath)
+// {
+// gotControlFile = true;
+// }
+
+ if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml"))
+ {
+// string fileName = filePath.Remove(0, "Objects/".Length);
+//
+// if (fileName.StartsWith(part1.Name))
+// {
+ Assert.That(expectedObject1FilePath, Is.EqualTo(filePath));
+ gotObject1File = true;
+// }
+// else if (fileName.StartsWith(part2.Name))
+// {
+// Assert.That(fileName, Is.EqualTo(expectedObject2FileName));
+// gotObject2File = true;
+// }
+ }
+ }
+
+// Assert.That(gotControlFile, Is.True, "No control file in archive");
+ Assert.That(gotObject1File, Is.True, "No item1 file in archive");
+// Assert.That(gotObject2File, Is.True, "No object2 file in archive");
+
+ // TODO: Test presence of more files and contents of files.
+ }
+
+ ///
/// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where
/// an account exists with the creator name.
///
--
cgit v1.1