Пример #1
0
        public void InvalidVoteValue_Submission_Low()
        {

            VoatAssert.Throws<ArgumentOutOfRangeException>(() => {
                var user = TestHelper.SetPrincipal(USERNAMES.Unit);

                var cmd = new CommentVoteCommand(1, -2, IpHash.CreateHash("127.0.0.1")).SetUserContext(user);

                var c = cmd.Execute().Result;
            });

        }
Пример #2
0
            public static Domain.Models.Submission CreateSubmission(string userName, Domain.Models.UserSubmission submission)
            {
                var user = TestHelper.SetPrincipal(userName);

                var cmd = new CreateSubmissionCommand(submission).SetUserContext(user);
                var r   = cmd.Execute().Result;

                VoatAssert.IsValid(r);
                Assert.AreNotEqual(0, r.Response.ID);

                return(r.Response);
            }
Пример #3
0
        public void EnsureInvalidVoteValueThrowsException_Sub()
        {
            string userName = USERNAMES.User500CCP;
            var    user     = TestHelper.SetPrincipal(userName, null); //This user has one comment with 101 likes

            VoatAssert.Throws <ArgumentOutOfRangeException>(() => {
                using (var db = new Voat.Data.Repository(user))
                {
                    db.VoteSubmission(1, 21, IpHash.CreateHash("127.0.0.1"));
                }
            });
        }
Пример #4
0
        public void LongUrl_Bug()
        {
            var user = TestHelper.SetPrincipal("TestUser09");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "Long Url Bug", Url = "http://kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.com/"
            }).SetUserContext(user);
            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Success);
            //Assert.AreNotEqual(0, r.Response.ID);
        }
Пример #5
0
        public void PreventShortTitlePosts()
        {
            var user = TestHelper.SetPrincipal("TestUser02");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Unit, Title = "What", Url = "http://www.hellogoodbye.com/images/feelsgoodman.jpg"
            }).SetUserContext(user);
            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Invalid);
            Assert.AreEqual(r.Message, $"A title must be between {VoatSettings.Instance.MinimumTitleLength} and {VoatSettings.Instance.MaximumTitleLength} characters");
        }
Пример #6
0
        public void PreventGlobalBannedUsers()
        {
            var user           = TestHelper.SetPrincipal("BannedGlobally");
            var userSubmission = new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Unit, Title = Guid.NewGuid().ToString(), Url = "http://www.SendhelpImStuckInUnitTests.com/images/feelsgoodman.jpg"
            };
            var cmd = new CreateSubmissionCommand(userSubmission).SetUserContext(user);
            var r   = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual(r.Message, "User is globally banned");
        }
Пример #7
0
        public void PreventSubverseBannedUsers()
        {
            var user           = TestHelper.SetPrincipal("BannedFromVUnit");
            var userSubmission = new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Unit, Title = Guid.NewGuid().ToString(), Url = "http://www.SuperAwesomeDomainName.com/images/feelsgoodman.jpg"
            };
            var cmd = new CreateSubmissionCommand(userSubmission).SetUserContext(user);
            var r   = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual(r.Message, $"User is banned from v/{userSubmission.Subverse}");
        }
Пример #8
0
        public void CreateSubmissionTrapJSInUrl()
        {
            var user = TestHelper.SetPrincipal("TestUser06");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "This is a title", Url = "javascript:alert('arst');"
            }).SetUserContext(user);
            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Invalid);
            Assert.AreEqual(r.Message, "The url you are trying to submit is invalid");
        }
Пример #9
0
        public void PreventUserFromPostingToAuthorizedOnlySubverses()
        {
            var user           = TestHelper.SetPrincipal("TestUser09");
            var userSubmission = new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.AuthorizedOnly, Title = Guid.NewGuid().ToString(), Url = "http://www.digit.com/images/feelsgoodman.jpg"
            };
            var cmd = new CreateSubmissionCommand(userSubmission).SetUserContext(user);
            var r   = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual(r.Message, "You are not authorized to submit links or start discussions in this subverse. Please contact subverse moderators for authorization");
        }
