/// <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); }
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)); }
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); }
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>"); }
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)); }
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)); }