Add test for removing a friendship.

0.7.2-post-fixes
Justin Clark-Casey (justincc) 2011-11-14 20:56:56 +00:00
parent 8b5bacc78b
commit b5a69833f8
4 changed files with 51 additions and 17 deletions

View File

@ -241,7 +241,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
client.OnInstantMessage += OnInstantMessage; client.OnInstantMessage += OnInstantMessage;
client.OnApproveFriendRequest += OnApproveFriendRequest; client.OnApproveFriendRequest += OnApproveFriendRequest;
client.OnDenyFriendRequest += OnDenyFriendRequest; client.OnDenyFriendRequest += OnDenyFriendRequest;
client.OnTerminateFriendship += OnTerminateFriendship; client.OnTerminateFriendship += (thisClient, agentID, exfriendID) => RemoveFriendship(thisClient, exfriendID);
client.OnGrantUserRights += OnGrantUserRights; client.OnGrantUserRights += OnGrantUserRights;
Util.FireAndForget(delegate { FetchFriendslist(client); }); Util.FireAndForget(delegate { FetchFriendslist(client); });
@ -643,10 +643,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
} }
} }
} }
private void OnTerminateFriendship(IClientAPI client, UUID agentID, UUID exfriendID) public void RemoveFriendship(IClientAPI client, UUID exfriendID)
{ {
if (!DeleteFriendship(agentID, exfriendID)) if (!DeleteFriendship(client.AgentId, exfriendID))
client.SendAlertMessage("Unable to terminate friendship on this sim."); client.SendAlertMessage("Unable to terminate friendship on this sim.");
// Update local cache // Update local cache
@ -669,9 +669,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (friendSession != null) if (friendSession != null)
{ {
GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID); GridRegion region = GridService.GetRegionByUUID(m_Scenes[0].RegionInfo.ScopeID, friendSession.RegionID);
m_FriendsSimConnector.FriendshipTerminated(region, agentID, exfriendID); m_FriendsSimConnector.FriendshipTerminated(region, client.AgentId, exfriendID);
} }
} }
} }
private void OnGrantUserRights(IClientAPI remoteClient, UUID requester, UUID target, int rights) private void OnGrantUserRights(IClientAPI remoteClient, UUID requester, UUID target, int rights)

View File

@ -71,12 +71,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
Assert.That(((TestClient)sp.ControllingClient).OfflineNotificationsReceived.Count, Is.EqualTo(0)); Assert.That(((TestClient)sp.ControllingClient).ReceivedOfflineNotifications.Count, Is.EqualTo(0));
Assert.That(((TestClient)sp.ControllingClient).OnlineNotificationsReceived.Count, Is.EqualTo(0)); Assert.That(((TestClient)sp.ControllingClient).ReceivedOnlineNotifications.Count, Is.EqualTo(0));
} }
[Test] [Test]
public void TestAddFriendWhileOnline() public void TestAddFriendshipWhileOnline()
{ {
TestHelpers.InMethod(); TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure(); // log4net.Config.XmlConfigurator.Configure();
@ -91,8 +91,28 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends.Tests
// notification. // notification.
m_fm.AddFriendship(sp.ControllingClient, user2Id); m_fm.AddFriendship(sp.ControllingClient, user2Id);
Assert.That(((TestClient)sp.ControllingClient).OfflineNotificationsReceived.Count, Is.EqualTo(0)); Assert.That(((TestClient)sp.ControllingClient).ReceivedOfflineNotifications.Count, Is.EqualTo(0));
Assert.That(((TestClient)sp.ControllingClient).OnlineNotificationsReceived.Count, Is.EqualTo(1)); Assert.That(((TestClient)sp.ControllingClient).ReceivedOnlineNotifications.Count, Is.EqualTo(1));
}
[Test]
public void TestRemoveFriendshipWhileOnline()
{
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
UUID user1Id = TestHelpers.ParseTail(0x1);
UUID user2Id = TestHelpers.ParseTail(0x2);
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, user1Id);
SceneHelpers.AddScenePresence(m_scene, user2Id);
m_fm.AddFriendship(sp.ControllingClient, user2Id);
m_fm.RemoveFriendship(sp.ControllingClient, user2Id);
TestClient user1Client = sp.ControllingClient as TestClient;
Assert.That(user1Client.ReceivedFriendshipTerminations.Count, Is.EqualTo(1));
Assert.That(user1Client.ReceivedFriendshipTerminations[0], Is.EqualTo(user2Id));
} }
} }
} }

View File

@ -44,6 +44,17 @@ namespace OpenSim.Region.Framework.Interfaces
/// <param name="friendID"></param> /// <param name="friendID"></param>
void AddFriendship(IClientAPI client, UUID friendID); void AddFriendship(IClientAPI client, UUID friendID);
/// <summary>
/// Remove a friendship between two users.
/// </summary>
/// <remarks>
/// Ultimately, it would be more useful to take in a user account here rather than having to have a user
/// present in the scene.
/// </remarks>
/// <param name="client"></param>
/// <param name="exFriendID"></param>
void RemoveFriendship(IClientAPI client, UUID exFriendID);
uint GetFriendPerms(UUID PrincipalID, UUID FriendID); uint GetFriendPerms(UUID PrincipalID, UUID FriendID);
bool SendFriendsOnlineIfNeeded(IClientAPI client); bool SendFriendsOnlineIfNeeded(IClientAPI client);
} }

View File

@ -57,8 +57,9 @@ namespace OpenSim.Tests.Common.Mock
private IScene m_scene; private IScene m_scene;
// Properties so that we can get at received data for test purposes // Properties so that we can get at received data for test purposes
public List<UUID> OfflineNotificationsReceived { get; private set; } public List<UUID> ReceivedOfflineNotifications { get; private set; }
public List<UUID> OnlineNotificationsReceived { get; private set; } public List<UUID> ReceivedOnlineNotifications { get; private set; }
public List<UUID> ReceivedFriendshipTerminations { get; private set; }
// disable warning: public events, part of the public API // disable warning: public events, part of the public API
#pragma warning disable 67 #pragma warning disable 67
@ -445,8 +446,9 @@ namespace OpenSim.Tests.Common.Mock
m_scene = scene; m_scene = scene;
CapsSeedUrl = agentData.CapsPath; CapsSeedUrl = agentData.CapsPath;
OfflineNotificationsReceived = new List<UUID>(); ReceivedOfflineNotifications = new List<UUID>();
OnlineNotificationsReceived = new List<UUID>(); ReceivedOnlineNotifications = new List<UUID>();
ReceivedFriendshipTerminations = new List<UUID>();
} }
/// <summary> /// <summary>
@ -834,12 +836,12 @@ namespace OpenSim.Tests.Common.Mock
public void SendAgentOffline(UUID[] agentIDs) public void SendAgentOffline(UUID[] agentIDs)
{ {
OfflineNotificationsReceived.AddRange(agentIDs); ReceivedOfflineNotifications.AddRange(agentIDs);
} }
public void SendAgentOnline(UUID[] agentIDs) public void SendAgentOnline(UUID[] agentIDs)
{ {
OnlineNotificationsReceived.AddRange(agentIDs); ReceivedOnlineNotifications.AddRange(agentIDs);
} }
public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot,
@ -1109,6 +1111,7 @@ namespace OpenSim.Tests.Common.Mock
public void SendTerminateFriend(UUID exFriendID) public void SendTerminateFriend(UUID exFriendID)
{ {
ReceivedFriendshipTerminations.Add(exFriendID);
} }
public bool AddGenericPacketHandler(string MethodName, GenericMessage handler) public bool AddGenericPacketHandler(string MethodName, GenericMessage handler)