コード例 #1
0
        public async Task UpdateProfile_ProfileUpdated_Success()
        {
            // Arrange
            var updateProfileDTO = DummyData.UpdateProfileDTOFaker.Generate();
            var user             = DummyData.UserFaker.Generate();
            var appUser          = FakeAppUser.For(user);

            _updateProfileValidator.SetupPass();
            _um.FindByNameAsync(appUser.Email).Returns(appUser);
            _um.UpdateAsync(appUser).Returns(IdentityResult.Success);

            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);

            // Act
            var result = await _sut.Update(updateProfileDTO);

            // Assert
            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(
                updateProfileDTO,
                options => options.Excluding(u => u.Friends)
                );
            _userRepository.Received().Update(user);
        }
        public void Post_LoggedInUserWithGoodRoute_ShouldRegisterAndReturnsOk()
        {
            // Arrange 
            var route = DummyData.RouteFaker.Generate();
            var user = DummyData.UserFaker.Generate();
            var routeRegistrationDTO = DummyData.RouteRegistrationDTOFaker.Generate();
            routeRegistrationDTO.OrderedShirt = true;
            routeRegistrationDTO.RouteId = route.Id;
            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);
            _routeRepository.GetBy(route.Id).Returns(route);
            _validator.SetupPass();

            // Act 
            var numberOfRegistrations = user.Registrations.Count;
            var result = _sut.Post(routeRegistrationDTO);

            // Assert 
            result.Should().BeOfType<OkObjectResult>()
                .Which.Value.Should().BeEquivalentTo(
                    routeRegistrationDTO,
                    options => options.Using(new EnumAsStringAssertionRule()) //treat enums as strings
                );

            _userRepository.Received().GetBy(user.Email);
            _routeRepository.Received().GetBy(route.Id);
            //registration is added to user 
            user.Registrations.Count.Should().Be(numberOfRegistrations + 1);
        }
        public void Post_ValidationFailed_ReturnsBadRequest()
        {
            // Arrange 
            var route = DummyData.RouteFaker.Generate();
            var user = DummyData.UserFaker.Generate();
            var routeRegistrationDTO = DummyData.RouteRegistrationDTOFaker.Generate();
            routeRegistrationDTO.OrderedShirt = true;
            routeRegistrationDTO.RouteId = route.Id;
            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);
            _routeRepository.GetBy(route.Id).Returns(route);

            _validator.SetupFail();

            // Act 
            var numberOfRegistrations = user.Registrations.Count;
            var result = _sut.Post(routeRegistrationDTO);

            // Assert 
            result.Should().BeOfType<BadRequestObjectResult>()
                .Which.Value.Should().BeOfType<ValidationResult>()
                .Which.IsValid.Should().BeFalse();

            _userRepository.DidNotReceive().GetBy(user.Email);
            user.Registrations.Count.Should().Be(numberOfRegistrations);
        }
コード例 #4
0
        public void GetCurrentUserAreasShouldReturnProperResult()
        {
            var userId  = Guid.NewGuid().ToString();
            var request = new Mock <HttpRequestBase>();

            request.SetupGet(x => x.IsAuthenticated).Returns(true);

            var areasFake = new Mock <IAreasServices>();

            areasFake.Setup(a => a.GetByUserId(It.IsAny <string>())).Returns(areas);

            var recordsFake   = new Mock <IRecordsServices>().Object;
            var documentsFake = new Mock <IDocumentsServices>().Object;
            var usersFake     = new Mock <IUsersServices>().Object;

            request.SetupGet(x => x.IsAuthenticated).Returns(false);

            var controller = new AreasController(areasFake.Object, recordsFake, documentsFake, usersFake)
            {
                ControllerContext = FakeControllerContext.GetFakeControllerContextWithFakeIdentity()
            };

            Mapper.CreateMap <Area, AreaShortViewModel>();
            Mapper.CreateMap <Area, AreaListViewModel>();
            Mapper.CreateMap <User, UserShortViewModel>();

            ViewResult viewResult = controller.Index() as ViewResult;

            controller.WithCallTo(c => c.GetCurrentUserAreas())
            .ShouldRenderPartialView("_UserAreasDropDownList")
            .WithModel <List <AreaShortViewModel> >(x => Assert.AreEqual(4, x.Count()));
        }
