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;
|
||||
}
|
||||
|
||||
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>
|
||||
/// Find items that match a given PATH_DELIMITOR delimited path starting from this folder.
|
||||
/// </summary>
|
||||
|
|
|
@ -425,8 +425,21 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
InventoryItemBase item = new InventoryItemBase(itemId, senderId);
|
||||
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>();
|
||||
if (uman != null)
|
||||
uman.AddUser(item.CreatorIdAsUuid, item.CreatorData);
|
||||
|
@ -605,13 +618,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
return itemCopy;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.WarnFormat("[AGENT INVENTORY]: Failed to find item {0} or item does not belong to giver ", itemId);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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();
|
||||
|
||||
Scene scene = SceneSetupHelpers.SetupScene();
|
||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
|
||||
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene);
|
||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, 1001);
|
||||
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, 1002);
|
||||
InventoryItemBase item1 = UserInventoryHelpers.CreateInventoryItem(scene, "item1", user1.PrincipalID);
|
||||
|
||||
scene.GiveInventoryItem(user2.PrincipalID, user1.PrincipalID, item1.ID);
|
||||
|
||||
InventoryItemBase retrievedItem1
|
||||
= UserInventoryHelpers.GetInventoryItem(scene.InventoryService, user2.PrincipalID, "Objects/item1");
|
||||
= UserInventoryHelpers.GetInventoryItem(scene.InventoryService, user2.PrincipalID, "Notecards/item1");
|
||||
|
||||
Assert.That(retrievedItem1, Is.Not.Null);
|
||||
|
||||
// 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]
|
||||
|
@ -81,8 +86,8 @@ namespace OpenSim.Region.Framework.Tests
|
|||
// log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
Scene scene = SceneSetupHelpers.SetupScene();
|
||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
|
||||
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene);
|
||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, 1001);
|
||||
UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, 1002);
|
||||
InventoryFolderBase folder1
|
||||
= UserInventoryHelpers.CreateInventoryFolder(scene.InventoryService, user1.PrincipalID, "folder1");
|
||||
|
||||
|
|
|
@ -341,6 +341,9 @@ namespace OpenSim.Services.InventoryService
|
|||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -385,8 +388,9 @@ namespace OpenSim.Services.InventoryService
|
|||
// See IInventoryServices
|
||||
public virtual bool AddItem(InventoryItemBase item)
|
||||
{
|
||||
m_log.DebugFormat(
|
||||
"[INVENTORY SERVICE]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder);
|
||||
// m_log.DebugFormat(
|
||||
// "[INVENTORY SERVICE]: Adding item {0} {1} to folder {2} for {3}",
|
||||
// item.Name, item.ID, item.Folder, item.Owner);
|
||||
|
||||
m_Database.addInventoryItem(item);
|
||||
|
||||
|
|
|
@ -117,17 +117,20 @@ namespace OpenSim.Tests.Common
|
|||
// }
|
||||
|
||||
public static UserAccount CreateUserWithInventory(Scene scene)
|
||||
{
|
||||
return CreateUserWithInventory(scene, 99);
|
||||
}
|
||||
|
||||
public static UserAccount CreateUserWithInventory(Scene scene, int uuidTail)
|
||||
{
|
||||
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(
|
||||
Scene scene, string firstName, string lastName, UUID userId, string pw)
|
||||
{
|
||||
UserAccount ua
|
||||
= new UserAccount(userId)
|
||||
{ FirstName = firstName, LastName = lastName };
|
||||
UserAccount ua = new UserAccount(userId) { FirstName = firstName, LastName = lastName };
|
||||
CreateUserWithInventory(scene, ua, pw);
|
||||
return ua;
|
||||
}
|
||||
|
|
|
@ -65,15 +65,18 @@ namespace OpenSim.Tests.Common
|
|||
/// <returns></returns>
|
||||
public static InventoryItemBase CreateInventoryItem(Scene scene, string itemName, UUID itemId, UUID userId)
|
||||
{
|
||||
AssetBase asset = AssetHelpers.CreateAsset(scene, userId);
|
||||
InventoryItemBase item = new InventoryItemBase();
|
||||
item.Name = itemName;
|
||||
item.AssetID = AssetHelpers.CreateAsset(scene, userId).FullID;
|
||||
item.AssetID = asset.FullID;
|
||||
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 objsFolder = scene.InventoryService.GetFolderForType(userId, AssetType.Object);
|
||||
InventoryFolderBase folder = scene.InventoryService.GetFolderForType(userId, AssetType.Notecard);
|
||||
|
||||
item.Folder = objsFolder.ID;
|
||||
item.Folder = folder.ID;
|
||||
scene.AddInventoryItem(item);
|
||||
|
||||
return item;
|
||||
|
@ -165,5 +168,17 @@ namespace OpenSim.Tests.Common
|
|||
{
|
||||
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