예제 #1
0
        public void SetUp()
        {
            var hashedPass = LoginManager.GetHashedPass("already_exists", "123", 0);

            userWithEmail = new User("already_exists", hashedPass, "*****@*****.**", 0)
            {
                Id = 123
            };
            userWithoutEmail = new User("no_email", "222", string.Empty, 321)
            {
                Id = 321
            };
            repository = new FakeUserRepository(userWithEmail, userWithoutEmail);
            repository.Add(userWithEmail.Options);
            permissionContext   = new FakePermissionContext(new UserWithPermissionsContract(userWithEmail, ContentLanguagePreference.Default));
            stopForumSpamClient = new FakeStopForumSpamClient();
            mailer        = new FakeUserMessageMailer();
            data          = new UserQueries(repository, permissionContext, new FakeEntryLinkFactory(), stopForumSpamClient, mailer, new FakeUserIconFactory(), new FakeObjectCache());
            softBannedIPs = new HostCollection();

            request = new PasswordResetRequest(userWithEmail)
            {
                Id = Guid.NewGuid()
            };
            repository.Add(request);
        }
예제 #2
0
        public void SetUp()
        {
            userWithEmail = new User("already_exists", "123", "*****@*****.**", PasswordHashAlgorithms.Default)
            {
                Id = 123
            };
            userWithoutEmail = new User("no_email", "222", string.Empty, PasswordHashAlgorithms.Default)
            {
                Id = 321
            };
            repository = new FakeUserRepository(userWithEmail, userWithoutEmail);
            repository.Add(userWithEmail.Options);
            permissionContext   = new FakePermissionContext(new UserWithPermissionsContract(userWithEmail, ContentLanguagePreference.Default));
            stopForumSpamClient = new FakeStopForumSpamClient();
            mailer = new FakeUserMessageMailer();
            data   = new UserQueries(repository, permissionContext, new FakeEntryLinkFactory(), stopForumSpamClient, mailer,
                                     new FakeUserIconFactory(), null, new InMemoryImagePersister(), new FakeObjectCache(), new Model.Service.BrandableStrings.BrandableStringsManager(), new EnumTranslations());
            softBannedIPs = new HostCollection();

            request = new PasswordResetRequest(userWithEmail)
            {
                Id = Guid.NewGuid()
            };
            repository.Add(request);
        }
예제 #3
0
        public void GetRatingsByGenre()
        {
            var fakeTag = new Tag("temp")
            {
                Name = null
            };                                                         // Need to fake it because NHibernate doesn't work with ?:
            var vocarock = new Tag("Vocarock", Tag.CommonCategory_Genres)
            {
                Parent = fakeTag, AliasedTo = fakeTag
            };
            var electronic = new Tag("Electronic", Tag.CommonCategory_Genres)
            {
                Parent = fakeTag, AliasedTo = fakeTag
            };
            var trance = new Tag("Trance", Tag.CommonCategory_Genres)
            {
                Parent = electronic, AliasedTo = fakeTag
            };

            repository.Add(vocarock, electronic, trance);

            var song1 = CreateEntry.Song(name: "Nebula");
            var song2 = CreateEntry.Song(name: "Anger");
            var song3 = CreateEntry.Song(name: "DYE");

            repository.Add(song1, song2, song3);

            userWithEmail.AddSongToFavorites(song1, SongVoteRating.Favorite);
            userWithEmail.AddSongToFavorites(song2, SongVoteRating.Favorite);
            userWithEmail.AddSongToFavorites(song3, SongVoteRating.Favorite);

            var usage1 = CreateEntry.SongTagUsage(song1, vocarock, userWithEmail);
            var usage2 = CreateEntry.SongTagUsage(song1, trance, userWithEmail);
            var usage3 = CreateEntry.SongTagUsage(song2, vocarock, userWithEmail);
            var usage4 = CreateEntry.SongTagUsage(song2, trance, userWithEmail);
            var usage5 = CreateEntry.SongTagUsage(song3, trance, userWithEmail);

            repository.Add(usage1, usage2, usage3, usage4, usage5);

            var result = data.GetRatingsByGenre(userWithEmail.Id);

            Assert.AreEqual(2, result.Length, "Number of results");
            var first = result[0];

            Assert.AreEqual(electronic.Name, first.Item1, "First result is Electronic");
            Assert.AreEqual(3, first.Item2, "Votes for Electronic");

            var second = result[1];

            Assert.AreEqual(vocarock.Name, second.Item1, "First result is Vocarock");
            Assert.AreEqual(2, second.Item2, "Votes for Vocarock");
        }