コード例 #5
0
ファイル: MvcHelper.cs プロジェクト: gitter-badger/NinjaHive
        public static HtmlHelper <TModel> GetHtmlHelper <TModel>(
            TModel model, ControllerBase controller, bool clientValidationEnabled)
        {
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new FakeViewEngine());

            var httpContext = new FakeHttpContext();

            var viewData = new FakeViewDataContainer {
                ViewData = new ViewDataDictionary <TModel>(model)
            };

            var routeData = new RouteData();

            routeData.Values["controller"] = "home";
            routeData.Values["action"]     = "index";

            ControllerContext controllerContext = new FakeControllerContext(controller);

            var viewContext = new FakeViewContext(controllerContext, "MyView", routeData);

            viewContext.HttpContext                  = httpContext;
            viewContext.ClientValidationEnabled      = clientValidationEnabled;
            viewContext.UnobtrusiveJavaScriptEnabled = clientValidationEnabled;
            viewContext.FormContext                  = new FakeFormContext();

            HtmlHelper <TModel> htmlHelper = new HtmlHelper <TModel>(viewContext, viewData);

            return(htmlHelper);
        }
        public async Task Delete_NoSuchRegistration_ReturnsBadRequest()
        {
            // Arrange 
            var user = DummyData.UserFaker.Generate();
            var registrationId = Guid.NewGuid();

            _sut.ControllerContext = FakeControllerContext.For(user);

            _userRepository.GetBy(user.Email).Returns(user);
            _registrationRepository.GetBy(Arg.Any<Guid>(), user.Email).ReturnsNull();

            var appUser = FakeAppUser.For(user).WithClaims("admin");
            _um.FindByNameAsync(user.Email).Returns(Task.FromResult(appUser));


            // Act 
            var numberOfRegistrations = user.Registrations.Count;
            var result = await _sut.DeleteAsync(registrationId);

            // Assert 
            result.Should().BeOfType<BadRequestResult>();

            user.Registrations.Count.Should().Be(numberOfRegistrations);
            _userRepository.Received().GetBy(user.Email);
            _registrationRepository.Received().GetBy(registrationId, user.Email);
            _registrationRepository.DidNotReceive().Delete(Arg.Any<Registration>(), user.Email);
        }
        public async Task Delete_LoggedInUserWithGoodRegistration_ShouldDeleteRegistrationAndReturnsOk()
        {
            // Arrange 
            var user = DummyData.UserFaker.Generate();
            var registration = user.Registrations.Last();

            _sut.ControllerContext = FakeControllerContext.For(user);

            _userRepository.GetBy(user.Email).Returns(user);
            _registrationRepository.GetBy(registration.Id, user.Email).Returns(registration);

            var appUser = FakeAppUser.For(user).WithClaims("admin");
            _um.FindByNameAsync(user.Email).Returns(Task.FromResult(appUser));

            // Act 
            var result = await _sut.DeleteAsync(registration.Id);

            // Assert 
            result.Should().BeOfType<OkObjectResult>()
                .Which.Value.Should().BeEquivalentTo(
                    registration,
                    options => options.Using(new EnumAsStringAssertionRule()) //treat enums as strings
                );


            _userRepository.Received().GetBy(user.Email);
            _registrationRepository.Received().Delete(registration, user.Email);
        }
        public void Post_RouteNotFound_ReturnsBadRequest()
        {
            // Arrange 
            var route = DummyData.RouteFaker.Generate();
            var user = DummyData.UserFaker.Generate();
            var routeRegistrationDTO = DummyData.RouteRegistrationDTOFaker.Generate();
            routeRegistrationDTO.OrderedShirt = true;
            routeRegistrationDTO.RouteId = route.Id;
            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);
            _routeRepository.GetBy(route.Id).ReturnsNull(); //!
            _validator.SetupPass();

            // Act 
            var numberOfRegistrations = user.Registrations.Count;
            var result = _sut.Post(routeRegistrationDTO);

            // Assert 
            result.Should().BeOfType<NotFoundObjectResult>();

            _userRepository.Received().GetBy(user.Email);
            _routeRepository.Received().GetBy(route.Id);

            user.Registrations.Count.Should().Be(numberOfRegistrations);
        }
コード例 #9
0
        public void GetProfile_UserLoggedIn_ReturnsBadRequestResult()
        {
            // Arrange
            var user = DummyData.UserFaker.Generate();

            _sut.ControllerContext = FakeControllerContext.GetLoggedInUserContextFor(user);
            _userRepository.GetBy(user.Email).ReturnsNull();

            // Act
            var result = _sut.Get();

            // Assert
            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #10
0
        public async Task DeleteProfile_UserNotFound_FailsAndReturnsBadRequestResult()
        {
            // Arrange
            var user = DummyData.UserFaker.Generate();

            _sut.ControllerContext = FakeControllerContext.GetLoggedInUserContextFor(user);
            _userRepository.GetBy(user.Email).ReturnsNull();

            // Act
            var result = await _sut.Delete();

            // Assert
            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #11
0
        public void GetProfile_UserLoggedIn_ReceivesUser()
        {
            // Arrange
            var user = DummyData.UserFaker.Generate();

            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);

            // Act
            var meResult = _sut.Get();

            // Assert
            meResult.Should().BeOfType <OkObjectResult>();
            _userRepository.Received().GetBy(user.Email);
        }
コード例 #12
0
        public void IndexListNothing()
        {
            var fishRepository = new FishRepositoryMock().GetUserRepoMockedInstance();
            var fishController = new FishController(fishRepository)
            {
                ControllerContext = FakeControllerContext.GetContextWithMockedNullSession()
            };

            var result = fishController.Index();

            Assert.IsInstanceOfType(result, typeof(ViewResult));
            var model = (FishListViewModel)((ViewResult)result).Model;

            Assert.AreEqual(null, model.Fishes);
        }
コード例 #13
0
        public void GetProfile_UserLoggedIn_ReturnsUser()
        {
            // Arrange
            var user = DummyData.UserFaker.Generate();

            _sut.ControllerContext = FakeControllerContext.GetLoggedInUserContextFor(user);
            _userRepository.GetBy(user.Email).Returns(user);

            // Act
            var result = _sut.Get();

            // Assert
            result.Should().BeOkObjectEquivalentTo(user.MapToDTO());
            _userRepository.Received().GetBy(user.Email);
        }
コード例 #14
0
        public async Task UpdateProfile_ValidationFailed_ShouldReturnBadRequest()
        {
            // Arrange
            var updateProfileDTO = DummyData.ProfileDTOFaker.Generate();
            var user             = DummyData.UserFaker.Generate();

            _sut.ControllerContext = FakeControllerContext.GetLoggedInUserContextFor(user);
            _profileValidator.SetupFail();

            // Act
            var result = await _sut.Update(updateProfileDTO);

            // Assert
            result.Should().BeOfType <BadRequestObjectResult>();
        }
コード例 #15
0
        public void Logout()
        {
            var userRepository = new UserRepositoryMock().GetUserRepoMockedInstance();
            var authProvider   = new Mock <FormsAuthProvider>();

            authProvider.Setup(m => m.SignOut());
            var accountController = new AccountController(authProvider.Object, userRepository)
            {
                ControllerContext = FakeControllerContext.GetContextWithMockedSession()
            };

            var result = accountController.LogOut();

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
        }
コード例 #16
0
        public void EditWithNoImage()
        {
            var fishRepository = new FishRepositoryMock().GetUserRepoMockedInstance();
            var fishController = new FishController(fishRepository)
            {
                ControllerContext = FakeControllerContext.GetContextWithMockedSession()
            };

            var fish = new Fish {
                FishId = 1, UserId = 1, Name = "Lüfer", Price = 15.90, ImageData = Encoding.UTF8.GetBytes("LüferFoto"), ImageMimeType = "image/png"
            };
            var result = fishController.Edit(fish, null);

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
        }
        public void GetLast_NoRegistrations_ReturnsNotFound()
        {
            // Arrange 
            var user = DummyData.UserFaker.Generate();
            user.Registrations = new List<Registration>(); //empty

            _sut.ControllerContext = FakeControllerContext.For(user);

            _userRepository.GetBy(user.Email).Returns(user);
            _registrationRepository.GetLast(user.Email).ReturnsNull();

            //Act
            var result = _sut.GetLast();

            // Assert 
            result.Should().BeOfType<NotFoundObjectResult>();
        }
コード例 #18
0
        public void IndexListAllFishes()
        {
            var fishRepository = new FishRepositoryMock().GetUserRepoMockedInstance();
            var fishController = new FishController(fishRepository)
            {
                ControllerContext = FakeControllerContext.GetContextWithMockedSession()
            };

            var result = fishController.Index();

            Assert.IsInstanceOfType(result, typeof(ViewResult));
            var model = (FishListViewModel)((ViewResult)result).Model;

            Assert.AreEqual(3, model.Fishes.Count());
            Assert.AreEqual("Lüfer", model.Fishes.ElementAt(0).Name);
            Assert.AreEqual("Palamut", model.Fishes.ElementAt(2).Name);
        }
コード例 #19
0
        public async Task UpdateProfile_UserNotFound_ShouldReturnBadRequest()
        {
            // Arrange
            var updateProfileDTO = DummyData.ProfileDTOFaker.Generate();
            var user             = DummyData.UserFaker.Generate();
            var identityUser     = user.MapToIdentityUser();

            _um.FindByNameAsync(identityUser.Email).Returns(identityUser);
            _profileValidator.SetupPass();
            _sut.ControllerContext = FakeControllerContext.GetLoggedInUserContextFor(user);
            _userRepository.GetBy(user.Email).ReturnsNull();

            // Act
            var result = await _sut.Update(updateProfileDTO);

            // Assert
            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #20
0
        public void LoginSuccess()
        {
            var model = new LoginViewModel {
                Email = "*****@*****.**", Password = "******"
            };
            var userRepository = new UserRepositoryMock().GetUserRepoMockedInstance();
            var authProvider   = new Mock <FormsAuthProvider>();

            authProvider.Setup(m => m.Authenticate(model.Email, model.Password)).Returns(true);
            var accountController = new AccountController(authProvider.Object, userRepository)
            {
                ControllerContext = FakeControllerContext.GetContextWithMockedSession()
            };

            var result = accountController.Login(model, "/Fish/Index");

            Assert.IsInstanceOfType(result, typeof(RedirectResult));
        }
コード例 #21
0
        public async Task DeleteProfile_ProfileDeleted_Succes()
        {
            // Arrange
            var user   = DummyData.UserFaker.Generate();
            var idUser = FakeAppUser.For(user);

            _um.FindByNameAsync(idUser.Email).Returns(idUser);
            _um.DeleteAsync(idUser).Returns(IdentityResult.Success);
            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);

            // Act
            var result = await _sut.Delete();

            // Assert
            result.Should().BeOfType <OkResult>();
            _userRepository.Received().Delete(user);
        }
        public void GetAll_AtLeastOneRegistration_ReturnsAllRegistrations()
        {
            // Arrange 
            var user = DummyData.UserFaker.Generate();

            _sut.ControllerContext = FakeControllerContext.For(user);

            _userRepository.GetBy(user.Email).Returns(user);
            _registrationRepository.GetAllFromUser(user.Email).Returns(user.Registrations);

            //Act
            var result = _sut.GetAllAsync();

            // Assert 
            result.Should().BeOfType<OkObjectResult>()
                .Which.Value.Should().BeEquivalentTo(
                    user.Registrations,
                    options => options.Using(new EnumAsStringAssertionRule()) //treat enums as strings
                );
        }
コード例 #23
0
        public void TestServerListHappyPath()
        {
            // in an actual desktop app this will need to be setup as static
            var cookieContainer = new System.Net.CookieContainer();

            using (var handler = new System.Net.Http.HttpClientHandler()
            {
                CookieContainer = cookieContainer
            })
                using (var client = new System.Net.Http.HttpClient(handler))
                {
                    var header = new NameValueCollection();
                    header.Add("VpnAuthToken", Setup.token1);
                    header.Add("VpnUserId", Setup.userid.ToString());

                    var mock = new Mock <Majorsilence.Vpn.Site.Helpers.ISessionVariables>();
                    mock.SetupAllProperties();

                    Majorsilence.Vpn.Site.Helpers.ISessionVariables sessionVars = mock.Object;
                    var controller = new Majorsilence.Vpn.Site.Controllers.ApiV2Controller(sessionVars);

                    FakeControllerContext.SetContext(controller, header);

                    var data = controller.Servers();
                    Assert.That(controller.Response.StatusCode, Is.EqualTo((int)System.Net.HttpStatusCode.OK));


                    var deserializedContent = Newtonsoft.Json.JsonConvert.DeserializeObject <IEnumerable <Majorsilence.Vpn.Logic.Accounts.UserServerDetailsInfo> >(data.Content);

                    Assert.That(deserializedContent.Count() > 1);


                    var defaultVagrantServer = (from a in deserializedContent
                                                where a.Address == "127.0.0.1" &&
                                                a.VpnServerName == "default vagrant testing vpn authority"
                                                select a);


                    Assert.That(defaultVagrantServer.Count() == 1);
                }
        }
コード例 #24
0
        public async Task UpdateProfile_ProfileUpdated_Success()
        {
            // Arrange
            var updateProfileDTO = DummyData.ProfileDTOFaker.Generate();
            var user             = DummyData.UserFaker.Generate();
            var identityUser     = user.MapToIdentityUser();

            _profileValidator.SetupPass();
            _um.FindByNameAsync(identityUser.Email).Returns(identityUser);
            _um.UpdateAsync(identityUser).Returns(IdentityResult.Success);
            _sut.ControllerContext = FakeControllerContext.GetLoggedInUserContextFor(user);
            _userRepository.GetBy(user.Email).Returns(user);

            // Act
            var result = await _sut.Update(updateProfileDTO);

            // Assert
            result.Should().BeOkObjectEquivalentTo(user.MapToDTO());
            _userRepository.Received().Update(user);
            _userRepository.Received().SaveChanges();
        }
        public void CheckCurrentRegistered_LastRouteInPast_ReturnsFalse()
        {
            // Arrange 
            var user = DummyData.UserFaker.Generate();
            var registration = user.Registrations.Last();
            var route = new Route { Date = DateTime.Today.AddDays(-1), Id = registration.RouteId };

            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);
            _registrationRepository.GetLast(user.Email).Returns(registration);
            _routeRepository.GetBy(registration.RouteId).Returns(route);

            // Act 
            var result = _sut.CheckCurrentRegistered();

            // Assert 
            result.Should().BeOfType<OkObjectResult>().Which.Value.Should().Be(false);

            _userRepository.Received().GetBy(user.Email);
            _registrationRepository.Received().GetLast(user.Email);
            _routeRepository.Received().GetBy(registration.RouteId);
        }
