Files
opensim/OpenSim/Data/Tests/BasicUserTest.cs
Dr Scofield 9b66108081 This changeset is the step 1 of 2 in refactoring
OpenSim.Region.Environment into a "framework" part and a modules only
part. This first changeset refactors OpenSim.Region.Environment.Scenes,
OpenSim.Region.Environment.Interfaces, and OpenSim.Region.Interfaces
into OpenSim.Region.Framework.{Interfaces,Scenes} leaving only region
modules in OpenSim.Region.Environment.

The next step will be to move region modules up from
OpenSim.Region.Environment.Modules to OpenSim.Region.CoreModules and
then sort out which modules are really core modules and which should
move out to forge.

I've been very careful to NOT BREAK anything. i hope i've
succeeded. as this is the work of a whole week i hope i managed to
keep track with the applied patches of the last week --- could any of
you that did check in stuff have a look at whether it survived? thx!
2009-02-06 16:55:34 +00:00

690 lines
29 KiB
C#

/*
* 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 OpenSim 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 NUnit.Framework;
using NUnit.Framework.SyntaxHelpers;
using OpenSim.Data;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenMetaverse;
namespace OpenSim.Data.Tests
{
public class BasicUserTest
{
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()
{
try
{
log4net.Config.XmlConfigurator.Configure();
}
catch (Exception)
{
// I don't care, just leave log4net off
}
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 T999_StillNull()
{
Assert.That(db.GetUserByUUID(zero), Is.Null);
Assert.That(db.GetAgentByUUID(zero), 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(user2,Is.EqualTo(u2a.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(user2,Is.EqualTo(u2.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));
u1.FirstName = "Ugly";
db.UpdateUserProfile(u1);
Assert.That("Ugly",Is.EqualTo(u1.FirstName));
}
[Test]
public void T013_StoreUserWebKey()
{
UserProfileData u1 = db.GetUserByUUID(user1);
Assert.That(u1.WebLoginKey,Is.EqualTo(zero));
db.StoreWebLoginKey(user1, webkey);
u1 = db.GetUserByUUID(user1);
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);
db.AddNewUserProfile(u4);
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(homeregion,Is.EqualTo(u1a.HomeRegionID));
Assert.That(webloginkey,Is.EqualTo(u1a.WebLoginKey));
Assert.That(fname,Is.EqualTo(u1a.FirstName));
Assert.That(lname,Is.EqualTo(u1a.SurName));
Assert.That(email,Is.EqualTo(u1a.Email));
Assert.That(passhash,Is.EqualTo(u1a.PasswordHash));
Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt));
Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX));
Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY));
Assert.That(homereg,Is.EqualTo(u1a.HomeRegion));
Assert.That(homeloc,Is.EqualTo(u1a.HomeLocation));
Assert.That(homelookat,Is.EqualTo(u1a.HomeLookAt));
Assert.That(created,Is.EqualTo(u1a.Created));
Assert.That(lastlogin,Is.EqualTo(u1a.LastLogin));
// RootInventoryFolderID is not tested because it is saved in SQLite,
// but not in MySQL
Assert.That(userinvuri,Is.EqualTo(u1a.UserInventoryURI));
Assert.That(userasseturi,Is.EqualTo(u1a.UserAssetURI));
Assert.That(candomask,Is.EqualTo(u1a.CanDoMask));
Assert.That(wantdomask,Is.EqualTo(u1a.WantDoMask));
Assert.That(abouttext,Is.EqualTo(u1a.AboutText));
Assert.That(flabouttext,Is.EqualTo(u1a.FirstLifeAboutText));
Assert.That(image,Is.EqualTo(u1a.Image));
Assert.That(firstimage,Is.EqualTo(u1a.FirstLifeImage));
Assert.That(u1a.CurrentAgent,Is.Null);
Assert.That(userflags,Is.EqualTo(u1a.UserFlags));
Assert.That(godlevel,Is.EqualTo(u1a.GodLevel));
Assert.That(customtype,Is.EqualTo(u1a.CustomType));
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(homeregionid,Is.EqualTo(u1a.HomeRegionID));
Assert.That(webloginkey,Is.EqualTo(u1a.WebLoginKey));
Assert.That(fname,Is.EqualTo(u1a.FirstName));
Assert.That(lname,Is.EqualTo(u1a.SurName));
Assert.That(email,Is.EqualTo(u1a.Email));
Assert.That(passhash,Is.EqualTo(u1a.PasswordHash));
Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt));
Assert.That(homereg,Is.EqualTo(u1a.HomeRegion));
Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX));
Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY));
Assert.That(homereg,Is.EqualTo(u1a.HomeRegion));
Assert.That(homeloc,Is.EqualTo(u1a.HomeLocation));
Assert.That(homelookat,Is.EqualTo(u1a.HomeLookAt));
Assert.That(created,Is.EqualTo(u1a.Created));
Assert.That(lastlogin,Is.EqualTo(u1a.LastLogin));
// RootInventoryFolderID is not tested because it is saved in SQLite,
// but not in MySQL
Assert.That(userasseturi,Is.EqualTo(u1a.UserAssetURI));
Assert.That(candomask,Is.EqualTo(u1a.CanDoMask));
Assert.That(wantdomask,Is.EqualTo(u1a.WantDoMask));
Assert.That(abouttext,Is.EqualTo(u1a.AboutText));
Assert.That(flabouttext,Is.EqualTo(u1a.FirstLifeAboutText));
Assert.That(image,Is.EqualTo(u1a.Image));
Assert.That(firstimage,Is.EqualTo(u1a.FirstLifeImage));
Assert.That(u1a.CurrentAgent,Is.Null);
Assert.That(userflags,Is.EqualTo(u1a.UserFlags));
Assert.That(godlevel,Is.EqualTo(u1a.GodLevel));
Assert.That(customtype,Is.EqualTo(u1a.CustomType));
Assert.That(partner,Is.EqualTo(u1a.Partner));
}
[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(user1,Is.EqualTo(a1a.ProfileID));
Assert.That(agent2,Is.EqualTo(a2a.SessionID));
Assert.That(user2,Is.EqualTo(a2a.ProfileID));
Assert.That(agent3,Is.EqualTo(a3a.SessionID));
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(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(agent,Is.EqualTo(a1.SessionID));
Assert.That(secureagent,Is.EqualTo(a1.SecureSessionID));
Assert.That(agentip,Is.EqualTo(a1.AgentIP));
Assert.That(agentport,Is.EqualTo(a1.AgentPort));
Assert.That(agentonline,Is.EqualTo(a1.AgentOnline));
Assert.That(logintime,Is.EqualTo(a1.LoginTime));
Assert.That(logouttime,Is.EqualTo(a1.LogoutTime));
Assert.That(regionid,Is.EqualTo(a1.Region));
Assert.That(regionhandle,Is.EqualTo(a1.Handle));
Assert.That(currentpos,Is.EqualTo(a1.Position));
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));
perms.Add(user2,1);
perms.Add(user3,2);
for (int i = 0; i < fl1.Count; i++)
{
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));
}
tempu1 = friends[user2];
tempu2 = friends[user3];
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[0].Friend,Is.EqualTo(user2) | Is.EqualTo(user3));
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[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));
db.UpdateUserFriendPerms(user1, user3, 4);
fl1 = db.GetUserFriendList(user1);
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));
}
[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(serial,Is.EqualTo(app.Serial));
Assert.That(visualp,Is.EqualTo(app.VisualParams));
Assert.That(bodyitem,Is.EqualTo(app.BodyItem));
Assert.That(bodyasset,Is.EqualTo(app.BodyAsset));
Assert.That(skinitem,Is.EqualTo(app.SkinItem));
Assert.That(skinasset,Is.EqualTo(app.SkinAsset));
Assert.That(hairitem,Is.EqualTo(app.HairItem));
Assert.That(hairasset,Is.EqualTo(app.HairAsset));
Assert.That(eyesitem,Is.EqualTo(app.EyesItem));
Assert.That(eyesasset,Is.EqualTo(app.EyesAsset));
Assert.That(shirtitem,Is.EqualTo(app.ShirtItem));
Assert.That(shirtasset,Is.EqualTo(app.ShirtAsset));
Assert.That(pantsitem,Is.EqualTo(app.PantsItem));
Assert.That(pantsasset,Is.EqualTo(app.PantsAsset));
Assert.That(shoesitem,Is.EqualTo(app.ShoesItem));
Assert.That(shoesasset,Is.EqualTo(app.ShoesAsset));
Assert.That(socksitem,Is.EqualTo(app.SocksItem));
Assert.That(socksasset,Is.EqualTo(app.SocksAsset));
Assert.That(jacketitem,Is.EqualTo(app.JacketItem));
Assert.That(jacketasset,Is.EqualTo(app.JacketAsset));
Assert.That(glovesitem,Is.EqualTo(app.GlovesItem));
Assert.That(glovesasset,Is.EqualTo(app.GlovesAsset));
Assert.That(ushirtitem,Is.EqualTo(app.UnderShirtItem));
Assert.That(ushirtasset,Is.EqualTo(app.UnderShirtAsset));
Assert.That(upantsitem,Is.EqualTo(app.UnderPantsItem));
Assert.That(upantsasset,Is.EqualTo(app.UnderPantsAsset));
Assert.That(skirtitem,Is.EqualTo(app.SkirtItem));
Assert.That(skirtasset,Is.EqualTo(app.SkirtAsset));
Assert.That(texture.ToString(),Is.EqualTo(app.Texture.ToString()));
Assert.That(avatarheight,Is.EqualTo(app.AvatarHeight));
}
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();
}
}
}