Пример #10
0
        public void PreventUserFromPostingCompromisedTitle1()
        {
            var user           = TestHelper.SetPrincipal("TestUser01");
            var userSubmission = new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000", Content = "cookies"
            };
            var cmd = new CreateSubmissionCommand(userSubmission).SetUserContext(user);
            var r   = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual(r.Message, "Submission title can not contain Unicode or unprintable characters");
        }
Пример #11
0
        public void PreventPostingToDisabledSub()
        {
            var user           = TestHelper.SetPrincipal("TestUser06");
            var userSubmission = new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Disabled, Title = "I am not paying attention", Content = "Why was this sub disabled?"
            };
            var cmd = new CreateSubmissionCommand(userSubmission).SetUserContext(user);
            var r   = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual("Subverse is disabled", r.Message);
        }
Пример #12
0
        public void PreventPartialUrlTitlePosts_Bug()
        {
            var user = TestHelper.SetPrincipal("TestUser09");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "speedtesting", Url = "http://beta.speedtesting.net/"
            }).SetUserContext(user);
            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Success);
            //Assert.AreNotEqual(0, r.Response.ID);
        }
Пример #13
0
        public async Task SendPrivateMessage()
        {
            var id        = Guid.NewGuid().ToString();
            var sender    = USERNAMES.User100CCP;
            var recipient = USERNAMES.Anon;

            var user = TestHelper.SetPrincipal(sender);

            var message = new Domain.Models.SendMessage()
            {
                //Sender = User.Identity.Name,
                Recipient = recipient,
                Subject   = id,
                Message   = id
            };
            var cmd      = new SendMessageCommand(message).SetUserContext(user);
            var response = await cmd.Execute();

            VoatAssert.IsValid(response);

            using (var db = new VoatDataContext())
            {
                var record = (from x in db.Message
                              where
                              x.Recipient == recipient &&
                              x.Sender == sender &&
                              x.Title == id &&
                              x.Content == id &&
                              x.Subverse == null &&
                              x.CommentID == null &&
                              x.SubmissionID == null &&
                              x.Type == (int)Domain.Models.MessageType.Sent
                              //&& x.Direction == (int)Domain.Models.MessageDirection.OutBound
                              select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find outbound in database");

                record = (from x in db.Message
                          where
                          x.Recipient == recipient &&
                          x.Sender == sender &&
                          x.Title == id &&
                          x.Content == id &&
                          x.Subverse == null &&
                          x.CommentID == null &&
                          x.SubmissionID == null &&
                          x.Type == (int)Domain.Models.MessageType.Private
                          //&& x.Direction == (int)Domain.Models.MessageDirection.InBound
                          select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find inbound in database");
            }
        }
Пример #14
0
        public async Task QueryUserComments_Anon()
        {
            var userName = "******";
            var user     = TestHelper.SetPrincipal(userName);
            var cmd      = new CreateCommentCommand(2, null, "You can never know I said this: Bollocks").SetUserContext(user);
            var x        = await cmd.Execute();

            VoatAssert.IsValid(x);

            var q = new QueryUserComments(userName, SearchOptions.Default);
            var r = await q.ExecuteAsync();

            Assert.AreEqual(false, r.Any(w => w.Content == "You can never know I said this: Bollocks"));
        }
Пример #15
0
        public void PreventPartialUrlTitlePosts()
        {
            var user = TestHelper.SetPrincipal("TestUser02");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "www.yahoo.com", Url = "http://www.yahoo.com"
            }).SetUserContext(user);
            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual(r.Message, "Submission title may not be the same as the URL you are trying to submit. Why would you even think about doing this?! Why?");
            //Assert.AreNotEqual(0, r.Response.ID);
        }
