aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Server/Handlers/UserAccounts/UserAccountServerConnector.cs (renamed from OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs)53
-rw-r--r--OpenSim/Tests/Clients/Presence/OpenSim.Server.ini33
-rw-r--r--OpenSim/Tests/Clients/Presence/PresenceClient.cs128
-rw-r--r--OpenSim/Tests/Clients/UserAccounts/OpenSim.Server.ini33
-rw-r--r--OpenSim/Tests/Clients/UserAccounts/UserAccountsClient.cs120
-rw-r--r--OpenSim/Tests/Common/Mock/MockUserAccountService.cs46
-rw-r--r--OpenSim/Tests/Common/Mock/MockUserService.cs149
-rw-r--r--OpenSim/Tests/Common/Mock/TestClient.cs22
-rw-r--r--OpenSim/Tests/Common/Mock/TestScene.cs12
-rw-r--r--OpenSim/Tests/Common/Mock/TestUserDataPlugin.cs216
-rw-r--r--OpenSim/Tests/Common/Setup/AssetHelpers.cs9
-rw-r--r--OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs119
-rw-r--r--OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs150
13 files changed, 569 insertions, 521 deletions
diff --git a/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs b/OpenSim/Server/Handlers/UserAccounts/UserAccountServerConnector.cs
index 013462e..f17a8de 100644
--- a/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
+++ b/OpenSim/Server/Handlers/UserAccounts/UserAccountServerConnector.cs
@@ -25,46 +25,37 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using OpenSim.Framework; 28using System;
29using OpenSim.Framework.Communications; 29using Nini.Config;
30using OpenSim.Framework.Communications.Cache; 30using OpenSim.Server.Base;
31using OpenSim.Framework.Servers; 31using OpenSim.Services.Interfaces;
32using OpenSim.Framework.Servers.HttpServer; 32using OpenSim.Framework.Servers.HttpServer;
33using OpenSim.Region.Communications.Local; 33using OpenSim.Server.Handlers.Base;
34using OpenSim.Data;
35 34
36namespace OpenSim.Tests.Common.Mock 35namespace OpenSim.Server.Handlers.UserAccounts
37{ 36{
38 public class TestCommunicationsManager : CommunicationsManager 37 public class UserAccountServiceConnector : ServiceConnector
39 { 38 {
40 public IUserDataPlugin UserDataPlugin 39 private IUserAccountService m_UserAccountService;
41 { 40 private string m_ConfigName = "UserAccountService";
42 get { return m_userDataPlugin; }
43 }
44 private IUserDataPlugin m_userDataPlugin;
45
46 // public IInventoryDataPlugin InventoryDataPlugin
47 // {
48 // get { return m_inventoryDataPlugin; }
49 // }
50 // private IInventoryDataPlugin m_inventoryDataPlugin;
51 41
52 public TestCommunicationsManager() 42 public UserAccountServiceConnector(IConfigSource config, IHttpServer server, string configName) :
53 : this(null) 43 base(config, server, configName)
54 { 44 {
55 } 45 IConfig serverConfig = config.Configs[m_ConfigName];
46 if (serverConfig == null)
47 throw new Exception(String.Format("No section {0} in config file", m_ConfigName));
56 48
57 public TestCommunicationsManager(NetworkServersInfo serversInfo) 49 string service = serverConfig.GetString("LocalServiceModule",
58 : base(serversInfo, null) 50 String.Empty);
59 { 51
52 if (service == String.Empty)
53 throw new Exception("No LocalServiceModule in config file");
60 54
61 LocalUserServices lus = new LocalUserServices(991, 992, this); 55 Object[] args = new Object[] { config };
62 lus.AddPlugin(new TemporaryUserProfilePlugin()); 56 m_UserAccountService = ServerUtils.LoadPlugin<IUserAccountService>(service, args);
63 m_userDataPlugin = new TestUserDataPlugin();
64 lus.AddPlugin(m_userDataPlugin);
65 m_userService = lus;
66 m_userAdminService = lus;
67 57
58 server.AddStreamHandler(new UserAccountServerPostHandler(m_UserAccountService));
68 } 59 }
69 } 60 }
70} 61}
diff --git a/OpenSim/Tests/Clients/Presence/OpenSim.Server.ini b/OpenSim/Tests/Clients/Presence/OpenSim.Server.ini
new file mode 100644
index 0000000..47e73f9
--- /dev/null
+++ b/OpenSim/Tests/Clients/Presence/OpenSim.Server.ini
@@ -0,0 +1,33 @@
1; * Run a ROBUST server shell like this, from bin:
2; * $ OpenSim.Server.exe -inifile ../OpenSim/Tests/Clients/Presence/OpenSim.Server.ini
3; *
4; * Then run this client like this, from bin:
5; * $ OpenSim.Tests.Clients.PresenceClient.exe
6; *
7; *
8
9[Startup]
10ServiceConnectors = "OpenSim.Server.Handlers.dll:PresenceServiceConnector"
11
12; * This is common for all services, it's the network setup for the entire
13; * server instance
14; *
15[Network]
16port = 8003
17
18; * The following are for the remote console
19; * They have no effect for the local or basic console types
20; * Leave commented to diable logins to the console
21;ConsoleUser = Test
22;ConsolePass = secret
23
24; * As an example, the below configuration precisely mimicks the legacy
25; * asset server. It is read by the asset IN connector (defined above)
26; * and it then loads the OUT connector (a local database module). That,
27; * in turn, reads the asset loader and database connection information
28; *
29[PresenceService]
30 LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
31 StorageProvider = "OpenSim.Data.MySQL.dll"
32 ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim123;"
33
diff --git a/OpenSim/Tests/Clients/Presence/PresenceClient.cs b/OpenSim/Tests/Clients/Presence/PresenceClient.cs
new file mode 100644
index 0000000..4f959f6
--- /dev/null
+++ b/OpenSim/Tests/Clients/Presence/PresenceClient.cs
@@ -0,0 +1,128 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Reflection;
32
33using OpenMetaverse;
34using log4net;
35using log4net.Appender;
36using log4net.Layout;
37
38using OpenSim.Framework;
39using OpenSim.Services.Interfaces;
40using OpenSim.Services.Connectors;
41
42namespace OpenSim.Tests.Clients.PresenceClient
43{
44 public class PresenceClient
45 {
46 private static readonly ILog m_log =
47 LogManager.GetLogger(
48 MethodBase.GetCurrentMethod().DeclaringType);
49
50 public static void Main(string[] args)
51 {
52 ConsoleAppender consoleAppender = new ConsoleAppender();
53 consoleAppender.Layout =
54 new PatternLayout("%date [%thread] %-5level %logger [%property{NDC}] - %message%newline");
55 log4net.Config.BasicConfigurator.Configure(consoleAppender);
56
57 string serverURI = "http://127.0.0.1:8003";
58 PresenceServicesConnector m_Connector = new PresenceServicesConnector(serverURI);
59
60 UUID user1 = UUID.Random();
61 UUID session1 = UUID.Random();
62 UUID region1 = UUID.Random();
63
64 bool success = m_Connector.LoginAgent(user1.ToString(), session1, UUID.Zero);
65 if (success)
66 m_log.InfoFormat("[PRESENCE CLIENT]: Successfully logged in user {0} with session {1}", user1, session1);
67 else
68 m_log.InfoFormat("[PRESENCE CLIENT]: failed to login user {0}", user1);
69
70 System.Console.WriteLine("\n");
71
72 PresenceInfo pinfo = m_Connector.GetAgent(session1);
73 if (pinfo == null)
74 m_log.InfoFormat("[PRESENCE CLIENT]: Unable to retrieve presence for {0}", user1);
75 else
76 m_log.InfoFormat("[PRESENCE CLIENT]: Presence retrieved correctly: userID={0}; Online={1}; regionID={2}; homeRegion={3}",
77 pinfo.UserID, pinfo.Online, pinfo.RegionID, pinfo.HomeRegionID);
78
79 System.Console.WriteLine("\n");
80 success = m_Connector.ReportAgent(session1, region1, new Vector3(128, 128, 128), new Vector3(4, 5, 6));
81 if (success)
82 m_log.InfoFormat("[PRESENCE CLIENT]: Successfully reported session {0} in region {1}", user1, region1);
83 else
84 m_log.InfoFormat("[PRESENCE CLIENT]: failed to report session {0}", session1);
85 pinfo = m_Connector.GetAgent(session1);
86 if (pinfo == null)
87 m_log.InfoFormat("[PRESENCE CLIENT]: Unable to retrieve presence for {0} for second time", user1);
88 else
89 m_log.InfoFormat("[PRESENCE CLIENT]: Presence retrieved correctly: userID={0}; Online={1}; regionID={2}; homeRegion={3}",
90 pinfo.UserID, pinfo.Online, pinfo.RegionID, pinfo.HomeRegionID);
91
92 System.Console.WriteLine("\n");
93 success = m_Connector.SetHomeLocation(user1.ToString(), region1, new Vector3(128, 128, 128), new Vector3(4, 5, 6));
94 if (success)
95 m_log.InfoFormat("[PRESENCE CLIENT]: Successfully set home for user {0} in region {1}", user1, region1);
96 else
97 m_log.InfoFormat("[PRESENCE CLIENT]: failed to set home for user {0}", user1);
98 pinfo = m_Connector.GetAgent(session1);
99 if (pinfo == null)
100 m_log.InfoFormat("[PRESENCE CLIENT]: Unable to retrieve presence for {0} for third time", user1);
101 else
102 m_log.InfoFormat("[PRESENCE CLIENT]: Presence retrieved correctly: userID={0}; Online={1}; regionID={2}; homeRegion={3}",
103 pinfo.UserID, pinfo.Online, pinfo.RegionID, pinfo.HomeRegionID);
104
105 System.Console.WriteLine("\n");
106 success = m_Connector.LogoutAgent(session1, Vector3.Zero, Vector3.UnitY);
107 if (success)
108 m_log.InfoFormat("[PRESENCE CLIENT]: Successfully logged out user {0}", user1);
109 else
110 m_log.InfoFormat("[PRESENCE CLIENT]: failed to logout user {0}", user1);
111 pinfo = m_Connector.GetAgent(session1);
112 if (pinfo == null)
113 m_log.InfoFormat("[PRESENCE CLIENT]: Unable to retrieve presence for {0} for fourth time", user1);
114 else
115 m_log.InfoFormat("[PRESENCE CLIENT]: Presence retrieved correctly: userID={0}; Online={1}; regionID={2}; homeRegion={3}",
116 pinfo.UserID, pinfo.Online, pinfo.RegionID, pinfo.HomeRegionID);
117
118 System.Console.WriteLine("\n");
119 success = m_Connector.ReportAgent(session1, UUID.Random(), Vector3.Zero, Vector3.Zero);
120 if (success)
121 m_log.InfoFormat("[PRESENCE CLIENT]: Report agent succeeded, but this is wrong");
122 else
123 m_log.InfoFormat("[PRESENCE CLIENT]: failed to report agent, as it should because user is not logged in");
124
125 }
126
127 }
128}
diff --git a/OpenSim/Tests/Clients/UserAccounts/OpenSim.Server.ini b/OpenSim/Tests/Clients/UserAccounts/OpenSim.Server.ini
new file mode 100644
index 0000000..eb1f473
--- /dev/null
+++ b/OpenSim/Tests/Clients/UserAccounts/OpenSim.Server.ini
@@ -0,0 +1,33 @@
1; * Run a ROBUST server shell like this, from bin:
2; * $ OpenSim.Server.exe -inifile ../OpenSim/Tests/Clients/Presence/OpenSim.Server.ini
3; *
4; * Then run this client like this, from bin:
5; * $ OpenSim.Tests.Clients.UserAccountClient.exe
6; *
7; *
8
9[Startup]
10ServiceConnectors = "OpenSim.Server.Handlers.dll:UserAccountServiceConnector"
11
12; * This is common for all services, it's the network setup for the entire
13; * server instance
14; *
15[Network]
16port = 8003
17
18; * The following are for the remote console
19; * They have no effect for the local or basic console types
20; * Leave commented to diable logins to the console
21;ConsoleUser = Test
22;ConsolePass = secret
23
24; * As an example, the below configuration precisely mimicks the legacy
25; * asset server. It is read by the asset IN connector (defined above)
26; * and it then loads the OUT connector (a local database module). That,
27; * in turn, reads the asset loader and database connection information
28; *
29[UserAccountService]
30 LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
31 StorageProvider = "OpenSim.Data.MySQL.dll"
32 ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim123;"
33
diff --git a/OpenSim/Tests/Clients/UserAccounts/UserAccountsClient.cs b/OpenSim/Tests/Clients/UserAccounts/UserAccountsClient.cs
new file mode 100644
index 0000000..56195b1
--- /dev/null
+++ b/OpenSim/Tests/Clients/UserAccounts/UserAccountsClient.cs
@@ -0,0 +1,120 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Text;
31using System.Reflection;
32
33using OpenMetaverse;
34using log4net;
35using log4net.Appender;
36using log4net.Layout;
37
38using OpenSim.Framework;
39using OpenSim.Services.Interfaces;
40using OpenSim.Services.Connectors;
41
42namespace OpenSim.Tests.Clients.PresenceClient
43{
44 public class UserAccountsClient
45 {
46 private static readonly ILog m_log =
47 LogManager.GetLogger(
48 MethodBase.GetCurrentMethod().DeclaringType);
49
50 public static void Main(string[] args)
51 {
52 ConsoleAppender consoleAppender = new ConsoleAppender();
53 consoleAppender.Layout =
54 new PatternLayout("%date [%thread] %-5level %logger [%property{NDC}] - %message%newline");
55 log4net.Config.BasicConfigurator.Configure(consoleAppender);
56
57 string serverURI = "http://127.0.0.1:8003";
58 UserAccountServicesConnector m_Connector = new UserAccountServicesConnector(serverURI);
59
60 UUID user1 = UUID.Random();
61 string first = "Completely";
62 string last = "Clueless";
63 string email = "foo@bar.com";
64
65 UserAccount account = new UserAccount(user1);
66 account.FirstName = first;
67 account.LastName = last;
68 account.Email = email;
69 account.ServiceURLs = new Dictionary<string, object>();
70 account.ServiceURLs.Add("InventoryServerURI", "http://cnn.com");
71 account.ServiceURLs.Add("AssetServerURI", "http://cnn.com");
72
73 bool success = m_Connector.StoreUserAccount(account);
74 if (success)
75 m_log.InfoFormat("[USER CLIENT]: Successfully created account for user {0} {1}", account.FirstName, account.LastName);
76 else
77 m_log.InfoFormat("[USER CLIENT]: failed to create user {0} {1}", account.FirstName, account.LastName);
78
79 System.Console.WriteLine("\n");
80
81 account = m_Connector.GetUserAccount(UUID.Zero, user1);
82 if (account == null)
83 m_log.InfoFormat("[USER CLIENT]: Unable to retrieve accouny by UUID for {0}", user1);
84 else
85 {
86 m_log.InfoFormat("[USER CLIENT]: Account retrieved correctly: userID={0}; FirstName={1}; LastName={2}; Email={3}",
87 account.PrincipalID, account.FirstName, account.LastName, account.Email);
88 foreach (KeyValuePair<string, object> kvp in account.ServiceURLs)
89 m_log.DebugFormat("\t {0} -> {1}", kvp.Key, kvp.Value);
90 }
91
92 System.Console.WriteLine("\n");
93
94 account = m_Connector.GetUserAccount(UUID.Zero, first, last);
95 if (account == null)
96 m_log.InfoFormat("[USER CLIENT]: Unable to retrieve accouny by name for {0}", user1);
97 else
98 {
99 m_log.InfoFormat("[USER CLIENT]: Account retrieved correctly: userID={0}; FirstName={1}; LastName={2}; Email={3}",
100 account.PrincipalID, account.FirstName, account.LastName, account.Email);
101 foreach (KeyValuePair<string, object> kvp in account.ServiceURLs)
102 m_log.DebugFormat("\t {0} -> {1}", kvp.Key, kvp.Value);
103 }
104
105 System.Console.WriteLine("\n");
106 account = m_Connector.GetUserAccount(UUID.Zero, email);
107 if (account == null)
108 m_log.InfoFormat("[USER CLIENT]: Unable to retrieve accouny by email for {0}", user1);
109 else
110 {
111 m_log.InfoFormat("[USER CLIENT]: Account retrieved correctly: userID={0}; FirstName={1}; LastName={2}; Email={3}",
112 account.PrincipalID, account.FirstName, account.LastName, account.Email);
113 foreach (KeyValuePair<string, object> kvp in account.ServiceURLs)
114 m_log.DebugFormat("\t {0} -> {1}", kvp.Key, kvp.Value);
115 }
116
117 }
118
119 }
120}
diff --git a/OpenSim/Tests/Common/Mock/MockUserAccountService.cs b/OpenSim/Tests/Common/Mock/MockUserAccountService.cs
new file mode 100644
index 0000000..0769c7a
--- /dev/null
+++ b/OpenSim/Tests/Common/Mock/MockUserAccountService.cs
@@ -0,0 +1,46 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System.Collections.Generic;
29using Nini.Config;
30using OpenMetaverse;
31using OpenSim.Services.Interfaces;
32
33namespace OpenSim.Tests.Common.Mock
34{
35 public class MockUserAccountService : IUserAccountService
36 {
37
38 public MockUserAccountService(IConfigSource config) {}
39
40 public UserAccount GetUserAccount(UUID scopeID, UUID userID) { return new UserAccount(); }
41 public UserAccount GetUserAccount(UUID scopeID, string FirstName, string LastName) { return new UserAccount(); }
42 public UserAccount GetUserAccount(UUID scopeID, string Email) { return new UserAccount(); }
43 public List<UserAccount> GetUserAccounts(UUID scopeID, string query) { return new List<UserAccount>(); }
44 public bool StoreUserAccount(UserAccount data) { return true; }
45 }
46} \ No newline at end of file
diff --git a/OpenSim/Tests/Common/Mock/MockUserService.cs b/OpenSim/Tests/Common/Mock/MockUserService.cs
deleted file mode 100644
index 396ef25..0000000
--- a/OpenSim/Tests/Common/Mock/MockUserService.cs
+++ /dev/null
@@ -1,149 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using OpenMetaverse;
31using OpenSim.Framework;
32using OpenSim.Framework.Communications;
33using OpenSim.Framework.Communications.Cache;
34using OpenSim.Services.Interfaces;
35
36namespace OpenSim.Tests.Common
37{
38 public class MockUserService : IUserService
39 {
40 public void AddTemporaryUserProfile(UserProfileData userProfile)
41 {
42 throw new NotImplementedException();
43 }
44
45 public UserProfileData GetUserProfile(string firstName, string lastName)
46 {
47 throw new NotImplementedException();
48 }
49
50 public UserProfileData GetUserProfile(UUID userId)
51 {
52 throw new NotImplementedException();
53 }
54
55 public UserProfileData GetUserProfile(Uri uri)
56 {
57 UserProfileData userProfile = new UserProfileData();
58
59// userProfile.ID = new UUID(Util.GetHashGuid(uri.ToString(), AssetCache.AssetInfo.Secret));
60
61 return userProfile;
62 }
63
64 public Uri GetUserUri(UserProfileData userProfile)
65 {
66 throw new NotImplementedException();
67 }
68
69 public UserAgentData GetAgentByUUID(UUID userId)
70 {
71 throw new NotImplementedException();
72 }
73
74 public void ClearUserAgent(UUID avatarID)
75 {
76 throw new NotImplementedException();
77 }
78
79 public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(UUID QueryID, string Query)
80 {
81 throw new NotImplementedException();
82 }
83
84 public UserProfileData SetupMasterUser(string firstName, string lastName)
85 {
86 throw new NotImplementedException();
87 }
88
89 public UserProfileData SetupMasterUser(string firstName, string lastName, string password)
90 {
91 throw new NotImplementedException();
92 }
93
94 public UserProfileData SetupMasterUser(UUID userId)
95 {
96 throw new NotImplementedException();
97 }
98
99 public bool UpdateUserProfile(UserProfileData data)
100 {
101 throw new NotImplementedException();
102 }
103
104 public void AddNewUserFriend(UUID friendlistowner, UUID friend, uint perms)
105 {
106 throw new NotImplementedException();
107 }
108
109 public void RemoveUserFriend(UUID friendlistowner, UUID friend)
110 {
111 throw new NotImplementedException();
112 }
113
114 public void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms)
115 {
116 throw new NotImplementedException();
117 }
118
119 public void LogOffUser(UUID userid, UUID regionid, ulong regionhandle, Vector3 position, Vector3 lookat)
120 {
121 throw new NotImplementedException();
122 }
123
124 public void LogOffUser(UUID userid, UUID regionid, ulong regionhandle, float posx, float posy, float posz)
125 {
126 throw new NotImplementedException();
127 }
128
129 public List<FriendListItem> GetUserFriendList(UUID friendlistowner)
130 {
131 throw new NotImplementedException();
132 }
133
134 public bool VerifySession(UUID userID, UUID sessionID)
135 {
136 return true;
137 }
138
139 public void SetInventoryService(IInventoryService inv)
140 {
141 throw new NotImplementedException();
142 }
143
144 public virtual bool AuthenticateUserByPassword(UUID userID, string password)
145 {
146 throw new NotImplementedException();
147 }
148 }
149}
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index 68ac96a..b07a072 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -95,7 +95,8 @@ namespace OpenSim.Tests.Common.Mock
95 public event DeRezObject OnDeRezObject; 95 public event DeRezObject OnDeRezObject;
96 public event Action<IClientAPI> OnRegionHandShakeReply; 96 public event Action<IClientAPI> OnRegionHandShakeReply;
97 public event GenericCall2 OnRequestWearables; 97 public event GenericCall2 OnRequestWearables;
98 public event GenericCall2 OnCompleteMovementToRegion; 98 public event GenericCall1 OnCompleteMovementToRegion;
99 public event UpdateAgent OnPreAgentUpdate;
99 public event UpdateAgent OnAgentUpdate; 100 public event UpdateAgent OnAgentUpdate;
100 public event AgentRequestSit OnAgentRequestSit; 101 public event AgentRequestSit OnAgentRequestSit;
101 public event AgentSit OnAgentSit; 102 public event AgentSit OnAgentSit;
@@ -140,6 +141,7 @@ namespace OpenSim.Tests.Common.Mock
140 public event Action<UUID> OnRemoveAvatar; 141 public event Action<UUID> OnRemoveAvatar;
141 142
142 public event CreateNewInventoryItem OnCreateNewInventoryItem; 143 public event CreateNewInventoryItem OnCreateNewInventoryItem;
144 public event LinkInventoryItem OnLinkInventoryItem;
143 public event CreateInventoryFolder OnCreateNewInventoryFolder; 145 public event CreateInventoryFolder OnCreateNewInventoryFolder;
144 public event UpdateInventoryFolder OnUpdateInventoryFolder; 146 public event UpdateInventoryFolder OnUpdateInventoryFolder;
145 public event MoveInventoryFolder OnMoveInventoryFolder; 147 public event MoveInventoryFolder OnMoveInventoryFolder;
@@ -367,7 +369,11 @@ namespace OpenSim.Tests.Common.Mock
367 get { return true; } 369 get { return true; }
368 set { } 370 set { }
369 } 371 }
370 372 public bool IsLoggingOut
373 {
374 get { return false; }
375 set { }
376 }
371 public UUID ActiveGroupId 377 public UUID ActiveGroupId
372 { 378 {
373 get { return UUID.Zero; } 379 get { return UUID.Zero; }
@@ -449,7 +455,7 @@ namespace OpenSim.Tests.Common.Mock
449 455
450 public void CompleteMovement() 456 public void CompleteMovement()
451 { 457 {
452 OnCompleteMovementToRegion(); 458 OnCompleteMovementToRegion(this);
453 } 459 }
454 460
455 public virtual void ActivateGesture(UUID assetId, UUID gestureId) 461 public virtual void ActivateGesture(UUID assetId, UUID gestureId)
@@ -748,7 +754,7 @@ namespace OpenSim.Tests.Common.Mock
748 754
749 if (OnCompleteMovementToRegion != null) 755 if (OnCompleteMovementToRegion != null)
750 { 756 {
751 OnCompleteMovementToRegion(); 757 OnCompleteMovementToRegion(this);
752 } 758 }
753 } 759 }
754 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID) 760 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID)
@@ -1205,5 +1211,13 @@ namespace OpenSim.Tests.Common.Mock
1205 public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals) 1211 public void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals)
1206 { 1212 {
1207 } 1213 }
1214
1215 public void SendChangeUserRights(UUID agentID, UUID friendID, int rights)
1216 {
1217 }
1218
1219 public void SendTextBoxRequest(string message, int chatChannel, string objectname, string ownerFirstName, string ownerLastName, UUID objectId)
1220 {
1221 }
1208 } 1222 }
1209} 1223}
diff --git a/OpenSim/Tests/Common/Mock/TestScene.cs b/OpenSim/Tests/Common/Mock/TestScene.cs
index 22cfa2c..01f2c14 100644
--- a/OpenSim/Tests/Common/Mock/TestScene.cs
+++ b/OpenSim/Tests/Common/Mock/TestScene.cs
@@ -29,7 +29,7 @@ using System;
29using Nini.Config; 29using Nini.Config;
30using OpenSim.Framework; 30using OpenSim.Framework;
31using OpenSim.Framework.Communications; 31using OpenSim.Framework.Communications;
32using OpenSim.Framework.Communications.Cache; 32
33using OpenSim.Framework.Servers; 33using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework; 34using OpenSim.Region.Framework;
35using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
@@ -40,10 +40,10 @@ namespace OpenSim.Tests.Common.Mock
40 { 40 {
41 public TestScene( 41 public TestScene(
42 RegionInfo regInfo, AgentCircuitManager authen, 42 RegionInfo regInfo, AgentCircuitManager authen,
43 CommunicationsManager commsMan, SceneCommunicationService sceneGridService, StorageManager storeManager, 43 SceneCommunicationService sceneGridService, StorageManager storeManager,
44 ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim, 44 ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim,
45 bool SeeIntoRegionFromNeighbor, IConfigSource config, string simulatorVersion) 45 bool SeeIntoRegionFromNeighbor, IConfigSource config, string simulatorVersion)
46 : base(regInfo, authen, commsMan, sceneGridService, storeManager, moduleLoader, 46 : base(regInfo, authen, sceneGridService, storeManager, moduleLoader,
47 dumpAssetsToFile, physicalPrim, SeeIntoRegionFromNeighbor, config, simulatorVersion) 47 dumpAssetsToFile, physicalPrim, SeeIntoRegionFromNeighbor, config, simulatorVersion)
48 { 48 {
49 } 49 }
@@ -56,7 +56,7 @@ namespace OpenSim.Tests.Common.Mock
56 /// 56 ///
57 /// <param name="agent"></param> 57 /// <param name="agent"></param>
58 /// <returns></returns> 58 /// <returns></returns>
59 public override bool AuthenticateUser(AgentCircuitData agent, out string reason) 59 public override bool VerifyUserPresence(AgentCircuitData agent, out string reason)
60 { 60 {
61 reason = String.Empty; 61 reason = String.Empty;
62 return true; 62 return true;
@@ -65,6 +65,6 @@ namespace OpenSim.Tests.Common.Mock
65 public AsyncSceneObjectGroupDeleter SceneObjectGroupDeleter 65 public AsyncSceneObjectGroupDeleter SceneObjectGroupDeleter
66 { 66 {
67 get { return m_asyncSceneObjectDeleter; } 67 get { return m_asyncSceneObjectDeleter; }
68 } 68 }
69 } 69 }
70} 70} \ No newline at end of file
diff --git a/OpenSim/Tests/Common/Mock/TestUserDataPlugin.cs b/OpenSim/Tests/Common/Mock/TestUserDataPlugin.cs
deleted file mode 100644
index 5188cf6..0000000
--- a/OpenSim/Tests/Common/Mock/TestUserDataPlugin.cs
+++ /dev/null
@@ -1,216 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using OpenMetaverse;
31using OpenSim.Framework;
32using OpenSim.Data;
33
34namespace OpenSim.Tests.Common.Mock
35{
36 /// <summary>
37 /// In memory user data provider. Might be quite useful as a proper user data plugin, though getting mono addins
38 /// to load any plugins when running unit tests has proven impossible so far. Currently no locking since unit
39 /// tests are single threaded.
40 /// </summary>
41 public class TestUserDataPlugin : IUserDataPlugin
42 {
43 public string Version { get { return "0"; } }
44 public string Name { get { return "TestUserDataPlugin"; } }
45
46 /// <summary>
47 /// User profiles keyed by name
48 /// </summary>
49 private Dictionary<string, UserProfileData> m_userProfilesByName = new Dictionary<string, UserProfileData>();
50
51 /// <summary>
52 /// User profiles keyed by uuid
53 /// </summary>
54 private Dictionary<UUID, UserProfileData> m_userProfilesByUuid = new Dictionary<UUID, UserProfileData>();
55
56 /// <summary>
57 /// User profiles and their agents
58 /// </summary>
59 private Dictionary<UUID, UserAgentData> m_agentByProfileUuid = new Dictionary<UUID, UserAgentData>();
60
61 /// <summary>
62 /// Friends list by uuid
63 /// </summary>
64 private Dictionary<UUID, List<FriendListItem>> m_friendsListByUuid = new Dictionary<UUID, List<FriendListItem>>();
65
66 public void Initialise() {}
67 public void Dispose() {}
68
69 public void AddTemporaryUserProfile(UserProfileData userProfile)
70 {
71 // Not interested
72 }
73
74 public void AddNewUserProfile(UserProfileData user)
75 {
76 UpdateUserProfile(user);
77 }
78
79 public UserProfileData GetUserByUUID(UUID user)
80 {
81 UserProfileData userProfile = null;
82 m_userProfilesByUuid.TryGetValue(user, out userProfile);
83
84 return userProfile;
85 }
86
87 public UserProfileData GetUserByName(string fname, string lname)
88 {
89 UserProfileData userProfile = null;
90 m_userProfilesByName.TryGetValue(fname + " " + lname, out userProfile);
91
92 return userProfile;
93 }
94
95 public UserProfileData GetUserByUri(Uri uri) { return null; }
96
97 public bool UpdateUserProfile(UserProfileData user)
98 {
99 m_userProfilesByUuid[user.ID] = user;
100 m_userProfilesByName[user.FirstName + " " + user.SurName] = user;
101
102 return true;
103 }
104
105 public List<AvatarPickerAvatar> GeneratePickerResults(UUID queryID, string query) { return null; }
106
107 public UserAgentData GetAgentByUUID(UUID user)
108 {
109 UserAgentData userAgent = null;
110 m_agentByProfileUuid.TryGetValue(user, out userAgent);
111
112 return userAgent;
113 }
114
115 public UserAgentData GetAgentByName(string name)
116 {
117 UserProfileData userProfile = null;
118 m_userProfilesByName.TryGetValue(name, out userProfile);
119 UserAgentData userAgent = null;
120 m_agentByProfileUuid.TryGetValue(userProfile.ID, out userAgent);
121
122 return userAgent;
123 }
124
125 public UserAgentData GetAgentByName(string fname, string lname)
126 {
127 UserProfileData userProfile = GetUserByName(fname,lname);
128 UserAgentData userAgent = null;
129 m_agentByProfileUuid.TryGetValue(userProfile.ID, out userAgent);
130
131 return userAgent;
132 }
133
134 public void StoreWebLoginKey(UUID agentID, UUID webLoginKey) {}
135
136 public void AddNewUserAgent(UserAgentData agent)
137 {
138 m_agentByProfileUuid[agent.ProfileID] = agent;
139 }
140 public void AddNewUserFriend(UUID friendlistowner, UUID friend, uint perms)
141 {
142 FriendListItem newfriend = new FriendListItem();
143 newfriend.FriendPerms = perms;
144 newfriend.Friend = friend;
145 newfriend.FriendListOwner = friendlistowner;
146
147 if (!m_friendsListByUuid.ContainsKey(friendlistowner))
148 {
149 List<FriendListItem> friendslist = new List<FriendListItem>();
150 m_friendsListByUuid[friendlistowner] = friendslist;
151
152 }
153 m_friendsListByUuid[friendlistowner].Add(newfriend);
154 }
155
156 public void RemoveUserFriend(UUID friendlistowner, UUID friend)
157 {
158 if (m_friendsListByUuid.ContainsKey(friendlistowner))
159 {
160 List<FriendListItem> friendslist = m_friendsListByUuid[friendlistowner];
161 foreach (FriendListItem frienditem in friendslist)
162 {
163 if (frienditem.Friend == friend)
164 {
165 friendslist.Remove(frienditem);
166 break;
167 }
168 }
169 }
170 }
171
172 public void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms)
173 {
174 if (m_friendsListByUuid.ContainsKey(friendlistowner))
175 {
176 List<FriendListItem> friendslist = m_friendsListByUuid[friendlistowner];
177 foreach (FriendListItem frienditem in friendslist)
178 {
179 if (frienditem.Friend == friend)
180 {
181 frienditem.FriendPerms = perms;
182 break;
183 }
184 }
185 }
186 }
187
188 public List<FriendListItem> GetUserFriendList(UUID friendlistowner)
189 {
190 if (m_friendsListByUuid.ContainsKey(friendlistowner))
191 {
192 return m_friendsListByUuid[friendlistowner];
193 }
194 else
195 return new List<FriendListItem>();
196
197
198 }
199
200 public Dictionary<UUID, FriendRegionInfo> GetFriendRegionInfos(List<UUID> uuids) { return null; }
201
202 public bool MoneyTransferRequest(UUID from, UUID to, uint amount) { return false; }
203
204 public bool InventoryTransferRequest(UUID from, UUID to, UUID inventory) { return false; }
205
206 public void Initialise(string connect) { return; }
207
208 public AvatarAppearance GetUserAppearance(UUID user) { return null; }
209
210 public void UpdateUserAppearance(UUID user, AvatarAppearance appearance) {}
211
212 public void ResetAttachments(UUID userID) {}
213
214 public void LogoutUsers(UUID regionID) {}
215 }
216}
diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs
index 1188b62..1fc3cb5 100644
--- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs
+++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs
@@ -38,12 +38,9 @@ namespace OpenSim.Tests.Common
38 /// <summary> 38 /// <summary>
39 /// Create an asset from the given data 39 /// Create an asset from the given data
40 /// </summary> 40 /// </summary>
41 /// <param name="assetUuid"></param> 41 public static AssetBase CreateAsset(UUID assetUuid, string data, UUID creatorID)
42 /// <param name="data"></param>
43 /// <returns></returns>
44 public static AssetBase CreateAsset(UUID assetUuid, string data)
45 { 42 {
46 AssetBase asset = new AssetBase(assetUuid, assetUuid.ToString(), (sbyte)AssetType.Object); 43 AssetBase asset = new AssetBase(assetUuid, assetUuid.ToString(), (sbyte)AssetType.Object, creatorID.ToString());
47 asset.Data = Encoding.ASCII.GetBytes(data); 44 asset.Data = Encoding.ASCII.GetBytes(data);
48 return asset; 45 return asset;
49 } 46 }
@@ -56,7 +53,7 @@ namespace OpenSim.Tests.Common
56 /// <returns></returns> 53 /// <returns></returns>
57 public static AssetBase CreateAsset(UUID assetUuid, SceneObjectGroup sog) 54 public static AssetBase CreateAsset(UUID assetUuid, SceneObjectGroup sog)
58 { 55 {
59 AssetBase asset = new AssetBase(assetUuid, assetUuid.ToString(), (sbyte)AssetType.Object); 56 AssetBase asset = new AssetBase(assetUuid, assetUuid.ToString(), (sbyte)AssetType.Object, sog.OwnerID.ToString());
60 asset.Data = Encoding.ASCII.GetBytes(SceneObjectSerializer.ToXml2Format(sog)); 57 asset.Data = Encoding.ASCII.GetBytes(SceneObjectSerializer.ToXml2Format(sog));
61 return asset; 58 return asset;
62 } 59 }
diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
index b13e8dd..864e2aa 100644
--- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
+++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
@@ -32,7 +32,7 @@ using Nini.Config;
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Communications; 34using OpenSim.Framework.Communications;
35using OpenSim.Framework.Communications.Cache; 35
36using OpenSim.Framework.Console; 36using OpenSim.Framework.Console;
37using OpenSim.Framework.Servers; 37using OpenSim.Framework.Servers;
38using OpenSim.Framework.Servers.HttpServer; 38using OpenSim.Framework.Servers.HttpServer;
@@ -45,6 +45,7 @@ using OpenSim.Region.CoreModules.Avatar.Gods;
45using OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset; 45using OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset;
46using OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory; 46using OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory;
47using OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid; 47using OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid;
48using OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts;
48using OpenSim.Services.Interfaces; 49using OpenSim.Services.Interfaces;
49using OpenSim.Tests.Common.Mock; 50using OpenSim.Tests.Common.Mock;
50 51
@@ -60,7 +61,7 @@ namespace OpenSim.Tests.Common.Setup
60 private static ISharedRegionModule m_assetService = null; 61 private static ISharedRegionModule m_assetService = null;
61 private static ISharedRegionModule m_inventoryService = null; 62 private static ISharedRegionModule m_inventoryService = null;
62 private static ISharedRegionModule m_gridService = null; 63 private static ISharedRegionModule m_gridService = null;
63 private static TestCommunicationsManager commsManager = null; 64 private static ISharedRegionModule m_userAccountService = null;
64 65
65 /// <summary> 66 /// <summary>
66 /// Set up a test scene 67 /// Set up a test scene
@@ -83,21 +84,23 @@ namespace OpenSim.Tests.Common.Setup
83 public static TestScene SetupScene(String realServices) 84 public static TestScene SetupScene(String realServices)
84 { 85 {
85 return SetupScene( 86 return SetupScene(
86 "Unit test region", UUID.Random(), 1000, 1000, new TestCommunicationsManager(), realServices); 87 "Unit test region", UUID.Random(), 1000, 1000, realServices);
87 } 88 }
88 89
89 /// <summary> 90 // REFACTORING PROBLEM. No idea what the difference is with the previous one
90 /// Set up a test scene 91 ///// <summary>
91 /// </summary> 92 ///// Set up a test scene
92 /// 93 ///// </summary>
93 /// <param name="realServices">Starts real inventory and asset services, as opposed to mock ones, if true</param> 94 /////
94 /// <param name="cm">This should be the same if simulating two scenes within a standalone</param> 95 ///// <param name="realServices">Starts real inventory and asset services, as opposed to mock ones, if true</param>
95 /// <returns></returns> 96 ///// <param name="cm">This should be the same if simulating two scenes within a standalone</param>
96 public static TestScene SetupScene(TestCommunicationsManager cm, String realServices) 97 ///// <returns></returns>
97 { 98 //public static TestScene SetupScene(String realServices)
98 return SetupScene( 99 //{
99 "Unit test region", UUID.Random(), 1000, 1000, cm, ""); 100 // return SetupScene(
100 } 101 // "Unit test region", UUID.Random(), 1000, 1000, "");
102 //}
103
101 /// <summary> 104 /// <summary>
102 /// Set up a test scene 105 /// Set up a test scene
103 /// </summary> 106 /// </summary>
@@ -107,9 +110,9 @@ namespace OpenSim.Tests.Common.Setup
107 /// <param name="y">Y co-ordinate of the region</param> 110 /// <param name="y">Y co-ordinate of the region</param>
108 /// <param name="cm">This should be the same if simulating two scenes within a standalone</param> 111 /// <param name="cm">This should be the same if simulating two scenes within a standalone</param>
109 /// <returns></returns> 112 /// <returns></returns>
110 public static TestScene SetupScene(string name, UUID id, uint x, uint y, TestCommunicationsManager cm) 113 public static TestScene SetupScene(string name, UUID id, uint x, uint y)
111 { 114 {
112 return SetupScene(name, id, x, y, cm, ""); 115 return SetupScene(name, id, x, y,"");
113 } 116 }
114 117
115 118
@@ -125,23 +128,24 @@ namespace OpenSim.Tests.Common.Setup
125 /// <param name="realServices">Starts real inventory and asset services, as opposed to mock ones, if true</param> 128 /// <param name="realServices">Starts real inventory and asset services, as opposed to mock ones, if true</param>
126 /// <returns></returns> 129 /// <returns></returns>
127 public static TestScene SetupScene( 130 public static TestScene SetupScene(
128 string name, UUID id, uint x, uint y, TestCommunicationsManager cm, String realServices) 131 string name, UUID id, uint x, uint y, String realServices)
129 { 132 {
130 bool newScene = false; 133 bool newScene = false;
131 134
132 Console.WriteLine("Setting up test scene {0}", name); 135 Console.WriteLine("Setting up test scene {0}", name);
133 136
134 // If cm is the same as our last commsManager used, this means the tester wants to link 137 // REFACTORING PROBLEM!
135 // regions. In this case, don't use the sameshared region modules and dont initialize them again. 138 //// If cm is the same as our last commsManager used, this means the tester wants to link
136 // Also, no need to start another MainServer and MainConsole instance. 139 //// regions. In this case, don't use the sameshared region modules and dont initialize them again.
137 if (cm == null || cm != commsManager) 140 //// Also, no need to start another MainServer and MainConsole instance.
138 { 141 //if (cm == null || cm != commsManager)
139 System.Console.WriteLine("Starting a brand new scene"); 142 //{
140 newScene = true; 143 // System.Console.WriteLine("Starting a brand new scene");
141 MainConsole.Instance = new LocalConsole("TEST PROMPT"); 144 // newScene = true;
142 MainServer.Instance = new BaseHttpServer(980); 145 // MainConsole.Instance = new LocalConsole("TEST PROMPT");
143 commsManager = cm; 146 // MainServer.Instance = new BaseHttpServer(980);
144 } 147 // commsManager = cm;
148 //}
145 149
146 // We must set up a console otherwise setup of some modules may fail 150 // We must set up a console otherwise setup of some modules may fail
147 RegionInfo regInfo = new RegionInfo(x, y, new IPEndPoint(IPAddress.Loopback, 9000), "127.0.0.1"); 151 RegionInfo regInfo = new RegionInfo(x, y, new IPEndPoint(IPAddress.Loopback, 9000), "127.0.0.1");
@@ -149,13 +153,13 @@ namespace OpenSim.Tests.Common.Setup
149 regInfo.RegionID = id; 153 regInfo.RegionID = id;
150 154
151 AgentCircuitManager acm = new AgentCircuitManager(); 155 AgentCircuitManager acm = new AgentCircuitManager();
152 SceneCommunicationService scs = new SceneCommunicationService(cm); 156 SceneCommunicationService scs = new SceneCommunicationService();
153 157
154 StorageManager sm = new StorageManager("OpenSim.Data.Null.dll", "", ""); 158 StorageManager sm = new StorageManager("OpenSim.Data.Null.dll", "", "");
155 IConfigSource configSource = new IniConfigSource(); 159 IConfigSource configSource = new IniConfigSource();
156 160
157 TestScene testScene = new TestScene( 161 TestScene testScene = new TestScene(
158 regInfo, acm, cm, scs, sm, null, false, false, false, configSource, null); 162 regInfo, acm, scs, sm, null, false, false, false, configSource, null);
159 163
160 INonSharedRegionModule capsModule = new CapabilitiesModule(); 164 INonSharedRegionModule capsModule = new CapabilitiesModule();
161 capsModule.Initialise(new IniConfigSource()); 165 capsModule.Initialise(new IniConfigSource());
@@ -175,13 +179,16 @@ namespace OpenSim.Tests.Common.Setup
175 StartAssetService(testScene, true); 179 StartAssetService(testScene, true);
176 else 180 else
177 StartAssetService(testScene, false); 181 StartAssetService(testScene, false);
182
178 if (realServices.Contains("inventory")) 183 if (realServices.Contains("inventory"))
179 StartInventoryService(testScene, true); 184 StartInventoryService(testScene, true);
180 else 185 else
181 StartInventoryService(testScene, false); 186 StartInventoryService(testScene, false);
187
182 if (realServices.Contains("grid")) 188 if (realServices.Contains("grid"))
183 StartGridService(testScene, true); 189 StartGridService(testScene, true);
184 190
191 StartUserAccountService(testScene, realServices.Contains("useraccounts"));
185 } 192 }
186 // If not, make sure the shared module gets references to this new scene 193 // If not, make sure the shared module gets references to this new scene
187 else 194 else
@@ -190,11 +197,13 @@ namespace OpenSim.Tests.Common.Setup
190 m_assetService.RegionLoaded(testScene); 197 m_assetService.RegionLoaded(testScene);
191 m_inventoryService.AddRegion(testScene); 198 m_inventoryService.AddRegion(testScene);
192 m_inventoryService.RegionLoaded(testScene); 199 m_inventoryService.RegionLoaded(testScene);
200 m_userAccountService.AddRegion(testScene);
201 m_userAccountService.RegionLoaded(testScene);
193 } 202 }
203
194 m_inventoryService.PostInitialise(); 204 m_inventoryService.PostInitialise();
195 m_assetService.PostInitialise(); 205 m_assetService.PostInitialise();
196 206 m_userAccountService.PostInitialise();
197 testScene.CommsManager.UserService.SetInventoryService(testScene.InventoryService);
198 207
199 testScene.SetModuleInterfaces(); 208 testScene.SetModuleInterfaces();
200 209
@@ -205,6 +214,14 @@ namespace OpenSim.Tests.Common.Setup
205 physicsPluginManager.LoadPluginsFromAssembly("Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll"); 214 physicsPluginManager.LoadPluginsFromAssembly("Physics/OpenSim.Region.Physics.BasicPhysicsPlugin.dll");
206 testScene.PhysicsScene 215 testScene.PhysicsScene
207 = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", new IniConfigSource(), "test"); 216 = physicsPluginManager.GetPhysicsScene("basicphysics", "ZeroMesher", new IniConfigSource(), "test");
217
218 // It's really not a good idea to use static variables as they carry over between tests, leading to
219 // problems that are extremely hard to debug. Really, these static fields need to be eliminated -
220 // tests using multiple regions that need to share modules need to find another solution.
221 m_assetService = null;
222 m_inventoryService = null;
223 m_gridService = null;
224 m_userAccountService = null;
208 225
209 return testScene; 226 return testScene;
210 } 227 }
@@ -269,6 +286,38 @@ namespace OpenSim.Tests.Common.Setup
269 //testScene.AddRegionModule(m_gridService.Name, m_gridService); 286 //testScene.AddRegionModule(m_gridService.Name, m_gridService);
270 } 287 }
271 288
289 /// <summary>
290 /// Start a user account service, whether real or mock
291 /// </summary>
292 /// <param name="testScene"></param>
293 /// <param name="real">Starts a real service if true, a mock service if not</param>
294 private static void StartUserAccountService(Scene testScene, bool real)
295 {
296 IConfigSource config = new IniConfigSource();
297 config.AddConfig("Modules");
298 config.AddConfig("UserAccountService");
299 config.Configs["Modules"].Set("UserAccountServices", "LocalUserAccountServicesConnector");
300 config.Configs["UserAccountService"].Set("StorageProvider", "OpenSim.Data.Null.dll");
301
302 if (real)
303 config.Configs["UserAccountService"].Set(
304 "LocalServiceModule", "OpenSim.Services.UserAccountService.dll:UserAccountService");
305 else
306 config.Configs["UserAccountService"].Set(
307 "LocalServiceModule", "OpenSim.Tests.Common.dll:MockUserAccountService");
308
309 if (m_userAccountService == null)
310 {
311 ISharedRegionModule userAccountService = new LocalUserAccountServicesConnector();
312 userAccountService.Initialise(config);
313 m_userAccountService = userAccountService;
314 }
315 //else
316 // config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:TestGridService");
317 m_userAccountService.AddRegion(testScene);
318 m_userAccountService.RegionLoaded(testScene);
319 testScene.AddRegionModule(m_userAccountService.Name, m_userAccountService);
320 }
272 321
273 /// <summary> 322 /// <summary>
274 /// Setup modules for a scene using their default settings. 323 /// Setup modules for a scene using their default settings.
diff --git a/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs b/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs
index cb76bc1..cd61fa6 100644
--- a/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs
+++ b/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs
@@ -27,8 +27,7 @@
27 27
28using OpenMetaverse; 28using OpenMetaverse;
29using OpenSim.Framework.Communications; 29using OpenSim.Framework.Communications;
30using OpenSim.Framework.Communications.Cache; 30
31using OpenSim.Region.Communications.Local;
32 31
33namespace OpenSim.Tests.Common.Setup 32namespace OpenSim.Tests.Common.Setup
34{ 33{
@@ -37,82 +36,85 @@ namespace OpenSim.Tests.Common.Setup
37 /// </summary> 36 /// </summary>
38 public static class UserProfileTestUtils 37 public static class UserProfileTestUtils
39 { 38 {
40 /// <summary> 39 // REFACTORING PROBLEM
41 /// Create a test user with a standard inventory 40 // This needs to be rewritten
42 /// </summary> 41
43 /// <param name="commsManager"></param> 42 ///// <summary>
44 /// <param name="callback"> 43 ///// Create a test user with a standard inventory
45 /// Callback to invoke when inventory has been loaded. This is required because 44 ///// </summary>
46 /// loading may be asynchronous, even on standalone 45 ///// <param name="commsManager"></param>
47 /// </param> 46 ///// <param name="callback">
48 /// <returns></returns> 47 ///// Callback to invoke when inventory has been loaded. This is required because
49 public static CachedUserInfo CreateUserWithInventory( 48 ///// loading may be asynchronous, even on standalone
50 CommunicationsManager commsManager, OnInventoryReceivedDelegate callback) 49 ///// </param>
51 { 50 ///// <returns></returns>
52 UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000099"); 51 //public static CachedUserInfo CreateUserWithInventory(
53 return CreateUserWithInventory(commsManager, userId, callback); 52 // CommunicationsManager commsManager, OnInventoryReceivedDelegate callback)
54 } 53 //{
54 // UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000099");
55 // return CreateUserWithInventory(commsManager, userId, callback);
56 //}
55 57
56 /// <summary> 58 ///// <summary>
57 /// Create a test user with a standard inventory 59 ///// Create a test user with a standard inventory
58 /// </summary> 60 ///// </summary>
59 /// <param name="commsManager"></param> 61 ///// <param name="commsManager"></param>
60 /// <param name="userId">User ID</param> 62 ///// <param name="userId">User ID</param>
61 /// <param name="callback"> 63 ///// <param name="callback">
62 /// Callback to invoke when inventory has been loaded. This is required because 64 ///// Callback to invoke when inventory has been loaded. This is required because
63 /// loading may be asynchronous, even on standalone 65 ///// loading may be asynchronous, even on standalone
64 /// </param> 66 ///// </param>
65 /// <returns></returns> 67 ///// <returns></returns>
66 public static CachedUserInfo CreateUserWithInventory( 68 //public static CachedUserInfo CreateUserWithInventory(
67 CommunicationsManager commsManager, UUID userId, OnInventoryReceivedDelegate callback) 69 // CommunicationsManager commsManager, UUID userId, OnInventoryReceivedDelegate callback)
68 { 70 //{
69 return CreateUserWithInventory(commsManager, "Bill", "Bailey", userId, callback); 71 // return CreateUserWithInventory(commsManager, "Bill", "Bailey", userId, callback);
70 } 72 //}
71 73
72 /// <summary> 74 ///// <summary>
73 /// Create a test user with a standard inventory 75 ///// Create a test user with a standard inventory
74 /// </summary> 76 ///// </summary>
75 /// <param name="commsManager"></param> 77 ///// <param name="commsManager"></param>
76 /// <param name="firstName">First name of user</param> 78 ///// <param name="firstName">First name of user</param>
77 /// <param name="lastName">Last name of user</param> 79 ///// <param name="lastName">Last name of user</param>
78 /// <param name="userId">User ID</param> 80 ///// <param name="userId">User ID</param>
79 /// <param name="callback"> 81 ///// <param name="callback">
80 /// Callback to invoke when inventory has been loaded. This is required because 82 ///// Callback to invoke when inventory has been loaded. This is required because
81 /// loading may be asynchronous, even on standalone 83 ///// loading may be asynchronous, even on standalone
82 /// </param> 84 ///// </param>
83 /// <returns></returns> 85 ///// <returns></returns>
84 public static CachedUserInfo CreateUserWithInventory( 86 //public static CachedUserInfo CreateUserWithInventory(
85 CommunicationsManager commsManager, string firstName, string lastName, 87 // CommunicationsManager commsManager, string firstName, string lastName,
86 UUID userId, OnInventoryReceivedDelegate callback) 88 // UUID userId, OnInventoryReceivedDelegate callback)
87 { 89 //{
88 return CreateUserWithInventory(commsManager, firstName, lastName, "troll", userId, callback); 90 // return CreateUserWithInventory(commsManager, firstName, lastName, "troll", userId, callback);
89 } 91 //}
90 92
91 /// <summary> 93 ///// <summary>
92 /// Create a test user with a standard inventory 94 ///// Create a test user with a standard inventory
93 /// </summary> 95 ///// </summary>
94 /// <param name="commsManager"></param> 96 ///// <param name="commsManager"></param>
95 /// <param name="firstName">First name of user</param> 97 ///// <param name="firstName">First name of user</param>
96 /// <param name="lastName">Last name of user</param> 98 ///// <param name="lastName">Last name of user</param>
97 /// <param name="password">Password</param> 99 ///// <param name="password">Password</param>
98 /// <param name="userId">User ID</param> 100 ///// <param name="userId">User ID</param>
99 /// <param name="callback"> 101 ///// <param name="callback">
100 /// Callback to invoke when inventory has been loaded. This is required because 102 ///// Callback to invoke when inventory has been loaded. This is required because
101 /// loading may be asynchronous, even on standalone 103 ///// loading may be asynchronous, even on standalone
102 /// </param> 104 ///// </param>
103 /// <returns></returns> 105 ///// <returns></returns>
104 public static CachedUserInfo CreateUserWithInventory( 106 //public static CachedUserInfo CreateUserWithInventory(
105 CommunicationsManager commsManager, string firstName, string lastName, string password, 107 // CommunicationsManager commsManager, string firstName, string lastName, string password,
106 UUID userId, OnInventoryReceivedDelegate callback) 108 // UUID userId, OnInventoryReceivedDelegate callback)
107 { 109 //{
108 LocalUserServices lus = (LocalUserServices)commsManager.UserService; 110 // LocalUserServices lus = (LocalUserServices)commsManager.UserService;
109 lus.AddUser(firstName, lastName, password, "bill@bailey.com", 1000, 1000, userId); 111 // lus.AddUser(firstName, lastName, password, "bill@bailey.com", 1000, 1000, userId);
110 112
111 CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(userId); 113 // CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(userId);
112 userInfo.OnInventoryReceived += callback; 114 // userInfo.OnInventoryReceived += callback;
113 userInfo.FetchInventory(); 115 // userInfo.FetchInventory();
114 116
115 return userInfo; 117 // return userInfo;
116 } 118 //}
117 } 119 }
118} 120}