コード例 #26
0
ファイル: Setup.cs プロジェクト: majorsilence/vpn
        private void RetrieveLoginTokenAndAssert()
        {
            var peterAccount = new Majorsilence.Vpn.Logic.Accounts.CreateAccount(
                new Majorsilence.Vpn.Logic.Accounts.CreateAccountInfo()
            {
                Email           = emailAddress,
                EmailConfirm    = emailAddress,
                Firstname       = "Peter",
                Lastname        = "Gill",
                Password        = password,
                PasswordConfirm = password,
                BetaKey         = betaKey
            }
                , true, Majorsilence.Vpn.Logic.InitializeSettings.Email);

            userid = peterAccount.Execute();

            // in an actual desktop app this will need to be setup as static
            var cookieContainer = new System.Net.CookieContainer();

            using (var handler = new System.Net.Http.HttpClientHandler()
            {
                CookieContainer = cookieContainer
            })
                using (var client = new System.Net.Http.HttpClient(handler))
                {
                    var byteArray  = System.Text.Encoding.UTF8.GetBytes(string.Format("{0}:{1}", emailAddress, password));
                    var headerAuth = new System.Net.Http.Headers.AuthenticationHeaderValue(
                        "Basic", Convert.ToBase64String(byteArray));
                    client.DefaultRequestHeaders.Authorization = headerAuth;

                    var mock = new Mock <Majorsilence.Vpn.Site.Helpers.ISessionVariables>();
                    mock.SetupAllProperties();

                    Majorsilence.Vpn.Site.Helpers.ISessionVariables sessionVars = mock.Object;
                    var controller = new Majorsilence.Vpn.Site.Controllers.ApiV2Controller(sessionVars);

                    var header = new NameValueCollection();
                    header.Add("Authorization", headerAuth.ToString());


                    // See http://stephenwalther.com/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context

                    FakeControllerContext.SetContext(controller, header);


                    var blah = controller.Auth();
                    //controller.Auth();
                    System.Console.WriteLine(blah.Content);


                    // mock.VerifySet(framework => framework.IsAdmin = true);
                    Assert.That(sessionVars.LoggedIn, Is.EqualTo(true));
                    Assert.That(sessionVars.Username, Is.EqualTo(emailAddress));
                    Assert.That(sessionVars.UserId, Is.EqualTo(userid));
                    Assert.That(sessionVars.IsAdmin, Is.EqualTo(true));
                    Assert.That(controller.Response.StatusCode, Is.EqualTo((int)System.Net.HttpStatusCode.OK));


                    var content = Newtonsoft.Json.JsonConvert.DeserializeObject <Majorsilence.Vpn.Logic.DTO.ApiAuthResponse>(blah.Content);
                    Assert.That(string.IsNullOrEmpty(content.Token1), Is.EqualTo(false));
                    Assert.That(string.IsNullOrEmpty(content.Token2), Is.EqualTo(false));

                    Assert.That(content.Token1ExpireUtc, Is.GreaterThan(DateTime.UtcNow));
                    Assert.That(content.Token1ExpireUtc, Is.LessThan(DateTime.UtcNow.AddDays(1)));

                    Assert.That(content.Token2ExpireUtc, Is.GreaterThan(DateTime.UtcNow.AddDays(1)));
                    Assert.That(content.Token2ExpireUtc, Is.LessThan(DateTime.UtcNow.AddDays(2)));

                    token1 = content.Token1;
                    token2 = content.Token2;

                    // See http://haacked.com/archive/2007/06/19/unit-tests-web-code-without-a-web-server-using-httpsimulator.aspx/

                    // var responseString = response.Content.ReadAsStringAsync();
                }
        }