Fix give inventory tests to use different users rather than (accidentally) the same user. Extend TestGiveInventoryItem() to test giving back the same item.
parent
fe890554fb
commit
12b1cbf8bf
|
@ -207,6 +207,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<InventoryItemBase> FindItemsByPath(
|
||||||
|
IInventoryService inventoryService, UUID userId, string path)
|
||||||
|
{
|
||||||
|
InventoryFolderBase rootFolder = inventoryService.GetRootFolder(userId);
|
||||||
|
|
||||||
|
if (null == rootFolder)
|
||||||
|
return new List<InventoryItemBase>();
|
||||||
|
|
||||||
|
return FindItemsByPath(inventoryService, rootFolder, path);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Find items that match a given PATH_DELIMITOR delimited path starting from this folder.
|
/// Find items that match a given PATH_DELIMITOR delimited path starting from this folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -425,8 +425,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
InventoryItemBase item = new InventoryItemBase(itemId, senderId);
|
InventoryItemBase item = new InventoryItemBase(itemId, senderId);
|
||||||
item = InventoryService.GetItem(item);
|
item = InventoryService.GetItem(item);
|
||||||
|
|
||||||
if ((item != null) && (item.Owner == senderId))
|
if (item == null)
|
||||||
{
|
{
|
||||||
|
m_log.WarnFormat(
|
||||||
|
"[AGENT INVENTORY]: Failed to find item {0} sent by {1} to {2}", itemId, senderId, recipient);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.Owner != senderId)
|
||||||
|
{
|
||||||
|
m_log.WarnFormat(
|
||||||
|
"[AGENT INVENTORY]: Attempt to send item {0} {1} to {2} failed because sender {3} did not match item owner {4}",
|
||||||
|
item.Name, item.ID, recipient, senderId, item.Owner);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
IUserManagement uman = RequestModuleInterface<IUserManagement>();
|
IUserManagement uman = RequestModuleInterface<IUserManagement>();
|
||||||
if (uman != null)
|
if (uman != null)
|
||||||
uman.AddUser(item.CreatorIdAsUuid, item.CreatorData);
|
uman.AddUser(item.CreatorIdAsUuid, item.CreatorData);
|
||||||
|
@ -605,13 +618,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
return itemCopy;
|
return itemCopy;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
m_log.WarnFormat("[AGENT INVENTORY]: Failed to find item {0} or item does not belong to giver ", itemId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Give an entire inventory folder from one user to another. The entire contents (including all descendent
|
/// Give an entire inventory folder from one user to another. The entire contents (including all descendent
|
||||||
|
|
|
@ -59,19 +59,24 @@ namespace OpenSim.Region.Framework.Tests
|
||||||
// log4net.Config.XmlConfigurator.Configure();
|
// log4net.Config.XmlConfigurator.Configure();
|
||||||
|
|
||||||
Scene scene = SceneSetupHelpers.SetupScene();
|
Scene scene = SceneSetupHelpers.SetupScene();
|
||||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
|
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, 1001);
|
||||||
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene);
|
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, 1002);
|
||||||
InventoryItemBase item1 = UserInventoryHelpers.CreateInventoryItem(scene, "item1", user1.PrincipalID);
|
InventoryItemBase item1 = UserInventoryHelpers.CreateInventoryItem(scene, "item1", user1.PrincipalID);
|
||||||
|
|
||||||
scene.GiveInventoryItem(user2.PrincipalID, user1.PrincipalID, item1.ID);
|
scene.GiveInventoryItem(user2.PrincipalID, user1.PrincipalID, item1.ID);
|
||||||
|
|
||||||
InventoryItemBase retrievedItem1
|
InventoryItemBase retrievedItem1
|
||||||
= UserInventoryHelpers.GetInventoryItem(scene.InventoryService, user2.PrincipalID, "Objects/item1");
|
= UserInventoryHelpers.GetInventoryItem(scene.InventoryService, user2.PrincipalID, "Notecards/item1");
|
||||||
|
|
||||||
Assert.That(retrievedItem1, Is.Not.Null);
|
Assert.That(retrievedItem1, Is.Not.Null);
|
||||||
|
|
||||||
// Try giving back the freshly received item
|
// Try giving back the freshly received item
|
||||||
//scene.GiveInventoryItem(user1.PrincipalID, user2.PrincipalID, retrievedItem1.ID);
|
scene.GiveInventoryItem(user1.PrincipalID, user2.PrincipalID, retrievedItem1.ID);
|
||||||
|
|
||||||
|
List<InventoryItemBase> reretrievedItems
|
||||||
|
= UserInventoryHelpers.GetInventoryItems(scene.InventoryService, user1.PrincipalID, "Notecards/item1");
|
||||||
|
|
||||||
|
Assert.That(reretrievedItems.Count, Is.EqualTo(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -81,8 +86,8 @@ namespace OpenSim.Region.Framework.Tests
|
||||||
// log4net.Config.XmlConfigurator.Configure();
|
// log4net.Config.XmlConfigurator.Configure();
|
||||||
|
|
||||||
Scene scene = SceneSetupHelpers.SetupScene();
|
Scene scene = SceneSetupHelpers.SetupScene();
|
||||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
|
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, 1001);
|
||||||
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene);
|
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, 1002);
|
||||||
InventoryFolderBase folder1
|
InventoryFolderBase folder1
|
||||||
= UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, user1.PrincipalID, "folder1");
|
= UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, user1.PrincipalID, "folder1");
|
||||||
|
|
||||||
|
|
|
@ -341,6 +341,9 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
itemsList.AddRange(m_Database.getInventoryInFolder(folderID));
|
itemsList.AddRange(m_Database.getInventoryInFolder(folderID));
|
||||||
|
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[INVENTORY SERVICE]: Found {0} items in folder {1} for {2}", itemsList.Count, folderID, userID);
|
||||||
|
|
||||||
return itemsList;
|
return itemsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,8 +388,9 @@ namespace OpenSim.Services.InventoryService
|
||||||
// See IInventoryServices
|
// See IInventoryServices
|
||||||
public virtual bool AddItem(InventoryItemBase item)
|
public virtual bool AddItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
"[INVENTORY SERVICE]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder);
|
// "[INVENTORY SERVICE]: Adding item {0} {1} to folder {2} for {3}",
|
||||||
|
// item.Name, item.ID, item.Folder, item.Owner);
|
||||||
|
|
||||||
m_Database.addInventoryItem(item);
|
m_Database.addInventoryItem(item);
|
||||||
|
|
||||||
|
|
|
@ -117,17 +117,20 @@ namespace OpenSim.Tests.Common
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public static UserAccount CreateUserWithInventory(Scene scene)
|
public static UserAccount CreateUserWithInventory(Scene scene)
|
||||||
|
{
|
||||||
|
return CreateUserWithInventory(scene, 99);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UserAccount CreateUserWithInventory(Scene scene, int uuidTail)
|
||||||
{
|
{
|
||||||
return CreateUserWithInventory(
|
return CreateUserWithInventory(
|
||||||
scene, "Bill", "Bailey", UUID.Parse("00000000-0000-0000-0000-000000000099"), "troll");
|
scene, "Bill", "Bailey", new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", uuidTail)), "troll");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UserAccount CreateUserWithInventory(
|
public static UserAccount CreateUserWithInventory(
|
||||||
Scene scene, string firstName, string lastName, UUID userId, string pw)
|
Scene scene, string firstName, string lastName, UUID userId, string pw)
|
||||||
{
|
{
|
||||||
UserAccount ua
|
UserAccount ua = new UserAccount(userId) { FirstName = firstName, LastName = lastName };
|
||||||
= new UserAccount(userId)
|
|
||||||
{ FirstName = firstName, LastName = lastName };
|
|
||||||
CreateUserWithInventory(scene, ua, pw);
|
CreateUserWithInventory(scene, ua, pw);
|
||||||
return ua;
|
return ua;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,15 +65,18 @@ namespace OpenSim.Tests.Common
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static InventoryItemBase CreateInventoryItem(Scene scene, string itemName, UUID itemId, UUID userId)
|
public static InventoryItemBase CreateInventoryItem(Scene scene, string itemName, UUID itemId, UUID userId)
|
||||||
{
|
{
|
||||||
|
AssetBase asset = AssetHelpers.CreateAsset(scene, userId);
|
||||||
InventoryItemBase item = new InventoryItemBase();
|
InventoryItemBase item = new InventoryItemBase();
|
||||||
item.Name = itemName;
|
item.Name = itemName;
|
||||||
item.AssetID = AssetHelpers.CreateAsset(scene, userId).FullID;
|
item.AssetID = asset.FullID;
|
||||||
item.ID = itemId;
|
item.ID = itemId;
|
||||||
|
item.Owner = userId;
|
||||||
|
item.AssetType = asset.Type;
|
||||||
|
item.InvType = (int)InventoryType.Notecard;
|
||||||
|
|
||||||
// Really quite bad since the objs folder could be moved in the future and confuse the tests
|
InventoryFolderBase folder = scene.InventoryService.GetFolderForType(userId, AssetType.Notecard);
|
||||||
InventoryFolderBase objsFolder = scene.InventoryService.GetFolderForType(userId, AssetType.Object);
|
|
||||||
|
|
||||||
item.Folder = objsFolder.ID;
|
item.Folder = folder.ID;
|
||||||
scene.AddInventoryItem(item);
|
scene.AddInventoryItem(item);
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
|
@ -165,5 +168,17 @@ namespace OpenSim.Tests.Common
|
||||||
{
|
{
|
||||||
return InventoryArchiveUtils.FindItemByPath(inventoryService, userId, path);
|
return InventoryArchiveUtils.FindItemByPath(inventoryService, userId, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the inventory items that match the path name.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inventoryService"></param>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <param name="path"></param>
|
||||||
|
/// <returns>An empty list if no matching items were found.</returns>
|
||||||
|
public static List<InventoryItemBase> GetInventoryItems(IInventoryService inventoryService, UUID userId, string path)
|
||||||
|
{
|
||||||
|
return InventoryArchiveUtils.FindItemsByPath(inventoryService, userId, path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue