public async Task GetRealEstate_Authenticated_ExistingRealEstate_ReturnsRealEstate(int id)
        {
            // Arrange
            var realEstateEntity = db.RealEstateRepository.GetWithIncludes(id);

            if (realEstateEntity == null)
            {
                throw new Exception(noSampleRealEstate);
            }
            var expectedRealEstate = _mapper.Map <RealEstateFullDetailDto>(realEstateEntity);

            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            // Act
            var response = await _client.GetFromJsonAsync <RealEstateFullDetailDto>(_client.BaseAddress + $"/{id}");

            // Assert
            response.Should().BeEquivalentTo(expectedRealEstate);
        }
        public async Task CreateRealEstate_Authenticated_InvalidRealEstate_ShouldReturnBadRequest()
        {
            // Arrange
            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            try
            {
                // Act
                var response = await _client.PostAsJsonAsync("", testRealEstateNullDescription);

                // Assert
                response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
                var realEstate = context.RealEstates.Where(r => r.Title == testRealEstate.Title)
                                 .FirstOrDefault();
                realEstate.Should().BeNull();
            }
            finally
            {
                // Incase the real estate got added
                RemoveLastRealEstateFromDb(testRealEstate.Title);
            }
        }
        public async Task GetRealEstate_Authenticated_NonExistingRealEstate_ReturnsNotFound()
        {
            // Arrange
            var realEstateEntity = db.RealEstateRepository.Get(-1);

            if (realEstateEntity != null)
            {
                throw new ArgumentException(noSampleRealEstate);
            }

            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            // Act
            var response = await _client.GetAsync("/-1");

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
        public async Task RateUser_Authenticated_UnexsistingRatedUser_ShouldReturnNotFound(
            string unexistingUserName)
        {
            // Arrange
            var ratingUser = db.UserRepository.Get(1);

            if (ratingUser == null)
            {
                throw new Exception(noSampleUser);
            }

            var ratedUser = db.UserRepository.Get(unexistingUserName);

            if (ratedUser != null)
            {
                throw new ArgumentNullException("User did exist, " +
                                                "please change the username for the non existing testing user.");
            }

            var rating = new RatingForCreationDto()
            {
                UserName = unexistingUserName, Value = 2
            };

            var token = FakeToken.CreateFakeTokenByUser(ratingUser);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);


            // Act
            var response = await _client.PutAsJsonAsync("rate", rating);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
예제 #5
0
        public async Task GetCommentsForRealEstate_ValidSkipTake_Autheticated_ExsistingRealEstate_ShouldReturnComments(
            int realEstateId, int skip, int take)
        {
            // Arrange
            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var expectedCommentsFromDb = db.CommentRepository.GetCommentsForRealEstate(realEstateId, skip, take);

            if (expectedCommentsFromDb == null || expectedCommentsFromDb.Count < 1)
            {
                throw new Exception(noSampleComments);
            }

            var expectedCommentsDto = _mapper.Map <IEnumerable <CommentDto> >(expectedCommentsFromDb);

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            // Act
            var response = await _client.GetFromJsonAsync <IEnumerable <CommentDto> >($"{realEstateId}?skip={skip}&take={take}");

            // Assert
            response.Should().BeEquivalentTo(expectedCommentsDto);
        }
        public void find_missing_text_if_the_key_has_default_text_but_it_is_not_the_default_culture_for_a_token_with_namespace()
        {
            var token = new FakeToken("KEY1", "the default text");

            var cultureInfo = new CultureInfo("fr-FR");

            ClassUnderTest.FindMissingText(token, cultureInfo)
            .ShouldEqual("fr-FR_FakeToken:KEY1");

            MockFor <ILocalizationStorage>().AssertWasCalled(x => x.WriteMissing("FakeToken:KEY1", "fr-FR_FakeToken:KEY1", cultureInfo));
        }
예제 #7
0
        public async Task PostComment_Authenticated_ValidComment_ShouldPostComment(int realEstateId, string content)
        {
            // Arrange
            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var realestate = db.RealEstateRepository.Get(realEstateId);

            if (realestate == null)
            {
                throw new Exception(noSampleRealEstate);
            }

            var comment = db.CommentRepository.GetCommentByUser(user.UserName, content);

            if (comment != null)
            {
                throw new Exception(commentAlreadyExists);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            var commnetToPost = new CommentForCreationDto()
            {
                RealEstateId = 1, Content = content
            };

            try
            {
                // Act
                var response = await _client.PostAsJsonAsync("", commnetToPost);

                // Assert
                response.StatusCode.Should().Be(HttpStatusCode.Created);
                response.Should().NotBe("");
                var addedComment = db.CommentRepository.GetCommentByUser(user.UserName, content);
                addedComment.Should().NotBeNull();
            }
            finally
            {
                RemoveCommentFromDb(user.UserName, content);
            }
        }
        public async Task RateUser_Authenticated_ExsistingUsers_ShouldCreateRating()
        {
            // Arrange
            var ratingUser = db.UserRepository.Get(1);
            var ratedUser  = db.UserRepository.Get(2);

            if (ratingUser == null || ratedUser == null)
            {
                throw new Exception(noSampleUser);
            }

            var oldRating = db.RatingRepository.Get(ratedUser.Id, ratingUser.Id);
            int?oldScore  = oldRating == null ? null : oldRating.Score as int?;

            var rating = new RatingForCreationDto()
            {
                UserName = ratedUser.UserName, Value = 2
            };

            var token = FakeToken.CreateFakeTokenByUser(ratingUser);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            try
            {
                // Act
                var response = await _client.PutAsJsonAsync("rate", rating);

                // Assert
                response.StatusCode.Should().Be(HttpStatusCode.OK);
                var addedRating = db.RatingRepository.Get(ratedUser.Id, ratingUser.Id);
                addedRating.Should().NotBeNull();
                addedRating.Score.Should().Be(rating.Value);
            }
            // Finally to ensure that the test-cleanup is always executed
            finally
            {
                // Cleanup incase of test failure
                RemoveRatingFromDb(ratedUser.Id, ratingUser.Id, oldScore);
                this.Dispose();
            }
        }
예제 #9
0
        public async Task GetCommentsForRealEstate_Autheticated_UnexsistingRealEstate_ShouldReturnNotFound(
            int realEstateId, int skip, int take)
        {
            // Arrange
            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            // Act
            var response = await _client.GetAsync($"{realEstateId}?skip={skip}&take={take}");

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
예제 #10
0
        public async Task GetCommentsByUser_InvalidSkipTake_Autheticated_ExsistingUser_ShouldReturnBadRequest(
            int userId, int skip, int take)
        {
            // Arrange
            var user = db.UserRepository.Get(userId);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            // Act
            var response = await _client.GetAsync($"byuser/{user.UserName}?skip={skip}&take={take}");

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
        public async Task CreateRealEstate_Authenticated_ValidRealEstate_ShouldCreateRealEstate()
        {
            // Arrange
            var realEstate = context.RealEstates.Where(r => r.Title == testRealEstate.Title)
                             .FirstOrDefault();

            if (realEstate != null)
            {
                throw new Exception("Real estate already exists," +
                                    "please change the test real estate or remove the existing record.");
            }

            var user = db.UserRepository.Get(1);

            if (user == null)
            {
                throw new Exception(noSampleUser);
            }

            var token = FakeToken.CreateFakeTokenByUser(user);

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            try
            {
                // Act
                var response = await _client.PostAsJsonAsync("", testRealEstate);

                // Assert
                response.StatusCode.Should().Be(HttpStatusCode.Created);
                realEstate = context.RealEstates.Where(r => r.Title == testRealEstate.Title)
                             .FirstOrDefault();
                realEstate.Should().NotBeNull();
            }
            finally
            {
                RemoveLastRealEstateFromDb(testRealEstate.Title);
            }
        }