public void TestPermanentBanCalculations() { Initialize(); DataAccess.BanClass banClass = new BanClass() { Id = (int)BanClassType.Major, Name = "Major" }; DataAccess.BanType banType = new BanType() { BanClass = banClass, BanClassId = banClass.Id, BaseTimeInMinutes = 30, Description = "Permanent ban after one infraction.", IsIncremental = true, InfractionsBeforePermanentBan = 1, SrNumber = 13 }; DataAccess.Login testUser = CreateUser(Guid.NewGuid().ToString().Substring(0, 20), "Test", "NA", 10); DataAccess.Identity identity = testUser.Identity; // Test 1x Ban - 30 minutes TimeSpan?duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(30, duration.Value.TotalMinutes); // Test 2x Ban - Permanent. testUser.Bans.Add(CreateBan(testUser, banType)); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(TimeSpan.MaxValue, duration.Value); // Test permanent ban on first infraction banType = new BanType() { BanClass = banClass, BanClassId = banClass.Id, BaseTimeInMinutes = 30, Description = "Permanent ban on first infraction.", IsIncremental = true, InfractionsBeforePermanentBan = 0, SrNumber = 9 }; testUser = CreateUser(Guid.NewGuid().ToString().Substring(0, 20), "Test", "NA", 10); identity = testUser.Identity; // Test 1x Ban - Permanent. testUser.Bans.Add(CreateBan(testUser, banType)); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(TimeSpan.MaxValue, duration.Value); }
public override bool DeleteUser(string username, bool deleteAllRelatedData) { using (var db = new DataAccess.CSSDataContext()) { DataAccess.Login login = DataAccess.Login.FindLoginByUsernameOrCallsign(db, username); DataAccess.Identity identity = db.Identities.FirstOrDefault(p => p.Id == login.IdentityId); if (identity != null) { db.Identities.DeleteOnSubmit(identity); db.SubmitChanges(); return(true); } } return(false); }
public override System.Web.Security.MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out System.Web.Security.MembershipCreateStatus status) { string passwordHash = Allegiance.CommunitySecuritySystem.Common.Utility.Encryption.SHA256Hash(password); DataAccess.Identity identity = null; using (var db = new DataAccess.CSSDataContext()) { if (DataAccess.Login.FindLoginByUsername(db, username) != null) { status = System.Web.Security.MembershipCreateStatus.DuplicateUserName; return(null); } if (DataAccess.Alias.ListAliases(db, username).Count > 0) { status = System.Web.Security.MembershipCreateStatus.UserRejected; return(null); } if (DataAccess.Identity.TryCreateIdentity(db, username, passwordHash, email, out identity) == true) { db.SubmitChanges(); } if (identity != null) { DataAccess.Login createdLogin = DataAccess.Login.FindLoginByUsername(db, username); if (createdLogin != null) { status = System.Web.Security.MembershipCreateStatus.Success; return(MembershipUserUtility.CreateMembershipUserFromLogin(createdLogin)); } } } status = System.Web.Security.MembershipCreateStatus.ProviderError; return(null); }
public override System.Web.Security.MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out System.Web.Security.MembershipCreateStatus status) { DataAccess.Identity identity = null; var connect = new Connect(); using (var db = new DataAccess.CSSDataContext()) { if (DataAccess.Login.FindLoginByUsernameOrCallsign(db, username) != null) { status = System.Web.Security.MembershipCreateStatus.DuplicateUserName; return(null); } if (DataAccess.Alias.ListAliases(db, username).Count > 0) { status = System.Web.Security.MembershipCreateStatus.UserRejected; return(null); } if (Settings.Default.UseIPConverge == true) { if (connect.CheckEmail(email) == false) { status = MembershipCreateStatus.DuplicateEmail; return(null); } if (connect.CheckUsername(username) == false) { status = MembershipCreateStatus.DuplicateUserName; return(null); } } status = DataAccess.Identity.TryCreateIdentity(db, username, password, email, out identity); if (status == MembershipCreateStatus.Success) { if (Settings.Default.UseIPConverge == true) { string ipAddress = "127.0.0.1"; if (HttpContext.Current != null) { ipAddress = HttpContext.Current.Request.UserHostAddress; } // TODO: If IP Converge is to be used ever, then working around IPC's MD5 password hashs will need to be done. //if (connect.AddMember(email, username, passwordHash, ipAddress) == false) //{ // status = MembershipCreateStatus.ProviderError; // return null; //} } } db.SubmitChanges(); if (identity != null) { DataAccess.Login createdLogin = DataAccess.Login.FindLoginByUsernameOrCallsign(db, username); if (createdLogin != null) { status = System.Web.Security.MembershipCreateStatus.Success; var memebershipUser = MembershipUserUtility.CreateMembershipUserFromLogin(createdLogin); if (memebershipUser != null) { SendWelcomeEmail(memebershipUser); } return(memebershipUser); } } } status = System.Web.Security.MembershipCreateStatus.ProviderError; return(null); }
public void TestMajorBanDurationCalculations() { Initialize(); DataAccess.BanClass banClass = new BanClass() { Id = (int)BanClassType.Major, Name = "Major" }; DataAccess.BanType banType = new BanType() { BanClass = banClass, BanClassId = banClass.Id, BaseTimeInMinutes = 30, Description = "Major 30 minute ban.", IsIncremental = true, SrNumber = 4 }; DataAccess.Login testUser = CreateUser(Guid.NewGuid().ToString().Substring(0, 20), "Test", "NA", 10); DataAccess.Identity identity = testUser.Identity; // Test 1x Ban - 30 minutes TimeSpan?duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(30, duration.Value.TotalMinutes); // Test 2x Ban - 120 minutes testUser.Bans.Add(CreateBan(testUser, banType)); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(120, duration.Value.TotalMinutes); // Test 3x Ban - 600 minutes testUser.Bans.Add(CreateBan(testUser, banType)); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(600, duration.Value.TotalMinutes); // Test 4x Minor Ban - 30 days testUser.Bans.Add(CreateBan(testUser, banType)); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(1440 * 30, duration.Value.TotalMinutes); /* TODO: re-add when proper logic is in place. * // Test 5x Ban - 60 days * identity.Bans.Add(CreateBan(testUser, banType)); * duration = Ban.CalculateDuration(identity, banType); * Assert.AreEqual(1440 * 60, duration.Value.TotalMinutes); * * // Test 6x Ban - Permanent * identity.Bans.Add(CreateBan(testUser, banType)); * duration = Ban.CalculateDuration(identity, banType); * Assert.AreEqual(1440 * 10, duration.Value.TotalMinutes); */ // test rolling window for major bans. testUser.Bans.Clear(); for (int i = 0; i < 3; i++) { testUser.Bans.Add(CreateBan(testUser, banType)); } duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(1440 * 30, duration.Value.TotalMinutes); // Test rolling window -- 4 recent bans testUser.Bans[0].DateCreated = DateTime.Now.AddDays(-180); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(600, duration.Value.TotalMinutes); // Test rolling window -- 3 recent bans testUser.Bans[1].DateCreated = DateTime.Now.AddDays(-180); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(120, duration.Value.TotalMinutes); // Test rolling window -- 2 recent bans testUser.Bans[2].DateCreated = DateTime.Now.AddDays(-180); duration = Ban.CalculateDuration(identity, banType); Assert.AreEqual(30, duration.Value.TotalMinutes); }
public void TestMinorBanDurationCalculations() { Initialize(); DataAccess.BanClass minorBanClass = new BanClass() { Id = (int)BanClassType.Minor, Name = "Minor" }; DataAccess.BanType minorBanType = new BanType() { BanClass = minorBanClass, BanClassId = minorBanClass.Id, BaseTimeInMinutes = 30, Description = "Minor 30 minute ban.", IsIncremental = true, RocNumber = 1 }; DataAccess.Login testUser = CreateUser(Guid.NewGuid().ToString().Substring(0, 20), "Test", "NA", 10); DataAccess.Identity identity = testUser.Identity; // Test 1x Minor Ban - 30 minutes TimeSpan?duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(30, duration.Value.TotalMinutes); // Test 2x Minor Ban - 15 hours testUser.Bans.Add(CreateBan(testUser, minorBanType)); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(900, duration.Value.TotalMinutes); // Test 3x Minor Ban - 5 days testUser.Bans.Add(CreateBan(testUser, minorBanType)); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(7200, duration.Value.TotalMinutes); // Test 4x Minor Ban - 5 days testUser.Bans.Add(CreateBan(testUser, minorBanType)); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(7200, duration.Value.TotalMinutes); // Test 5x Minor Ban - 5 days testUser.Bans.Add(CreateBan(testUser, minorBanType)); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(7200, duration.Value.TotalMinutes); // Test 6x Minor Ban - 10 days testUser.Bans.Add(CreateBan(testUser, minorBanType)); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(1440 * 10, duration.Value.TotalMinutes); // TODO: re-add when proper logic is in place. //// Test 7x Minor Ban - 30 days //identity.Bans.Add(CreateBan(testUser, minorBanType)); //duration = Ban.CalculateDuration(identity, minorBanType); //Assert.AreEqual(1440 * 30, duration.Value.TotalMinutes); //// Test 8x Minor Ban - 90 days //identity.Bans.Add(CreateBan(testUser, minorBanType)); //duration = Ban.CalculateDuration(identity, minorBanType); //Assert.AreEqual(1440 * 90, duration.Value.TotalMinutes); //// Test 9x Minor Ban - 90 days //identity.Bans.Add(CreateBan(testUser, minorBanType)); //duration = Ban.CalculateDuration(identity, minorBanType); //Assert.AreEqual(1440 * 90, duration.Value.TotalMinutes); // test rolling window for minor bans. testUser.Bans.Clear(); for (int i = 0; i < 5; i++) { testUser.Bans.Add(CreateBan(testUser, minorBanType)); } Assert.AreEqual(5, identity.Bans.Count()); // Test rolling window -- 4 recent bans == 5 days testUser.Bans[0].DateCreated = DateTime.Now.AddDays(-91); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(7200, duration.Value.TotalMinutes); // Test rolling window -- 3 recent bans == 5 days testUser.Bans[1].DateCreated = DateTime.Now.AddDays(-91); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(7200, duration.Value.TotalMinutes); // Test rolling window -- 2 recent bans == 5 days testUser.Bans[2].DateCreated = DateTime.Now.AddDays(-91); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(7200, duration.Value.TotalMinutes); // Test rolling window -- 1 recent ban == 15 hours testUser.Bans[3].DateCreated = DateTime.Now.AddDays(-91); duration = Ban.CalculateDuration(identity, minorBanType); Assert.AreEqual(900, duration.Value.TotalMinutes); // Test rolling window -- 0 recent bans == 30 minutes testUser.Bans[4].DateCreated = DateTime.Now.AddDays(-91); duration = Ban.CalculateDuration(testUser.Identity, minorBanType); Assert.AreEqual(30, duration.Value.TotalMinutes); }