public void ApplyModerationStatus_ValidDB_NoErrors() { var bannedEmailsTests = new BannedEmailsTests(); bannedEmailsTests.InitializebannedEmails_EmptyCacheValidRecordSet_ReturnsValidObject(); var notes = "somenotes"; var duration = 5; var reader = Mocks.DynamicMock<IDnaDataReader>(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); reader.Stub(x => x.Read()).Return(true).Repeat.Once(); creator.Stub(x => x.CreateDnaDataReader("updatetrackedmemberformodclass")).Return(reader); Mocks.ReplayAll(); ModerationClass modClass = new ModerationClass() { }; var userRep = new UserReputation { UserId = 1, ModClass = new ModerationClass() { ClassId = 1 }, ReputationDeterminedStatus = BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus.Premoderated, }; userRep.ApplyModerationStatus(creator, false, duration, notes, 1); reader.AssertWasCalled(x => x.AddParameter("userid", userRep.UserId)); reader.AssertWasCalled(x => x.AddParameter("viewinguser", 1)); reader.AssertWasCalled(x => x.AddParameter("reason", notes)); reader.AssertWasCalled(x => x.AddParameter("prefstatusduration", duration)); reader.AssertWasCalled(x => x.AddParameter("modclassid", userRep.ModClass.ClassId)); reader.AssertWasCalled(x => x.AddParameter("prefstatus", (int)userRep.ReputationDeterminedStatus)); }
private bool ModifyUserModerationStatus(ModerationClass modClass) { if (_updateStatus) { bool hideAllSites = InputContext.DoesParamExist("hideAllSites", "hideAllSites"); var newPrefStatus = (BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus)Enum.Parse(typeof(BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus), InputContext.GetParamStringOrEmpty("userStatusDescription", "new status")); int newPrefStatusDuration = InputContext.GetParamIntOrZero("duration", "new status"); bool hideAllContent = InputContext.DoesParamExist("hideAllPosts", "hideAllPosts"); string reason = InputContext.GetParamStringOrEmpty("reasonChange", ""); if (string.IsNullOrEmpty(reason)) { AddErrorXml("EmptyReason", "Please provide a valid reason for this change for auditing purposes.", null); return false; } var extraNotes = InputContext.GetParamStringOrEmpty("additionalNotes", ""); if (!String.IsNullOrEmpty(extraNotes)) { reason += " - " + extraNotes; } if (hideAllContent && newPrefStatus != BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus.Deactivated) { AddErrorXml("InvalidStatus", "To hide all content you must deactivate the users account.", null); return false; } if (newPrefStatusDuration != 0 && (newPrefStatus != BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus.Postmoderated && newPrefStatus != BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus.Premoderated)) { AddErrorXml("UnableToSetDuration", "You cannot set a status duration when the status is not premoderation or postmoderation.", null); return false; } if (newPrefStatus == BBC.Dna.Moderation.Utils.ModerationStatus.UserStatus.Deactivated)//deactivate account { if (!InputContext.ViewingUser.IsSuperUser) { AddErrorXml("InsufficientPermissions", "You do not have sufficient permissions to deactivate users.", null); return false; } BBC.Dna.Moderation.Utils.ModerationStatus.DeactivateAccount(AppContext.ReaderCreator, new List<int>{_userId}, hideAllContent, reason, InputContext.ViewingUser.UserID); } else { UserReputation userRep = new UserReputation() { ModClass = modClass, UserId = _userId, ReputationDeterminedStatus = newPrefStatus }; userRep.ApplyModerationStatus(AppContext.ReaderCreator, hideAllSites, newPrefStatusDuration, reason, InputContext.ViewingUser.UserID); } } return true; }
public void GetUserReputation_InValidDB_ReturnsValidObj() { var reader = Mocks.DynamicMock<IDnaDataReader>(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); reader.Stub(x => x.Read()).Return(false).Repeat.Once(); creator.Stub(x => x.CreateDnaDataReader("getuserreputation")).Return(reader); Mocks.ReplayAll(); ModerationClass modClass = new ModerationClass() { }; var userRep = UserReputation.GetUserReputation(creator, modClass, 0); Assert.AreEqual(0, userRep.ReputationScore); }
public void GetUserReputation_ValidDB_ReturnsValidObj() { var reader = Mocks.DynamicMock<IDnaDataReader>(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); reader.Stub(x => x.Read()).Return(true).Repeat.Once(); reader.Stub(x => x.GetInt32NullAsZero("currentstatus")).Return((int)ModerationStatus.UserStatus.Premoderated); reader.Stub(x => x.GetInt32NullAsZero("ReputationDeterminedStatus")).Return((int)ModerationStatus.UserStatus.Postmoderated); reader.Stub(x => x.GetInt16("accumulativescore")).Return(1); creator.Stub(x => x.CreateDnaDataReader("getuserreputation")).Return(reader); Mocks.ReplayAll(); ModerationClass modClass = new ModerationClass() { }; var userRep = UserReputation.GetUserReputation(creator, modClass, 0); Assert.AreEqual(ModerationStatus.UserStatus.Premoderated, userRep.CurrentStatus); Assert.AreEqual(ModerationStatus.UserStatus.Postmoderated, userRep.ReputationDeterminedStatus); Assert.AreEqual(1, userRep.ReputationScore); }
/// <summary> /// Generates user reputation object /// </summary> /// <param name="creator"></param> /// <param name="modClass"></param> /// <param name="userId"></param> /// <returns></returns> public static UserReputation GetUserReputation(IDnaDataReaderCreator creator, ModerationClass modClass, int userId) { UserReputation userRep = new UserReputation() { ModClass = modClass, UserId = userId }; using (IDnaDataReader dataReader = creator.CreateDnaDataReader("getuserreputation")) { dataReader.AddParameter("userid", userId); dataReader.AddParameter("modclassid", modClass.ClassId); dataReader.AddIntOutputParameter("@currentStatus"); dataReader.AddIntOutputParameter("@reputationDeterminedStatus"); dataReader.Execute(); if (dataReader.Read()) { userRep.CurrentStatus = (ModerationStatus.UserStatus)dataReader.GetInt32NullAsZero("currentstatus"); userRep.ReputationDeterminedStatus = (ModerationStatus.UserStatus)dataReader.GetInt32NullAsZero("ReputationDeterminedStatus"); userRep.ReputationScore = dataReader.GetInt16("accumulativescore"); userRep.UserName = dataReader.GetStringNullAsEmpty("username"); userRep.LastUpdated = new DateElement(dataReader.GetDateTime("lastupdated")); } } return userRep; }
/// <summary> /// /// </summary> /// <param name="siteIds"></param> /// <param name="typeIds"></param> /// <param name="startIndex"></param> /// <param name="itemsPerPage"></param> /// <param name="startDate"></param> /// <param name="readerCreator"></param> /// <returns></returns> static public UserEventList GetUserEventList(ModerationClass modClass, int startIndex, int itemsPerPage, DateTime startDate, DateTime endDate, IDnaDataReaderCreator readerCreator, int userid) { var userEventList = new UserEventList() { ModClass = modClass, UserId = userid }; using (var reader = readerCreator.CreateDnaDataReader("getuserevents")) { reader.AddParameter("modclassid", modClass.ClassId); reader.AddParameter("userid", userid); reader.AddParameter("itemsperpage", itemsPerPage); reader.AddParameter("startindex", startIndex); if(startDate != DateTime.MinValue) { reader.AddParameter("startdate", startDate); } if(endDate != DateTime.MaxValue) { reader.AddParameter("enddate", endDate); } reader.Execute(); if (reader.Read()) { userEventList.TotalItems = reader.GetInt32NullAsZero("total"); userEventList.StartIndex = reader.GetLongNullAsZero("n") - 1; userEventList.ItemsPerPage = itemsPerPage; if (startDate != DateTime.MinValue) { userEventList.StartDate = new DateElement(startDate); } if (endDate != DateTime.MaxValue) { userEventList.EndDate = new DateElement(endDate); } do { var userEvent = new UserEvent(); userEvent.Type = (SiteActivityType)reader.GetInt32NullAsZero("typeid"); try { if (userEvent.Type == SiteActivityType.UserPost) { userEvent.ActivityData = XElement.Parse(string.Format("<ACTIVITYDATA>User posted {0} time{1}</ACTIVITYDATA>", reader.GetInt32NullAsZero("numberofposts") , reader.GetInt32NullAsZero("numberofposts") == 1 ? "" : "s")); } else { userEvent.ActivityData = XElement.Parse(reader.GetStringNullAsEmpty("activitydata")); } } catch {//skip a badly formatted element continue; } userEvent.Date = new Date(reader.GetDateTime("eventdate")); if (userEvent.Type == SiteActivityType.UserPost) { userEvent.Score = (int)reader.GetInt16("score") * reader.GetInt32NullAsZero("numberofposts"); } else { userEvent.Score = (int)reader.GetInt16("score"); } userEvent.AccummulativeScore = (int)reader.GetInt16("accumulativescore"); userEventList.UserEventObjList.Add(userEvent); } while (reader.Read()); } } return userEventList; }
public void ApplyModerationStatus_NotInitalised_ThrowsError() { var notes = ""; var duration = 5; var reader = Mocks.DynamicMock<IDnaDataReader>(); var creator = Mocks.DynamicMock<IDnaDataReaderCreator>(); reader.Stub(x => x.Read()).Return(true).Repeat.Once(); creator.Stub(x => x.CreateDnaDataReader("updatetrackedmemberformodclass")).Return(reader); Mocks.ReplayAll(); ModerationClass modClass = new ModerationClass() { }; var userRep = new UserReputation(); try { userRep.ApplyModerationStatus(creator, true, duration, notes, 1); throw new Exception("no exception thrown"); } catch (Exception e) { Assert.AreEqual("UserId cannot be zero", e.Message); } reader.AssertWasNotCalled(x => x.Execute()); }