Пример #16
0
        public async Task MentionUser_Anon_NoBlock_Test()
        {
            string user1 = "UnitTestUser11";
            string user2 = "UnitTestUser12";

            var user = TestHelper.SetPrincipal(user1);

            //Submission
            var anonSubmission = TestHelper.ContentCreation.CreateSubmission(user1, new Domain.Models.UserSubmission()
            {
                Title = $"I'm harrassing @{user2}!", Content = GetMethodName(true), Subverse = SUBVERSES.Anon
            });

            Assert.IsNotNull(anonSubmission, "Couldn't create test submission");
            Assert.AreNotEqual(0, anonSubmission.ID, "Doesn't appear we have a valid submission id");

            Thread.Sleep(2000);

            using (var db = new VoatDataContext())
            {
                var count = db.Message.Where(x =>
                                             x.Sender == user1 &&
                                             x.Recipient == user2 &&
                                             x.SubmissionID == anonSubmission.ID &&
                                             x.IsAnonymized == true &&
                                             x.Type == (int)Domain.Models.MessageType.SubmissionMention
                                             ).Count();
                Assert.AreEqual(1, count, "Where is the harassment submission message!?!?!?");
            }

            //Comment
            string mentionTwiceContent = $"Hello @{user2}, I am mentioning you in an anon thread because I want to make you feel scared";
            var    cmd    = new CreateCommentCommand(anonSubmission.ID, null, mentionTwiceContent).SetUserContext(user);
            var    result = await cmd.Execute();

            VoatAssert.IsValid(result);

            using (var db = new VoatDataContext())
            {
                var count = db.Message.Where(x =>
                                             x.Sender == user1 &&
                                             x.Recipient == user2 &&
                                             x.CommentID == result.Response.ID &&
                                             x.IsAnonymized == true &&
                                             x.Type == (int)Domain.Models.MessageType.CommentMention

                                             ).Count();
                Assert.AreEqual(1, count, "Where is the harassment comment message!?!?!?");
            }
        }
Пример #17
0
        public async Task QueryUserComments()
        {
            var userName = "******";
            var user     = TestHelper.SetPrincipal(userName);
            var cmd      = new CreateCommentCommand(1, null, "My pillow looks like jello").SetUserContext(user);
            var x        = await cmd.Execute();

            VoatAssert.IsValid(x);

            var q = new QueryUserComments(userName, SearchOptions.Default).SetUserContext(user);
            var r = await q.ExecuteAsync();

            Assert.AreEqual(true, r.Any(w => w.Content == "My pillow looks like jello"));
        }
Пример #18
0
        public async Task CreateSubmission_Anon_InNonAnonSub()
        {
            string userName = "******";
            var    user     = TestHelper.SetPrincipal(userName);

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Unit, Title = "This is a title", Url = "http://www.yahoo.com", IsAnonymized = true
            }).SetUserContext(user).SetUserContext(user);

            var r = await cmd.Execute();

            VoatAssert.IsValid(r, Status.Denied);
        }
Пример #19
0
        public void PreventInvalidUrlTitlePosts()
        {
            var user = TestHelper.SetPrincipal("TestUser07");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "Super rad website", Url = "http//www.yahoo.com"
            }).SetUserContext(user);

            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Invalid);
            Assert.AreEqual("The url you are trying to submit is invalid", r.Message);
            //Assert.AreNotEqual(0, r.Response.ID);
        }
Пример #20
0
        public void EditComment_BannedDomain()
        {
            var user = TestHelper.SetPrincipal("TestUser02");

            var cmd = new CreateCommentCommand(1, null, "This is a unit test and I like it.").SetUserContext(user);
            var c   = cmd.Execute().Result;

            VoatAssert.IsValid(c);

            var editCmd    = new EditCommentCommand(c.Response.ID, "[Check out this killer website](http://fleddit.com/f/3hen3k/Look_at_this_cat_just_Looook_awww)!").SetUserContext(user);
            var editResult = editCmd.Execute().Result;

            VoatAssert.IsValid(editResult, Status.Denied, "Expecting Denied Status");
            Assert.AreEqual("Comment contains banned domains", editResult.Message);
        }
