123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703 |
- /*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- // TODO: Money Transfer, Inventory Transfer and UpdateUserRegion once they exist
- using System;
- using System.Collections.Generic;
- using System.Text;
- using log4net.Config;
- using NUnit.Framework;
- using NUnit.Framework.SyntaxHelpers;
- using OpenMetaverse;
- using OpenSim.Framework;
- using log4net;
- using System.Reflection;
- namespace OpenSim.Data.Tests
- {
- public class BasicUserTest
- {
- //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public IUserDataPlugin db;
- public UUID user1;
- public UUID user2;
- public UUID user3;
- public UUID user4;
- public UUID user5;
- public UUID webkey;
- public UUID zero = UUID.Zero;
- public static Random random;
- public UUID agent1;
- public UUID agent2;
- public UUID agent3;
- public UUID agent4;
-
- public UUID region1;
-
- public string fname0;
- public string lname0;
- public string fname1;
- public string lname1;
- public string fname2;
- public string lname2;
- public string fname3;
- public string lname3;
- public void SuperInit()
- {
- OpenSim.Tests.Common.TestLogging.LogToConsole();
- random = new Random();
- user1 = UUID.Random();
- user2 = UUID.Random();
- user3 = UUID.Random();
- user4 = UUID.Random();
- user5 = UUID.Random();
- agent1 = UUID.Random();
- agent2 = UUID.Random();
- agent3 = UUID.Random();
- agent4 = UUID.Random();
- webkey = UUID.Random();
- region1 = UUID.Random();
- fname0 = RandomName();
- lname0 = RandomName();
- fname1 = RandomName();
- lname1 = RandomName();
- fname2 = RandomName();
- lname2 = RandomName();
- fname3 = RandomName();
- lname3 = RandomName();
- }
- [Test]
- public void T001_LoadEmpty()
- {
- Assert.That(db.GetUserByUUID(zero), Is.Null);
- Assert.That(db.GetUserByUUID(user1), Is.Null);
- Assert.That(db.GetUserByUUID(user2), Is.Null);
- Assert.That(db.GetUserByUUID(user3), Is.Null);
- Assert.That(db.GetUserByUUID(UUID.Random()), Is.Null);
- Assert.That(db.GetAgentByUUID(zero), Is.Null);
- Assert.That(db.GetAgentByUUID(agent1), Is.Null);
- Assert.That(db.GetAgentByUUID(agent2), Is.Null);
- Assert.That(db.GetAgentByUUID(agent3), Is.Null);
- Assert.That(db.GetAgentByUUID(UUID.Random()), Is.Null);
- }
- [Test]
- public void T010_CreateUser()
- {
- UserProfileData u1 = NewUser(user1,fname1,lname1);
- UserProfileData u2 = NewUser(user2,fname2,lname2);
- UserProfileData u3 = NewUser(user3,fname3,lname3);
- // this is used to check whether null works here
- u3.Email = null;
- db.AddNewUserProfile(u1);
- db.AddNewUserProfile(u2);
- db.AddNewUserProfile(u3);
- UserProfileData u1a = db.GetUserByUUID(user1);
- UserProfileData u2a = db.GetUserByUUID(user2);
- UserProfileData u3a = db.GetUserByUUID(user3);
- Assert.That(user1,Is.EqualTo(u1a.ID), "Assert.That(user1,Is.EqualTo(u1a.ID))");
- Assert.That(user2,Is.EqualTo(u2a.ID), "Assert.That(user2,Is.EqualTo(u2a.ID))");
- Assert.That(user3,Is.EqualTo(u3a.ID), "Assert.That(user3,Is.EqualTo(u3a.ID))");
- // and one email test
- Assert.That(u3.Email, Is.Null);
- }
-
- [Test]
- public void T011_FetchUserByName()
- {
- UserProfileData u1 = db.GetUserByName(fname1,lname1);
- UserProfileData u2 = db.GetUserByName(fname2,lname2);
- UserProfileData u3 = db.GetUserByName(fname3,lname3);
- Assert.That(user1,Is.EqualTo(u1.ID), "Assert.That(user1,Is.EqualTo(u1.ID))");
- Assert.That(user2,Is.EqualTo(u2.ID), "Assert.That(user2,Is.EqualTo(u2.ID))");
- Assert.That(user3,Is.EqualTo(u3.ID), "Assert.That(user3,Is.EqualTo(u3.ID))");
- }
- [Test]
- public void T012_UpdateUserProfile()
- {
- UserProfileData u1 = db.GetUserByUUID(user1);
- Assert.That(fname1,Is.EqualTo(u1.FirstName), "Assert.That(fname1,Is.EqualTo(u1.FirstName))");
- u1.FirstName = "Ugly";
-
- db.UpdateUserProfile(u1);
- Assert.That("Ugly",Is.EqualTo(u1.FirstName), "Assert.That(\"Ugly\",Is.EqualTo(u1.FirstName))");
- }
- [Test]
- public void T013_StoreUserWebKey()
- {
- UserProfileData u1 = db.GetUserByUUID(user1);
- Assert.That(u1.WebLoginKey,Is.EqualTo(zero), "Assert.That(u1.WebLoginKey,Is.EqualTo(zero))");
- db.StoreWebLoginKey(user1, webkey);
- u1 = db.GetUserByUUID(user1);
- Assert.That(u1.WebLoginKey,Is.EqualTo(webkey), "Assert.That(u1.WebLoginKey,Is.EqualTo(webkey))");
- }
-
- [Test]
- public void T014_ExpectedNullReferenceReturns()
- {
- UserProfileData u0 = NewUser(zero,fname0,lname0);
- UserProfileData u4 = NewUser(user4,fname2,lname2);
- db.AddNewUserProfile(u0); //UserID 0 should fail to save.
- db.AddNewUserProfile(u4); //The first name and last name are already in use (from T010), so this should fail too
- Assert.That(db.GetUserByUUID(zero),Is.Null);
- Assert.That(db.GetUserByUUID(user4),Is.Null);
- }
-
- [Test]
- public void T015_UserPersistency()
- {
- UserProfileData u = new UserProfileData();
- UUID id = user5;
- string fname = RandomName();
- string lname = RandomName();
- string email = RandomName();
- string passhash = RandomName();
- string passsalt = RandomName();
- UUID homeregion = UUID.Random();
- UUID webloginkey = UUID.Random();
- uint homeregx = (uint) random.Next();
- uint homeregy = (uint) random.Next();
- Vector3 homeloc
- = new Vector3(
- (float)Math.Round(random.NextDouble(), 5),
- (float)Math.Round(random.NextDouble(), 5),
- (float)Math.Round(random.NextDouble(), 5));
- Vector3 homelookat
- = new Vector3(
- (float)Math.Round(random.NextDouble(), 5),
- (float)Math.Round(random.NextDouble(), 5),
- (float)Math.Round(random.NextDouble(), 5));
- int created = random.Next();
- int lastlogin = random.Next();
- string userinvuri = RandomName();
- string userasseturi = RandomName();
- uint candomask = (uint) random.Next();
- uint wantdomask = (uint) random.Next();
- string abouttext = RandomName();
- string flabouttext = RandomName();
- UUID image = UUID.Random();
- UUID firstimage = UUID.Random();
- UserAgentData agent = NewAgent(id,UUID.Random());
- int userflags = random.Next();
- int godlevel = random.Next();
- string customtype = RandomName();
- UUID partner = UUID.Random();
-
- //HomeRegionX and HomeRegionY must only use 24 bits
- homeregx = ((homeregx << 8) >> 8);
- homeregy = ((homeregy << 8) >> 8);
- u.ID = id;
- u.WebLoginKey = webloginkey;
- u.HomeRegionID = homeregion;
- u.FirstName = fname;
- u.SurName = lname;
- u.Email = email;
- u.PasswordHash = passhash;
- u.PasswordSalt = passsalt;
- u.HomeRegionX = homeregx;
- u.HomeRegionY = homeregy;
- ulong homereg = u.HomeRegion;
- u.HomeLocation = homeloc;
- u.HomeLookAt = homelookat;
- u.Created = created;
- u.LastLogin = lastlogin;
- u.UserInventoryURI = userinvuri;
- u.UserAssetURI = userasseturi;
- u.CanDoMask = candomask;
- u.WantDoMask = wantdomask;
- u.AboutText = abouttext;
- u.FirstLifeAboutText = flabouttext;
- u.Image = image;
- u.FirstLifeImage = firstimage;
- u.CurrentAgent = agent;
- u.UserFlags = userflags;
- u.GodLevel = godlevel;
- u.CustomType = customtype;
- u.Partner = partner;
-
- db.AddNewUserProfile(u);
- UserProfileData u1a = db.GetUserByUUID(id);
- Assert.That(u1a,Is.Not.Null);
- Assert.That(id,Is.EqualTo(u1a.ID), "Assert.That(id,Is.EqualTo(u1a.ID))");
- Assert.That(homeregion,Is.EqualTo(u1a.HomeRegionID), "Assert.That(homeregion,Is.EqualTo(u1a.HomeRegionID))");
- Assert.That(webloginkey,Is.EqualTo(u1a.WebLoginKey), "Assert.That(webloginkey,Is.EqualTo(u1a.WebLoginKey))");
- Assert.That(fname,Is.EqualTo(u1a.FirstName), "Assert.That(fname,Is.EqualTo(u1a.FirstName))");
- Assert.That(lname,Is.EqualTo(u1a.SurName), "Assert.That(lname,Is.EqualTo(u1a.SurName))");
- Assert.That(email,Is.EqualTo(u1a.Email), "Assert.That(email,Is.EqualTo(u1a.Email))");
- Assert.That(passhash,Is.EqualTo(u1a.PasswordHash), "Assert.That(passhash,Is.EqualTo(u1a.PasswordHash))");
- Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt), "Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt))");
- Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX), "Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX))");
- Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY), "Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY))");
- Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))");
- Assert.That(homeloc,Is.EqualTo(u1a.HomeLocation), "Assert.That(homeloc,Is.EqualTo(u1a.HomeLocation))");
- Assert.That(homelookat,Is.EqualTo(u1a.HomeLookAt), "Assert.That(homelookat,Is.EqualTo(u1a.HomeLookAt))");
- Assert.That(created,Is.EqualTo(u1a.Created), "Assert.That(created,Is.EqualTo(u1a.Created))");
- Assert.That(lastlogin,Is.EqualTo(u1a.LastLogin), "Assert.That(lastlogin,Is.EqualTo(u1a.LastLogin))");
- Assert.That(userinvuri,Is.EqualTo(u1a.UserInventoryURI), "Assert.That(userinvuri,Is.EqualTo(u1a.UserInventoryURI))");
- Assert.That(userasseturi,Is.EqualTo(u1a.UserAssetURI), "Assert.That(userasseturi,Is.EqualTo(u1a.UserAssetURI))");
- Assert.That(candomask,Is.EqualTo(u1a.CanDoMask), "Assert.That(candomask,Is.EqualTo(u1a.CanDoMask))");
- Assert.That(wantdomask,Is.EqualTo(u1a.WantDoMask), "Assert.That(wantdomask,Is.EqualTo(u1a.WantDoMask))");
- Assert.That(abouttext,Is.EqualTo(u1a.AboutText), "Assert.That(abouttext,Is.EqualTo(u1a.AboutText))");
- Assert.That(flabouttext,Is.EqualTo(u1a.FirstLifeAboutText), "Assert.That(flabouttext,Is.EqualTo(u1a.FirstLifeAboutText))");
- Assert.That(image,Is.EqualTo(u1a.Image), "Assert.That(image,Is.EqualTo(u1a.Image))");
- Assert.That(firstimage,Is.EqualTo(u1a.FirstLifeImage), "Assert.That(firstimage,Is.EqualTo(u1a.FirstLifeImage))");
- Assert.That(u1a.CurrentAgent,Is.Null);
- Assert.That(userflags,Is.EqualTo(u1a.UserFlags), "Assert.That(userflags,Is.EqualTo(u1a.UserFlags))");
- Assert.That(godlevel,Is.EqualTo(u1a.GodLevel), "Assert.That(godlevel,Is.EqualTo(u1a.GodLevel))");
- Assert.That(customtype,Is.EqualTo(u1a.CustomType), "Assert.That(customtype,Is.EqualTo(u1a.CustomType))");
- Assert.That(partner,Is.EqualTo(u1a.Partner), "Assert.That(partner,Is.EqualTo(u1a.Partner))");
- }
- [Test]
- public void T016_UserUpdatePersistency()
- {
- UUID id = user5;
- UserProfileData u = db.GetUserByUUID(id);
- string fname = RandomName();
- string lname = RandomName();
- string email = RandomName();
- string passhash = RandomName();
- string passsalt = RandomName();
- UUID homeregionid = UUID.Random();
- UUID webloginkey = UUID.Random();
- uint homeregx = (uint) random.Next();
- uint homeregy = (uint) random.Next();
- Vector3 homeloc = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
- Vector3 homelookat = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
- int created = random.Next();
- int lastlogin = random.Next();
- string userinvuri = RandomName();
- string userasseturi = RandomName();
- uint candomask = (uint) random.Next();
- uint wantdomask = (uint) random.Next();
- string abouttext = RandomName();
- string flabouttext = RandomName();
- UUID image = UUID.Random();
- UUID firstimage = UUID.Random();
- UserAgentData agent = NewAgent(id,UUID.Random());
- int userflags = random.Next();
- int godlevel = random.Next();
- string customtype = RandomName();
- UUID partner = UUID.Random();
-
- //HomeRegionX and HomeRegionY must only use 24 bits
- homeregx = ((homeregx << 8) >> 8);
- homeregy = ((homeregy << 8) >> 8);
-
- u.WebLoginKey = webloginkey;
- u.HomeRegionID = homeregionid;
- u.FirstName = fname;
- u.SurName = lname;
- u.Email = email;
- u.PasswordHash = passhash;
- u.PasswordSalt = passsalt;
- u.HomeRegionX = homeregx;
- u.HomeRegionY = homeregy;
- ulong homereg = u.HomeRegion;
- u.HomeLocation = homeloc;
- u.HomeLookAt = homelookat;
- u.Created = created;
- u.LastLogin = lastlogin;
- u.UserInventoryURI = userinvuri;
- u.UserAssetURI = userasseturi;
- u.CanDoMask = candomask;
- u.WantDoMask = wantdomask;
- u.AboutText = abouttext;
- u.FirstLifeAboutText = flabouttext;
- u.Image = image;
- u.FirstLifeImage = firstimage;
- u.CurrentAgent = agent;
- u.UserFlags = userflags;
- u.GodLevel = godlevel;
- u.CustomType = customtype;
- u.Partner = partner;
-
- db.UpdateUserProfile(u);
- UserProfileData u1a = db.GetUserByUUID(id);
- Assert.That(u1a,Is.Not.Null);
- Assert.That(id,Is.EqualTo(u1a.ID), "Assert.That(id,Is.EqualTo(u1a.ID))");
- Assert.That(homeregionid,Is.EqualTo(u1a.HomeRegionID), "Assert.That(homeregionid,Is.EqualTo(u1a.HomeRegionID))");
- Assert.That(webloginkey,Is.EqualTo(u1a.WebLoginKey), "Assert.That(webloginkey,Is.EqualTo(u1a.WebLoginKey))");
- Assert.That(fname,Is.EqualTo(u1a.FirstName), "Assert.That(fname,Is.EqualTo(u1a.FirstName))");
- Assert.That(lname,Is.EqualTo(u1a.SurName), "Assert.That(lname,Is.EqualTo(u1a.SurName))");
- Assert.That(email,Is.EqualTo(u1a.Email), "Assert.That(email,Is.EqualTo(u1a.Email))");
- Assert.That(passhash,Is.EqualTo(u1a.PasswordHash), "Assert.That(passhash,Is.EqualTo(u1a.PasswordHash))");
- Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt), "Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt))");
- Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))");
- Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX), "Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX))");
- Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY), "Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY))");
- Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))");
- Assert.That(homeloc,Is.EqualTo(u1a.HomeLocation), "Assert.That(homeloc,Is.EqualTo(u1a.HomeLocation))");
- Assert.That(homelookat,Is.EqualTo(u1a.HomeLookAt), "Assert.That(homelookat,Is.EqualTo(u1a.HomeLookAt))");
- Assert.That(created,Is.EqualTo(u1a.Created), "Assert.That(created,Is.EqualTo(u1a.Created))");
- Assert.That(lastlogin,Is.EqualTo(u1a.LastLogin), "Assert.That(lastlogin,Is.EqualTo(u1a.LastLogin))");
- Assert.That(userasseturi,Is.EqualTo(u1a.UserAssetURI), "Assert.That(userasseturi,Is.EqualTo(u1a.UserAssetURI))");
- Assert.That(candomask,Is.EqualTo(u1a.CanDoMask), "Assert.That(candomask,Is.EqualTo(u1a.CanDoMask))");
- Assert.That(wantdomask,Is.EqualTo(u1a.WantDoMask), "Assert.That(wantdomask,Is.EqualTo(u1a.WantDoMask))");
- Assert.That(abouttext,Is.EqualTo(u1a.AboutText), "Assert.That(abouttext,Is.EqualTo(u1a.AboutText))");
- Assert.That(flabouttext,Is.EqualTo(u1a.FirstLifeAboutText), "Assert.That(flabouttext,Is.EqualTo(u1a.FirstLifeAboutText))");
- Assert.That(image,Is.EqualTo(u1a.Image), "Assert.That(image,Is.EqualTo(u1a.Image))");
- Assert.That(firstimage,Is.EqualTo(u1a.FirstLifeImage), "Assert.That(firstimage,Is.EqualTo(u1a.FirstLifeImage))");
- Assert.That(u1a.CurrentAgent,Is.Null);
- Assert.That(userflags,Is.EqualTo(u1a.UserFlags), "Assert.That(userflags,Is.EqualTo(u1a.UserFlags))");
- Assert.That(godlevel,Is.EqualTo(u1a.GodLevel), "Assert.That(godlevel,Is.EqualTo(u1a.GodLevel))");
- Assert.That(customtype,Is.EqualTo(u1a.CustomType), "Assert.That(customtype,Is.EqualTo(u1a.CustomType))");
- Assert.That(partner,Is.EqualTo(u1a.Partner), "Assert.That(partner,Is.EqualTo(u1a.Partner))");
- }
- [Test]
- public void T017_UserUpdateRandomPersistency()
- {
- UUID id = user5;
- UserProfileData u = db.GetUserByUUID(id);
- new PropertyScrambler<UserProfileData>().DontScramble(x=>x.ID).Scramble(u);
-
- db.UpdateUserProfile(u);
- UserProfileData u1a = db.GetUserByUUID(id);
- Assert.That(u1a, Constraints.PropertyCompareConstraint(u)
- .IgnoreProperty(x=>x.HomeRegionX)
- .IgnoreProperty(x=>x.HomeRegionY)
- );
- }
-
- [Test]
- public void T020_CreateAgent()
- {
- UserAgentData a1 = NewAgent(user1,agent1);
- UserAgentData a2 = NewAgent(user2,agent2);
- UserAgentData a3 = NewAgent(user3,agent3);
- db.AddNewUserAgent(a1);
- db.AddNewUserAgent(a2);
- db.AddNewUserAgent(a3);
- UserAgentData a1a = db.GetAgentByUUID(user1);
- UserAgentData a2a = db.GetAgentByUUID(user2);
- UserAgentData a3a = db.GetAgentByUUID(user3);
- Assert.That(agent1,Is.EqualTo(a1a.SessionID), "Assert.That(agent1,Is.EqualTo(a1a.SessionID))");
- Assert.That(user1,Is.EqualTo(a1a.ProfileID), "Assert.That(user1,Is.EqualTo(a1a.ProfileID))");
- Assert.That(agent2,Is.EqualTo(a2a.SessionID), "Assert.That(agent2,Is.EqualTo(a2a.SessionID))");
- Assert.That(user2,Is.EqualTo(a2a.ProfileID), "Assert.That(user2,Is.EqualTo(a2a.ProfileID))");
- Assert.That(agent3,Is.EqualTo(a3a.SessionID), "Assert.That(agent3,Is.EqualTo(a3a.SessionID))");
- Assert.That(user3,Is.EqualTo(a3a.ProfileID), "Assert.That(user3,Is.EqualTo(a3a.ProfileID))");
- }
-
- [Test]
- public void T021_FetchAgentByName()
- {
- String name3 = fname3 + " " + lname3;
- UserAgentData a2 = db.GetAgentByName(fname2,lname2);
- UserAgentData a3 = db.GetAgentByName(name3);
- Assert.That(user2,Is.EqualTo(a2.ProfileID), "Assert.That(user2,Is.EqualTo(a2.ProfileID))");
- Assert.That(user3,Is.EqualTo(a3.ProfileID), "Assert.That(user3,Is.EqualTo(a3.ProfileID))");
- }
-
- [Test]
- public void T022_ExceptionalCases()
- {
- UserAgentData a0 = NewAgent(user4,zero);
- UserAgentData a4 = NewAgent(zero,agent4);
- db.AddNewUserAgent(a0);
- db.AddNewUserAgent(a4);
- Assert.That(db.GetAgentByUUID(user4),Is.Null);
- Assert.That(db.GetAgentByUUID(zero),Is.Null);
- }
-
- [Test]
- public void T023_AgentPersistency()
- {
- UUID user = user4;
- UUID agent = agent4;
- UUID secureagent = UUID.Random();
- string agentip = RandomName();
- uint agentport = (uint)random.Next();
- bool agentonline = (random.NextDouble() > 0.5);
- int logintime = random.Next();
- int logouttime = random.Next();
- UUID regionid = UUID.Random();
- ulong regionhandle = (ulong) random.Next();
- Vector3 currentpos = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
- Vector3 currentlookat = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
- UUID orgregionid = UUID.Random();
-
- UserAgentData a = new UserAgentData();
- a.ProfileID = user;
- a.SessionID = agent;
- a.SecureSessionID = secureagent;
- a.AgentIP = agentip;
- a.AgentPort = agentport;
- a.AgentOnline = agentonline;
- a.LoginTime = logintime;
- a.LogoutTime = logouttime;
- a.Region = regionid;
- a.Handle = regionhandle;
- a.Position = currentpos;
- a.LookAt = currentlookat;
- a.InitialRegion = orgregionid;
- db.AddNewUserAgent(a);
- UserAgentData a1 = db.GetAgentByUUID(user4);
- Assert.That(user,Is.EqualTo(a1.ProfileID), "Assert.That(user,Is.EqualTo(a1.ProfileID))");
- Assert.That(agent,Is.EqualTo(a1.SessionID), "Assert.That(agent,Is.EqualTo(a1.SessionID))");
- Assert.That(secureagent,Is.EqualTo(a1.SecureSessionID), "Assert.That(secureagent,Is.EqualTo(a1.SecureSessionID))");
- Assert.That(agentip,Is.EqualTo(a1.AgentIP), "Assert.That(agentip,Is.EqualTo(a1.AgentIP))");
- Assert.That(agentport,Is.EqualTo(a1.AgentPort), "Assert.That(agentport,Is.EqualTo(a1.AgentPort))");
- Assert.That(agentonline,Is.EqualTo(a1.AgentOnline), "Assert.That(agentonline,Is.EqualTo(a1.AgentOnline))");
- Assert.That(logintime,Is.EqualTo(a1.LoginTime), "Assert.That(logintime,Is.EqualTo(a1.LoginTime))");
- Assert.That(logouttime,Is.EqualTo(a1.LogoutTime), "Assert.That(logouttime,Is.EqualTo(a1.LogoutTime))");
- Assert.That(regionid,Is.EqualTo(a1.Region), "Assert.That(regionid,Is.EqualTo(a1.Region))");
- Assert.That(regionhandle,Is.EqualTo(a1.Handle), "Assert.That(regionhandle,Is.EqualTo(a1.Handle))");
- Assert.That(currentpos,Is.EqualTo(a1.Position), "Assert.That(currentpos,Is.EqualTo(a1.Position))");
- Assert.That(currentlookat,Is.EqualTo(a1.LookAt), "Assert.That(currentlookat,Is.EqualTo(a1.LookAt))");
- }
- [Test]
- public void T030_CreateFriendList()
- {
- Dictionary<UUID, uint> perms = new Dictionary<UUID,uint>();
- Dictionary<UUID, int> friends = new Dictionary<UUID,int>();
- uint temp;
- int tempu1, tempu2;
- db.AddNewUserFriend(user1,user2, 1);
- db.AddNewUserFriend(user1,user3, 2);
- db.AddNewUserFriend(user1,user2, 4);
- List<FriendListItem> fl1 = db.GetUserFriendList(user1);
- Assert.That(fl1.Count,Is.EqualTo(2), "Assert.That(fl1.Count,Is.EqualTo(2))");
- perms.Add(user2,1);
- perms.Add(user3,2);
- for (int i = 0; i < fl1.Count; i++)
- {
- Assert.That(user1,Is.EqualTo(fl1[i].FriendListOwner), "Assert.That(user1,Is.EqualTo(fl1[i].FriendListOwner))");
- friends.Add(fl1[i].Friend,1);
- temp = perms[fl1[i].Friend];
- Assert.That(temp,Is.EqualTo(fl1[i].FriendPerms), "Assert.That(temp,Is.EqualTo(fl1[i].FriendPerms))");
- }
- tempu1 = friends[user2];
- tempu2 = friends[user3];
- Assert.That(1,Is.EqualTo(tempu1) & Is.EqualTo(tempu2), "Assert.That(1,Is.EqualTo(tempu1) & Is.EqualTo(tempu2))");
- }
-
- [Test]
- public void T031_RemoveUserFriend()
- // user1 has 2 friends, user2 and user3.
- {
- List<FriendListItem> fl1 = db.GetUserFriendList(user1);
- List<FriendListItem> fl2 = db.GetUserFriendList(user2);
- Assert.That(fl1.Count,Is.EqualTo(2), "Assert.That(fl1.Count,Is.EqualTo(2))");
- Assert.That(fl1[0].Friend,Is.EqualTo(user2) | Is.EqualTo(user3), "Assert.That(fl1[0].Friend,Is.EqualTo(user2) | Is.EqualTo(user3))");
- Assert.That(fl2[0].Friend,Is.EqualTo(user1), "Assert.That(fl2[0].Friend,Is.EqualTo(user1))");
- db.RemoveUserFriend(user2, user1);
-
- fl1 = db.GetUserFriendList(user1);
- fl2 = db.GetUserFriendList(user2);
- Assert.That(fl1.Count,Is.EqualTo(1), "Assert.That(fl1.Count,Is.EqualTo(1))");
- Assert.That(fl1[0].Friend, Is.EqualTo(user3), "Assert.That(fl1[0].Friend, Is.EqualTo(user3))");
- Assert.That(fl2, Is.Empty);
- }
-
- [Test]
- public void T032_UpdateFriendPerms()
- // user1 has 1 friend, user3, who has permission 2 in T030.
- {
- List<FriendListItem> fl1 = db.GetUserFriendList(user1);
- Assert.That(fl1[0].FriendPerms,Is.EqualTo(2), "Assert.That(fl1[0].FriendPerms,Is.EqualTo(2))");
- db.UpdateUserFriendPerms(user1, user3, 4);
-
- fl1 = db.GetUserFriendList(user1);
- Assert.That(fl1[0].FriendPerms,Is.EqualTo(4), "Assert.That(fl1[0].FriendPerms,Is.EqualTo(4))");
- }
-
- [Test]
- public void T040_UserAppearance()
- {
- AvatarAppearance appear = new AvatarAppearance();
- appear.Owner = user1;
- db.UpdateUserAppearance(user1, appear);
- AvatarAppearance user1app = db.GetUserAppearance(user1);
- Assert.That(user1,Is.EqualTo(user1app.Owner), "Assert.That(user1,Is.EqualTo(user1app.Owner))");
- }
-
- [Test]
- public void T041_UserAppearancePersistency()
- {
- AvatarAppearance appear = new AvatarAppearance();
- UUID owner = UUID.Random();
- int serial = random.Next();
- byte[] visualp = new byte[218];
- random.NextBytes(visualp);
- UUID bodyitem = UUID.Random();
- UUID bodyasset = UUID.Random();
- UUID skinitem = UUID.Random();
- UUID skinasset = UUID.Random();
- UUID hairitem = UUID.Random();
- UUID hairasset = UUID.Random();
- UUID eyesitem = UUID.Random();
- UUID eyesasset = UUID.Random();
- UUID shirtitem = UUID.Random();
- UUID shirtasset = UUID.Random();
- UUID pantsitem = UUID.Random();
- UUID pantsasset = UUID.Random();
- UUID shoesitem = UUID.Random();
- UUID shoesasset = UUID.Random();
- UUID socksitem = UUID.Random();
- UUID socksasset = UUID.Random();
- UUID jacketitem = UUID.Random();
- UUID jacketasset = UUID.Random();
- UUID glovesitem = UUID.Random();
- UUID glovesasset = UUID.Random();
- UUID ushirtitem = UUID.Random();
- UUID ushirtasset = UUID.Random();
- UUID upantsitem = UUID.Random();
- UUID upantsasset = UUID.Random();
- UUID skirtitem = UUID.Random();
- UUID skirtasset = UUID.Random();
- Primitive.TextureEntry texture = AvatarAppearance.GetDefaultTexture();
- float avatarheight = (float) (Math.Round(random.NextDouble(),5));
-
- appear.Owner = owner;
- appear.Serial = serial;
- appear.VisualParams = visualp;
- appear.BodyItem = bodyitem;
- appear.BodyAsset = bodyasset;
- appear.SkinItem = skinitem;
- appear.SkinAsset = skinasset;
- appear.HairItem = hairitem;
- appear.HairAsset = hairasset;
- appear.EyesItem = eyesitem;
- appear.EyesAsset = eyesasset;
- appear.ShirtItem = shirtitem;
- appear.ShirtAsset = shirtasset;
- appear.PantsItem = pantsitem;
- appear.PantsAsset = pantsasset;
- appear.ShoesItem = shoesitem;
- appear.ShoesAsset = shoesasset;
- appear.SocksItem = socksitem;
- appear.SocksAsset = socksasset;
- appear.JacketItem = jacketitem;
- appear.JacketAsset = jacketasset;
- appear.GlovesItem = glovesitem;
- appear.GlovesAsset = glovesasset;
- appear.UnderShirtItem = ushirtitem;
- appear.UnderShirtAsset = ushirtasset;
- appear.UnderPantsItem = upantsitem;
- appear.UnderPantsAsset = upantsasset;
- appear.SkirtItem = skirtitem;
- appear.SkirtAsset = skirtasset;
- appear.Texture = texture;
- appear.AvatarHeight = avatarheight;
-
- db.UpdateUserAppearance(owner, appear);
- AvatarAppearance app = db.GetUserAppearance(owner);
- Assert.That(owner,Is.EqualTo(app.Owner), "Assert.That(owner,Is.EqualTo(app.Owner))");
- Assert.That(serial,Is.EqualTo(app.Serial), "Assert.That(serial,Is.EqualTo(app.Serial))");
- Assert.That(visualp,Is.EqualTo(app.VisualParams), "Assert.That(visualp,Is.EqualTo(app.VisualParams))");
- Assert.That(bodyitem,Is.EqualTo(app.BodyItem), "Assert.That(bodyitem,Is.EqualTo(app.BodyItem))");
- Assert.That(bodyasset,Is.EqualTo(app.BodyAsset), "Assert.That(bodyasset,Is.EqualTo(app.BodyAsset))");
- Assert.That(skinitem,Is.EqualTo(app.SkinItem), "Assert.That(skinitem,Is.EqualTo(app.SkinItem))");
- Assert.That(skinasset,Is.EqualTo(app.SkinAsset), "Assert.That(skinasset,Is.EqualTo(app.SkinAsset))");
- Assert.That(hairitem,Is.EqualTo(app.HairItem), "Assert.That(hairitem,Is.EqualTo(app.HairItem))");
- Assert.That(hairasset,Is.EqualTo(app.HairAsset), "Assert.That(hairasset,Is.EqualTo(app.HairAsset))");
- Assert.That(eyesitem,Is.EqualTo(app.EyesItem), "Assert.That(eyesitem,Is.EqualTo(app.EyesItem))");
- Assert.That(eyesasset,Is.EqualTo(app.EyesAsset), "Assert.That(eyesasset,Is.EqualTo(app.EyesAsset))");
- Assert.That(shirtitem,Is.EqualTo(app.ShirtItem), "Assert.That(shirtitem,Is.EqualTo(app.ShirtItem))");
- Assert.That(shirtasset,Is.EqualTo(app.ShirtAsset), "Assert.That(shirtasset,Is.EqualTo(app.ShirtAsset))");
- Assert.That(pantsitem,Is.EqualTo(app.PantsItem), "Assert.That(pantsitem,Is.EqualTo(app.PantsItem))");
- Assert.That(pantsasset,Is.EqualTo(app.PantsAsset), "Assert.That(pantsasset,Is.EqualTo(app.PantsAsset))");
- Assert.That(shoesitem,Is.EqualTo(app.ShoesItem), "Assert.That(shoesitem,Is.EqualTo(app.ShoesItem))");
- Assert.That(shoesasset,Is.EqualTo(app.ShoesAsset), "Assert.That(shoesasset,Is.EqualTo(app.ShoesAsset))");
- Assert.That(socksitem,Is.EqualTo(app.SocksItem), "Assert.That(socksitem,Is.EqualTo(app.SocksItem))");
- Assert.That(socksasset,Is.EqualTo(app.SocksAsset), "Assert.That(socksasset,Is.EqualTo(app.SocksAsset))");
- Assert.That(jacketitem,Is.EqualTo(app.JacketItem), "Assert.That(jacketitem,Is.EqualTo(app.JacketItem))");
- Assert.That(jacketasset,Is.EqualTo(app.JacketAsset), "Assert.That(jacketasset,Is.EqualTo(app.JacketAsset))");
- Assert.That(glovesitem,Is.EqualTo(app.GlovesItem), "Assert.That(glovesitem,Is.EqualTo(app.GlovesItem))");
- Assert.That(glovesasset,Is.EqualTo(app.GlovesAsset), "Assert.That(glovesasset,Is.EqualTo(app.GlovesAsset))");
- Assert.That(ushirtitem,Is.EqualTo(app.UnderShirtItem), "Assert.That(ushirtitem,Is.EqualTo(app.UnderShirtItem))");
- Assert.That(ushirtasset,Is.EqualTo(app.UnderShirtAsset), "Assert.That(ushirtasset,Is.EqualTo(app.UnderShirtAsset))");
- Assert.That(upantsitem,Is.EqualTo(app.UnderPantsItem), "Assert.That(upantsitem,Is.EqualTo(app.UnderPantsItem))");
- Assert.That(upantsasset,Is.EqualTo(app.UnderPantsAsset), "Assert.That(upantsasset,Is.EqualTo(app.UnderPantsAsset))");
- Assert.That(skirtitem,Is.EqualTo(app.SkirtItem), "Assert.That(skirtitem,Is.EqualTo(app.SkirtItem))");
- Assert.That(skirtasset,Is.EqualTo(app.SkirtAsset), "Assert.That(skirtasset,Is.EqualTo(app.SkirtAsset))");
- Assert.That(texture.ToString(),Is.EqualTo(app.Texture.ToString()), "Assert.That(texture.ToString(),Is.EqualTo(app.Texture.ToString()))");
- Assert.That(avatarheight,Is.EqualTo(app.AvatarHeight), "Assert.That(avatarheight,Is.EqualTo(app.AvatarHeight))");
- }
- [Test]
- public void T999_StillNull()
- {
- Assert.That(db.GetUserByUUID(zero), Is.Null);
- Assert.That(db.GetAgentByUUID(zero), Is.Null);
- }
- public UserProfileData NewUser(UUID id,string fname,string lname)
- {
- UserProfileData u = new UserProfileData();
- u.ID = id;
- u.FirstName = fname;
- u.SurName = lname;
- u.PasswordHash = "NOTAHASH";
- u.PasswordSalt = "NOTSALT";
- // MUST specify at least these 5 parameters or an exception is raised
- return u;
- }
-
- public UserAgentData NewAgent(UUID user_profile, UUID agent)
- {
- UserAgentData a = new UserAgentData();
- a.ProfileID = user_profile;
- a.SessionID = agent;
- a.SecureSessionID = UUID.Random();
- a.AgentIP = RandomName();
- return a;
- }
-
- public static string RandomName()
- {
- StringBuilder name = new StringBuilder();
- int size = random.Next(5,12);
- char ch ;
- for (int i=0; i<size; i++)
- {
- ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ;
- name.Append(ch);
- }
- return name.ToString();
- }
- }
- }
|