예제 #4
0
        public void GetRatingsByGenre()
        {
            var fakeTagMock = new Mock <Tag>();
            var fakeTag     = fakeTagMock.Object;
            var vocarock    = new Tag("Vocarock", TagCommonCategoryNames.Genres)
            {
                Parent = fakeTag
            };
            var electronic = new Tag("Electronic", TagCommonCategoryNames.Genres)
            {
                Parent = fakeTag
            };
            var trance = new Tag("Trance", TagCommonCategoryNames.Genres)
            {
                Parent = electronic
            };

            repository.Save(vocarock, electronic, trance);
            repository.SaveNames(vocarock, electronic, trance);

            var song1 = CreateEntry.Song(name: "Nebula");
            var song2 = CreateEntry.Song(name: "Anger");
            var song3 = CreateEntry.Song(name: "DYE");

            repository.Add(song1, song2, song3);

            userWithEmail.AddSongToFavorites(song1, SongVoteRating.Favorite);
            userWithEmail.AddSongToFavorites(song2, SongVoteRating.Favorite);
            userWithEmail.AddSongToFavorites(song3, SongVoteRating.Favorite);

            var usage1 = CreateEntry.SongTagUsage(song1, vocarock, userWithEmail);
            var usage2 = CreateEntry.SongTagUsage(song1, trance, userWithEmail);
            var usage3 = CreateEntry.SongTagUsage(song2, vocarock, userWithEmail);
            var usage4 = CreateEntry.SongTagUsage(song2, trance, userWithEmail);
            var usage5 = CreateEntry.SongTagUsage(song3, trance, userWithEmail);

            repository.Add(usage1, usage2, usage3, usage4, usage5);

            var result = data.GetRatingsByGenre(userWithEmail.Id);

            Assert.AreEqual(2, result.Length, "Number of results");
            var first = result[0];

            Assert.AreEqual(electronic.DefaultName, first.Item1, "First result is Electronic");
            Assert.AreEqual(3, first.Item2, "Votes for Electronic");

            var second = result[1];

            Assert.AreEqual(vocarock.DefaultName, second.Item1, "First result is Vocarock");
            Assert.AreEqual(2, second.Item2, "Votes for Vocarock");
        }