Пример #21
0
        public void EditComment_Empty()
        {
            var user = TestHelper.SetPrincipal("TestUser11");

            var cmd = new CreateCommentCommand(1, null, "This is a unit test and I like it.").SetUserContext(user);
            var c   = cmd.Execute().Result;

            VoatAssert.IsValid(c);

            var editCmd    = new EditCommentCommand(c.Response.ID, "            ").SetUserContext(user);
            var editResult = editCmd.Execute().Result;

            Assert.IsFalse(editResult.Success, editResult.Message);
            Assert.AreEqual("Empty comments not allowed", editResult.Message);
        }
Пример #22
0
        public void PreventUrlTitlePosts_BugTrap()
        {
            //BUGFIX: https://voat.co/v/FGC/1349484
            var user = TestHelper.SetPrincipal("TestUser02");

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Whatever, Title = "http://www.besthealthmarket.org/cianix-male-enhancement/", Content = "Cianix is the best available product in the market. It has long lasting anti-aging effects. It made up of natural products and has no side effects. Therefore it is a highly recommended  product for anti-aging as well as healthy skin. Signs of Healthy Skin We talk a lot about healthy skin and methods of achieving healthy skin. But what healthy skin actually is only a few of us know it. Here are few points that a healthy skin has: Even color:"
            }).SetUserContext(user);

            var r = cmd.Execute().Result;

            VoatAssert.IsValid(r, Status.Denied);
            Assert.AreEqual(r.Message, "Submission title is a url? Why would you even think about doing this?! Why?");
        }
Пример #23
0
        public async Task TestCommentNotification(string sub, string user1, string user2)
        {
            var id = Guid.NewGuid().ToString();

            //Post submission as TestUser1
            var user = TestHelper.SetPrincipal(user1);
            var cmd  = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = sub, Title = "Let's be creative!", Content = "No"
            }).SetUserContext(user);
            var response = await cmd.Execute();

            VoatAssert.IsValid(response);

            var submission = response.Response;

            Assert.IsNotNull(submission, "Expected a non-null submission response");

            //Reply to comment as TestUser2
            user = TestHelper.SetPrincipal(user2);
            var commentCmd      = new CreateCommentCommand(submission.ID, null, "Important Comment").SetUserContext(user);
            var responseComment = await commentCmd.Execute();

            VoatAssert.IsValid(responseComment);

            var comment = responseComment.Response;

            Assert.IsNotNull(comment, "Expected a non-null comment response");


            //Check to see if Comment notification exists in messages
            using (var db = new VoatDataContext())
            {
                var record = (from x in db.Message
                              where
                              x.Recipient == user1 &&
                              x.Sender == user2 &&
                              x.IsAnonymized == submission.IsAnonymized &&
                              x.IsAnonymized == comment.IsAnonymized &&
                              x.CommentID == comment.ID &&
                              x.SubmissionID == submission.ID &&
                              x.Subverse == submission.Subverse &&
                              x.Type == (int)Domain.Models.MessageType.SubmissionReply
                              // && x.Direction == (int)Domain.Models.MessageDirection.InBound
                              select x).FirstOrDefault();
                Assert.IsNotNull(record, "Can not find message in database");
            }
        }
Пример #24
0
        public void EditComment_WrongOwner()
        {
            var user = TestHelper.SetPrincipal("TestUser15");

            var cmd = new CreateCommentCommand(1, null, "This is a unit test and I like it.").SetUserContext(user);
            var c   = cmd.Execute().Result;

            VoatAssert.IsValid(c);

            user = TestHelper.SetPrincipal("TestUser12");
            var editCmd    = new EditCommentCommand(c.Response.ID, "All your comment are belong to us!").SetUserContext(user);
            var editResult = editCmd.Execute().Result;

            VoatAssert.IsValid(editResult, Status.Denied);
            Assert.AreEqual("User does not have permissions to perform requested action", editResult.Message);
        }
