Esempio n. 1
0
        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;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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;
        }
Esempio n. 6
0
        /// <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;
        }
Esempio n. 7
0
        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());
            
        }