예제 #5
0
        public void CommentPost_WhenSessionKeyIsNotCorrect_ShouldReturnStatusCode400()
        {
            var user = new User()
            {
                DisplayName = "JavaScript",
                Username    = "******",
                AuthCode    = "bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e",
                SessionKey  = "1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH"
            };

            var fakeUserRepo = new FakeUserRepository();

            fakeUserRepo.Add(user);

            var post = new Post()
            {
                PostDate = DateTime.Now,
                Text     = "Some text",
                Title    = "SomeTitle",
                User     = user
            };

            var fakePostRepo = new FakePostRepository();

            fakePostRepo.Add(post);

            var server   = new InMemoryHttpServer <Post>("http://localhost/", fakePostRepo);
            var response = server.CreateGetRequest("api/posts?sessionKey=1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH&tags");

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
예제 #6
0
        public void Create_WhenPostTextIsNull_ShouldReturnStatusCode400()
        {
            var fakeUserRepo = new FakeUserRepository();
            var user         = new User()
            {
                DisplayName = "JavaScript",
                Username    = "******",
                AuthCode    = "bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e",
                SessionKey  = "1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH"
            };

            fakeUserRepo.Add(user);

            var fakePostRepo = new FakePostRepository();

            var server  = new InMemoryHttpServer <Post>("http://localhost/", fakePostRepo);
            var newPost = new
            {
                title = "some title",
                tags  = new string[] { "asd", "qwe" }
            };


            var response = server.CreatePostRequest("api/posts?sessionKey=1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH", newPost);

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
예제 #7
0
		public void SetUp() {

			var hashedPass = LoginManager.GetHashedPass("already_exists", "123", 0);
			userWithEmail = new User("already_exists", hashedPass, "*****@*****.**", 0) { Id = 123 };
			userWithoutEmail = new User("no_email", "222", string.Empty, 321) { Id = 321 };
			repository = new FakeUserRepository(userWithEmail, userWithoutEmail);
			repository.Add(userWithEmail.Options);
			permissionContext = new FakePermissionContext(new UserWithPermissionsContract(userWithEmail, ContentLanguagePreference.Default));
			stopForumSpamClient = new FakeStopForumSpamClient();
			mailer = new FakeUserMessageMailer();
			data = new UserQueries(repository, permissionContext, new FakeEntryLinkFactory(), stopForumSpamClient, mailer, new FakeUserIconFactory(), new FakeObjectCache());
			softBannedIPs = new HostCollection();

			request = new PasswordResetRequest(userWithEmail) { Id = Guid.NewGuid() };
			repository.Add(request);

		}
예제 #8
0
        public void GetByTags_WhenTagsAreNotCorrect_ShouldReturnNoContent()
        {
            var user = new User()
            {
                DisplayName = "JavaScript",
                Username    = "******",
                AuthCode    = "bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e",
                SessionKey  = "1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH"
            };

            var fakeUserRepo = new FakeUserRepository();

            fakeUserRepo.Add(user);

            var post = new Post()
            {
                PostDate = DateTime.Now,
                Text     = "Some text",
                Title    = "SomeTitle",
                User     = user
            };

            var fakePostRepo = new FakePostRepository();

            fakePostRepo.Add(post);

            var tags = new List <Tag>()
            {
                new Tag()
                {
                    Name  = "c#",
                    Posts = new List <Post>()
                    {
                        post
                    }
                },

                new Tag()
                {
                    Name  = "web",
                    Posts = new List <Post>()
                    {
                        post
                    }
                },
            };

            var fakeTagRepo = new FakeTagRepository();

            fakeTagRepo.Add(tags[0]);
            fakeTagRepo.Add(tags[1]);

            var server   = new InMemoryHttpServer <Post>("http://localhost/", fakePostRepo);
            var response = server.CreateGetRequest("api/posts?sessionKey=1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH&tags=js");

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsNotNull(response.Content);
        }
        public void Login_WhenUserIsValid_ShouldLoginInDatabase()
        {
            var fakeRepo = new FakeUserRepository();
            var user     = new User()
            {
                Username = "******",
                AuthCode = "bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e"
            };

            fakeRepo.Add(user);

            var server = new InMemoryHttpServer <User>("http://localhost/", fakeRepo);

            var response = server.CreatePostRequest("api/users/login", user);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsNotNull(response.Content);
        }
예제 #10
0
        public void Logout_WhenSessionKeyIsNotValid_ShouldReturnStatusCode400()
        {
            var fakeRepo = new FakeUserRepository();
            var user     = new User()
            {
                Username   = "******",
                AuthCode   = "bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e",
                SessionKey = "1zIzcHNYWhSKnWVrGNpBLxOzDDLPRMbHMeMjklumYmodzRTgAH"
            };

            fakeRepo.Add(user);

            var server = new InMemoryHttpServer <User>("http://localhost/", fakeRepo);

            var response = server.CreatePutRequest("api/users/logout?sessionKey=stupidKey", new { });

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.IsNotNull(response.Content);
        }
예제 #11
0
        public void Register_WhenAuthCodeIsTooLong_ShouldReturnStatusCode400()
        {
            var fakeRepo = new FakeUserRepository();
            var server   = new InMemoryHttpServer <User>("http://localhost/", fakeRepo);

            var user = new User()
            {
                Username    = "******",
                DisplayName = "Valid Display Name",
                AuthCode    = "bfff2dd4f1b310eb0dbf593bd83f94dd8d34077e"
            };

            fakeRepo.Add(user);

            var response = server.CreatePostRequest("api/users/register", user);

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.AreEqual(2, fakeRepo.Entities.Count); // I put one user in the repository so that the ids begin from 1 (the first user is dummy)
        }