Пример #25
0
        public void UpvoteSubmission_DeniesSameIP()
        {
            var user = TestHelper.SetPrincipal("UnitTestUser45");
            var cmd = new SubmissionVoteCommand(1, 1, IpHash.CreateHash("1.1.1.1")).SetUserContext(user); 
            var c = cmd.Execute().Result;
            VoatAssert.IsValid(c);

            user = TestHelper.SetPrincipal("UnitTestUser46");
            cmd = new SubmissionVoteCommand(1, 1, IpHash.CreateHash("1.1.1.1")).SetUserContext(user);
            c = cmd.Execute().Result;
            Assert.IsNotNull(c, "Response is null");
            Assert.IsFalse(c.Success, c.Message);
            Assert.IsNull(c.Response);


        }
Пример #26
0
        public async Task CreateComment_TestSubmissionCommentNotification()
        {
            var userName = "******";
            var user     = TestHelper.SetPrincipal(userName);
            var body     = Guid.NewGuid().ToString();
            var cmd      = new CreateCommentCommand(1, null, body).SetUserContext(user);
            var c        = await cmd.Execute();

            VoatAssert.IsValid(c);

            //check for comment reply entry
            using (var db = new VoatDataContext())
            {
                var notice = db.Message.FirstOrDefault(x => x.Sender == userName && x.Recipient == "anon" && x.SubmissionID == 1);
                Assert.IsNotNull(notice, "Did not find a reply notification");
            }
        }
Пример #27
0
        public async Task UpvoteComment()
        {
            var user = TestHelper.SetPrincipal(USERNAMES.User50CCP);
            var cmd = new CommentVoteCommand(1, 1, IpHash.CreateHash("127.0.0.2")).SetUserContext(user);

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

            //verify in db
            using (var db = new Voat.Data.Repository(user))
            {
                var comment = await db.GetComment(1);
                Assert.IsNotNull(comment, "Couldn't find comment in db");
                Assert.AreEqual(comment.UpCount, c.Response.UpCount);
                Assert.AreEqual(comment.DownCount, c.Response.DownCount);
            }
        }
Пример #28
0
        public async Task CreateSubmission_NSFW_TitleOnly()
        {
            string userName = "******";
            var    user     = TestHelper.SetPrincipal(userName);

            var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission()
            {
                Subverse = SUBVERSES.Unit, Title = "This is a title [nSfW]", Url = "http://www.yahoo.com/someotherurl/", IsAdult = false
            }).SetUserContext(user);

            var r = await cmd.Execute();

            VoatAssert.IsValid(r);
            Assert.IsNotNull(r.Response, "Expecting a non null response");
            Assert.AreNotEqual(0, r.Response.ID, "Expected a valid ID");
            Assert.AreEqual(true, r.Response.IsAdult);
        }
Пример #29
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);
        }
Пример #30
0
        public async Task MentionUser_Comment_Test()
        {
            string user1 = "UnitTestUser07";
            string user2 = "UnitTestUser08";

            var    user = TestHelper.SetPrincipal(user1);
            string mentionTwiceContent = $"PSA: @{user2} is a shill. I saw him getting ready for work and his socks were standard shill issue.";
            var    cmd    = new CreateCommentCommand(submission.ID, null, mentionTwiceContent).SetUserContext(user);
            var    result = await cmd.Execute();

            VoatAssert.IsValid(result);

            using (var db = new VoatDataContext())
            {
                var count = db.Message.Where(x => x.Sender == user1 && x.Recipient == user2 && x.CommentID == result.Response.ID).Count();
                Assert.AreEqual(1, count, "Expected to receive shill mention! THIS IS CENSORSHIP!");
            }
        }