예제 #1
0
 /// <summary>
 /// </summary>
 /// <param name="submissionID">Using Nullable because everything seems to be nullable in this entire project</param>
 /// <returns></returns>
 public static Voat.Domain.Models.Submission Retrieve(int?submissionID)
 {
     if (submissionID.HasValue && submissionID.Value > 0)
     {
         string cacheKey   = CachingKey.Submission(submissionID.Value);
         var    q          = new QuerySubmission(submissionID.Value);
         var    submission = q.Execute();
         return(submission);
     }
     return(null);
 }
예제 #2
0
        protected override RuleOutcome EvaluateRule(VoatRuleContext context)
        {
            var q          = new QuerySubmission(context.SubmissionID.Value);
            var submission = q.Execute();

            // do not execute downvoting if comment is older than 7 days
            var      commentPostingDate = submission.CreationDate;
            TimeSpan timeElapsed        = Repository.CurrentDate - commentPostingDate;

            if (timeElapsed.TotalDays > 7)
            {
                return(CreateOutcome(RuleResult.Denied, "Submission downvotes not registered after 7 days"));
            }
            return(base.EvaluateRule(context));
        }
예제 #3
0
        public void DownvoteSubmission()
        {
            var submissionUser = "******";
            var newSubmission = TestHelper.ContentCreation.CreateSubmission(submissionUser, new Domain.Models.UserSubmission() { Title = "This is what I think about you guys", Subverse = SUBVERSES.Unit });

            var userName = USERNAMES.User500CCP;
            var user = TestHelper.SetPrincipal(userName);
            bool voteEventReceived = false;

            EventNotification.Instance.OnVoteReceived += (s, e) => {
                voteEventReceived = 
                    e.TargetUserName == submissionUser
                    && e.SendingUserName == userName
                    && e.ChangeValue == -1 
                    && e.ReferenceType == Domain.Models.ContentType.Submission 
                    && e.ReferenceID == newSubmission.ID;
            };
            var cmd = new SubmissionVoteCommand(newSubmission.ID, -1, IpHash.CreateHash("127.0.0.100")).SetUserContext(user);

            var c = cmd.Execute().Result;
            VoatAssert.IsValid(c);

            //verify in db
            using (var db = new Voat.Data.Repository(user))
            {
                var submissionFromRepo = db.GetSubmission(newSubmission.ID);
                Assert.IsNotNull(submissionFromRepo, "Couldn't find comment in db");
                Assert.AreEqual(submissionFromRepo.UpCount, c.Response.UpCount);
                Assert.AreEqual(submissionFromRepo.DownCount, c.Response.DownCount);
            }
            Assert.IsTrue(voteEventReceived, "VoteEvent not have the expected values");

            //Verify Submission pull has correct vote value recorded in output for current user
            var q = new QuerySubmission(newSubmission.ID, true).SetUserContext(user);
            var submission = q.Execute();
            Assert.IsNotNull(submission);
            Assert.AreEqual(c.RecordedValue, submission.Vote);

            //Verify non-logged in user has correct vote value
            TestHelper.SetPrincipal(null);
            q = new QuerySubmission(1, true);
            submission = q.Execute();
            Assert.IsNotNull(submission);
            Assert.AreEqual(null, submission.Vote);
        }
예제 #4
0
        public void CreateSubmissionTrapJSMarkdown()
        {
            var user = TestHelper.SetPrincipal("TestUser02");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "This is a title", Content = "[Click here... Please. For research.](javascript:alert('arst');)"
            }).SetUserContext(user);
            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r);
            //Assert.AreEqual(r.Message, "The url you are trying to submit is invalid");
            var q          = new QuerySubmission(r.Response.ID);
            var submission = q.Execute();

            Assert.IsNotNull(submission, "Submission not found");
            Assert.AreEqual(submission.FormattedContent, "<p><a href=\"#\" data-ScriptStrip=\"/* script detected: javascript:alert('arst'); */\">Click here... Please. For research.</a></p>");
        }
예제 #5
0
        protected override object GetMissingValue(string name)
        {
            switch (name)
            {
            case "Subverse":
                if (SubmissionID != null)
                {
                    var cmd        = new QuerySubmission(SubmissionID.Value);
                    var submission = cmd.Execute();
                    PropertyBag.Submission = submission;

                    var cmdSubverse = new QuerySubverse(submission.Subverse);
                    var subverse    = cmdSubverse.Execute();

                    return(subverse);
                }
                if (CommentID != null)
                {
                    var cmdComment = new QueryComment(CommentID.Value);
                    var comment    = cmdComment.Execute();
                    PropertyBag.Comment = comment;

                    var cmd        = new QuerySubmission(comment.SubmissionID.Value);
                    var submission = cmd.Execute();
                    PropertyBag.Submission = submission;

                    var cmdSubverse = new QuerySubverse(submission.Subverse);
                    var subverse    = cmdSubverse.Execute();

                    return(subverse);
                }
                break;
            }

            return(base.GetMissingValue(name));
        }
예제 #6
0
        protected override object GetMissingValue(string name)
        {
            //TODO: This lazy loading needs to be optimized and rewritten. I. Don't. Like. This.
            switch (name)
            {
            case "Comment":
                if (CommentID != null)
                {
                    var cmdComment = new QueryComment(CommentID.Value);
                    var comment    = cmdComment.Execute();
                    PropertyBag.Comment = comment;

                    return(comment);
                }
                break;

            case "Submission":
                if (SubmissionID != null)
                {
                    var cmd        = new QuerySubmission(SubmissionID.Value);
                    var submission = cmd.Execute();
                    return(submission);
                }
                if (CommentID != null)
                {
                    var cmdComment = new QueryComment(CommentID.Value);
                    var comment    = cmdComment.Execute();
                    PropertyBag.Comment = comment;

                    var cmd        = new QuerySubmission(comment.SubmissionID.Value);
                    var submission = cmd.Execute();
                    return(submission);
                }
                break;

            case "Subverse":
                if (SubmissionID != null)
                {
                    var cmd        = new QuerySubmission(SubmissionID.Value);
                    var submission = cmd.Execute();
                    PropertyBag.Submission = submission;

                    var cmdSubverse = new QuerySubverse(submission.Subverse);
                    var subverse    = cmdSubverse.Execute();

                    return(subverse);
                }
                if (CommentID != null)
                {
                    var cmdComment = new QueryComment(CommentID.Value);
                    var comment    = cmdComment.Execute();
                    PropertyBag.Comment = comment;

                    var cmd        = new QuerySubmission(comment.SubmissionID.Value);
                    var submission = cmd.Execute();
                    PropertyBag.Submission = submission;

                    var cmdSubverse = new QuerySubverse(submission.Subverse);
                    var subverse    = cmdSubverse.Execute();

                    return(subverse);
                }
                break;
            }

            return(base.GetMissingValue(name));
        }