Exemple #1
0
        public void CanCreateControllerWithNoArgs()
        {
            _builder.QueryString["Variable"] = "Value";
            var testController = _builder.CreateController <TestHelperController>();

            Assert.AreEqual("Value", testController.Request.QueryString["Variable"]);
        }
        public void US05_1_The_isInRole_method_should_return_the_correct_value()
        {
            var roles     = new string[] { "Administrators" };
            var usersList = new List <ApplicationUser>
            {
                new ApplicationUser()
                {
                    Id             = "12345",
                    UserName       = TestUtilities.ComputeMd5Hash("012345678910"),
                    GivenName      = "Grégory Raoul",
                    SurName        = "Hermans",
                    FullName       = "Grégory Hermans",
                    Email          = null,
                    EmailConfirmed = false,
                    SecurityStamp  = Guid.NewGuid().ToString()
                }
            };
            var controllerBuilder = new TestControllerBuilder()
            {
                UsersList     = usersList,
                AssignedRoles = roles
            };
            var controller = controllerBuilder.CreateController <AccountController>();

            Assert.IsTrue(controller.HttpContext.User.IsInRole("Administrators"), "The user should be in the Administrators group.");
        }
        public async Task US03_2_First_login_serial_number_known()
        {
            // Arrange
            var controllerBuilder = new TestControllerBuilder()
            {
                CertificateSubject = "SERIALNUMBER=012345678910,G=Grégory Raoul,SN=Hermans,CN=Grégory Hermans (Authentication),C=BE"
            };
            var user = controllerBuilder.UsersList[0];

            user.Id             = "12345";
            user.GivenName      = null;
            user.SurName        = null;
            user.FullName       = null;
            user.Email          = null;
            user.EmailConfirmed = false;
            var controller = controllerBuilder.CreateController <AccountController>();

            // Act
            var result = await controller.Login(string.Empty);

            // Assert
            Assert.IsTrue(controllerBuilder.AuthenticationManager.SignInCalledCount > 0, "The user should be signed in.");
            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult), "The action result should be a redirect to /account/register");
            var redirectToRouteResult = result as RedirectToRouteResult;

            Assert.AreEqual(null, redirectToRouteResult.RouteValues["controller"], "The action result should be a redirect to /account/register");
            Assert.AreEqual("Register", redirectToRouteResult.RouteValues["action"], "The action result should be a redirect to /account/register");
            Assert.AreEqual(TestUtilities.ComputeMd5Hash("012345678910"), controllerBuilder.UsersList[0].UserName);
            Assert.AreEqual("Grégory Raoul", controllerBuilder.UsersList[0].GivenName);
            Assert.AreEqual("Hermans", controllerBuilder.UsersList[0].SurName);
            Assert.AreEqual("Grégory Hermans", controllerBuilder.UsersList[0].FullName);
        }
 public void Setup()
 {
     this._builder = new TestControllerBuilder();
     this._repository = MockRepository.GenerateMock<IRepository<IUser>>();
     this._runtimeSession = MockRepository.GenerateMock<IRuntimeSession>();
     this._sut = _builder.CreateController<SessionController>(this._runtimeSession, this._repository);
 }
 public void Setup()
 {
     this._builder = new TestControllerBuilder();
     this._runtimeSession = MockRepository.GenerateMock<IRuntimeSession>();
     this._bragRepository = MockRepository.GenerateMock<IRepository<IBrag>>();
     this._controller = _builder.CreateController<HomeController>(this._runtimeSession, this._bragRepository);
 }
        public async Task US02_6_Invalid_or_absent_eid_certificate()
        {
            // Subject empty = no client certificate sent
            var controllerBuilder = new TestControllerBuilder()
            {
                CertificateSubject = string.Empty
            };
            var controller = controllerBuilder.CreateController <AccountController>();

            var result = await controller.Login("/some/url");

            Assert.IsInstanceOfType(result, typeof(HttpUnauthorizedResult), "In case of a missing client certificate, the login action should send back an unauthorized error code.");
        }
Exemple #7
0
        public void Init()
        {
            var builder = new TestControllerBuilder();

            builder.HttpContext.Request.Expect(r => r.Cookies).Return(new HttpCookieCollection());
            builder.HttpContext.Response.Expect(r => r.Cookies).Return(new HttpCookieCollection());
            var storage    = new StorageContext(new Storage(azureAccountName, azureAccountKey));
            var controller = builder.CreateController <UserController>(storage);

            this.Builder    = builder;
            this.Storage    = storage;
            this.Controller = controller;
        }
        public async Task US02_1_and_2_Login_via_the_menu_link()
        {
            // Arrange
            var controllerBuilder = new TestControllerBuilder();
            var controller        = controllerBuilder.CreateController <AccountController>();

            // Act
            var result = await controller.Login(string.Empty);

            // Assert
            Assert.IsTrue(controllerBuilder.AuthenticationManager.SignInCalledCount > 0, "The user has not been signed in.");
            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult), "The action result should be a redirect to /home/index");
            var redirectToRouteResult = result as RedirectToRouteResult;

            Assert.AreEqual("Home", redirectToRouteResult.RouteValues["controller"], "The action result should be a redirect to /home/index");
            Assert.AreEqual("Index", redirectToRouteResult.RouteValues["action"], "The action result should be a redirect to /home/index");
        }
        public async Task US03_4_5_User_should_be_stay_on_registration_page_when_there_are_errors()
        {
            var userEmail = "gregory.hermmans.bps.lan";
            var returnUrl = "/some/url";
            var userName  = TestUtilities.ComputeMd5Hash("012345678910");
            var userId    = "12345";
            var roles     = new string[] { };
            var usersList = new List <ApplicationUser>
            {
                new ApplicationUser()
                {
                    Id             = userId,
                    UserName       = userName,
                    GivenName      = "Grégory Raoul",
                    SurName        = "Hermans",
                    FullName       = "Grégory Hermans",
                    Email          = null,
                    EmailConfirmed = false,
                    SecurityStamp  = Guid.NewGuid().ToString()
                }
            };
            var controllerBuilder = new TestControllerBuilder()
            {
                UsersList     = usersList,
                AssignedRoles = roles
            };
            var controller = controllerBuilder.CreateController <AccountController>();
            var model      = new RegisterViewModel()
            {
                Email = userEmail, ReturnUrl = returnUrl
            };

            controller.ModelState.AddModelError("Email", "Le champ Adresse de messagerie n'est pas une adresse électronique valide.");
            var result = await controller.Register(model);

            var userIndDB = usersList.First(u => u.Id == "12345");

            Assert.AreNotEqual(userEmail, userIndDB.Email, "The e-mail should not be changed in the database.");
            Assert.IsFalse(userIndDB.EmailConfirmed, "The e-mail should not be marked as confirmed in the DB.");
            Assert.IsInstanceOfType(result, typeof(ViewResult), "The action result should be a redirect to the same view.");
            var viewResult = result as ViewResult;

            Assert.AreEqual(string.Empty, viewResult.ViewName, "The action result should be a redirect to the same view.");
        }
        public async Task US02_5_Unknown_user()
        {
            // Arrange
            var controllerBuilder = new TestControllerBuilder()
            {
                CertificateSubject = "SERIALNUMBER=109876543210,G=Unknown,SN=Person,CN=Unknown Person (Authentication),C=BE"
            };
            var controller = controllerBuilder.CreateController <AccountController>();

            // Act
            var result = await controller.Login("/form/index");

            // Assert
            Assert.IsTrue(controllerBuilder.AuthenticationManager.SignInCalledCount == 0, "The user should not have been signed in.");
            Assert.IsInstanceOfType(result, typeof(ViewResult), "The action result should be a redirect to the login view.");
            var viewResult = result as ViewResult;

            Assert.AreEqual(string.Empty, viewResult.ViewName, "The action result should be a redirect to the login view.");
        }
        public async Task US03_3_Register_email()
        {
            var userEmail = "*****@*****.**";
            var returnUrl = "/some/url";
            var userName  = TestUtilities.ComputeMd5Hash("012345678910");
            var roles     = new string[] { };
            var userId    = "12345";
            var usersList = new List <ApplicationUser>
            {
                new ApplicationUser()
                {
                    Id             = userId,
                    UserName       = userName,
                    GivenName      = "Grégory Raoul",
                    SurName        = "Hermans",
                    FullName       = "Grégory Hermans",
                    Email          = userEmail,
                    EmailConfirmed = false,
                    SecurityStamp  = Guid.NewGuid().ToString()
                }
            };
            var controllerBuilder = new TestControllerBuilder()
            {
                UsersList     = usersList,
                AssignedRoles = roles
            };
            var controller = controllerBuilder.CreateController <AccountController>();
            var model      = new RegisterViewModel()
            {
                Email = userEmail, ReturnUrl = returnUrl
            };
            var result = await controller.Register(model);

            var userIndDB = usersList.First(u => u.Id == "12345");

            Assert.AreEqual(userEmail, userIndDB.Email, "The e-mail should be saved in the database.");
            Assert.IsTrue(userIndDB.EmailConfirmed, "The e-mail should be marked as confirmed in the DB.");
            Assert.IsInstanceOfType(result, typeof(RedirectResult), "The action result should be a redirect to the original url.");
            var redirectResult = result as RedirectResult;

            Assert.AreEqual(returnUrl, redirectResult.Url, "The action result should be a redirect to the original url.");
        }
        public async Task US02_4_Redirect_to_original_destination_after_login()
        {
            // Arrange
            var authenticationManager = new FakeAuthenticationManager();
            var controllerBuilder     = new TestControllerBuilder()
            {
                AuthenticationManager = authenticationManager
            };
            var controller = controllerBuilder.CreateController <AccountController>();

            // Act
            var result = await controller.Login("/form/index");

            // Assert
            Assert.IsTrue(authenticationManager.SignInCalledCount > 0, "The user has not been signed in.");
            Assert.IsInstanceOfType(result, typeof(RedirectResult), "The action result should be a redirect to /form/index");
            var redirectResult = result as RedirectResult;

            Assert.AreEqual("/form/index", redirectResult.Url, "The action result should be a redirect to /form/index");
        }
        public void Setup()
        {
            _builder = new TestControllerBuilder();

            _controller = _builder.CreateController <SampleController>();

            //Required by .NET4.5+ to invoke actions
            System.Web.HttpContext.Current =
                new System.Web.HttpContext(new System.Web.HttpRequest("foo", "http://tempuri.org/foo", ""),
                                           new System.Web.HttpResponse(new StringWriter()));

            ServiceLocatorInitializer.InitWithFakeDBContext();

            _dbContext = SmartServiceLocator <IDbContext> .GetService();

            _dbContext.Stub(x => x.IsActive).Repeat.Any().Return(true);
            _dbContext.Stub(x => x.BeginTransaction()).Repeat.Any().WhenCalled(x => _beginTransactionCount++);
            _dbContext.Stub(x => x.CommitTransaction()).Repeat.Any().WhenCalled(x => _commitTransactionCount++);
            _dbContext.Stub(x => x.CloseSession()).Repeat.Any().WhenCalled(x => _closeSessionCount++);
        }
        public async Task US03_1_First_login_given_name_and_surname_known()
        {
            // Arrange
            var usersList = new List <ApplicationUser>
            {
                new ApplicationUser()
                {
                    Id             = "12345",
                    UserName       = null,
                    GivenName      = "gregory",
                    SurName        = "hermans",
                    Email          = "*****@*****.**",
                    EmailConfirmed = false,
                    SecurityStamp  = Guid.NewGuid().ToString()
                }
            };
            var controllerBuilder = new TestControllerBuilder()
            {
                UsersList          = usersList,
                CertificateSubject = "SERIALNUMBER=012345678910,G=Grégory Raoul,SN=Hermans,CN=Grégory Hermans (Authentication),C=BE"
            };
            var controller = controllerBuilder.CreateController <AccountController>();

            // Act
            var result = await controller.Login(string.Empty);

            // Assert
            Assert.IsTrue(controllerBuilder.AuthenticationManager.SignInCalledCount > 0, "The user should be signed in.");
            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult), "The action result should be a redirect to /account/register");
            var redirectToRouteResult = result as RedirectToRouteResult;

            Assert.AreEqual(null, redirectToRouteResult.RouteValues["controller"], "The action result should be a redirect to /account/register");
            Assert.AreEqual("Register", redirectToRouteResult.RouteValues["action"], "The action result should be a redirect to /account/register");
            Assert.AreEqual(TestUtilities.ComputeMd5Hash("012345678910"), usersList[0].UserName);
            Assert.AreEqual("Grégory Raoul", usersList[0].GivenName);
            Assert.AreEqual("Hermans", usersList[0].SurName);
            Assert.AreEqual("Grégory Hermans", usersList[0].FullName);
        }
        public void Should_request_correct_repository_type()
        {
            const int id = 1;
            const string propertyName = "entity";

            var builder = new TestControllerBuilder();
            var controllerContext = new ControllerContext(builder.HttpContext, builder.RouteData, builder.CreateController<FakeController>());
            var metaDataProvider = new DataAnnotationsModelMetadataProvider();
            var bindingContext = new ModelBindingContext
                                     {
                                         ModelName = propertyName,
                                         ValueProvider = new FormCollection
                                                             {
                                                                 {propertyName, id.ToString()}
                                                             },
                                         ModelMetadata = new ModelMetadata(metaDataProvider, null, null, typeof(TestEntity), propertyName)
                                     };
            _entityBinder.BindModel(controllerContext, bindingContext);
            var requestedType = _resolver.GetArgumentsForCallsMadeOn(m => m.GetService(null)).FirstOf<Type>();
            var requestedId = _repository.GetArgumentsForCallsMadeOn(m => m.GetById(0)).FirstOf<int>();
            Assert.AreEqual(typeof(IRepository<TestEntity>), requestedType);
            Assert.AreEqual(id, requestedId);
        }
        public void Setup()
        {
            _builder = new TestControllerBuilder();

            _controller = _builder.CreateController<SampleController>();

            ServiceLocatorInitializer.InitWithFakeDBContext();

            _dbContext = SmartServiceLocator<IDbContext>.GetService();
        }
 public void Initialize()
 {
     TestControllerBuilder builder = new TestControllerBuilder();
     _homecontroller = builder.CreateController<HomeController>();
 }
        public void Setup()
        {
            _builder = new TestControllerBuilder();

            _controller = _builder.CreateController<SampleController>();

            //Required by .NET4.5+ to invoke actions
            System.Web.HttpContext.Current =
                new System.Web.HttpContext(new System.Web.HttpRequest("foo", "http://tempuri.org/foo", ""),
                                           new System.Web.HttpResponse(new StringWriter()));

            ServiceLocatorInitializer.InitWithFakeDBContext();

            _dbContext = SmartServiceLocator<IDbContext>.GetService();

            _dbContext.Stub(x => x.IsActive).Repeat.Any().Return(true);
            _dbContext.Stub(x => x.BeginTransaction()).Repeat.Any().WhenCalled(x => _beginTransactionCount++);
            _dbContext.Stub(x => x.CommitTransaction()).Repeat.Any().WhenCalled(x => _commitTransactionCount++);
            _dbContext.Stub(x => x.CloseSession()).Repeat.Any().WhenCalled(x=> _closeSessionCount++);
        }
        public void Init()
        {
            var builder = new TestControllerBuilder();
            builder.HttpContext.Request.Expect(r => r.Cookies).Return(new HttpCookieCollection());
            builder.HttpContext.Response.Expect(r => r.Cookies).Return(new HttpCookieCollection());
            var storage = new StorageContext(new Storage(azureAccountName, azureAccountKey));
            var controller = builder.CreateController<UserController>(storage);

            this.Builder = builder;
            this.Storage = storage;
            this.Controller = controller;
        }
 public void Initialize()
 {
     TestControllerBuilder builder = new TestControllerBuilder();
     mockservice = new Mock<IPurchaseService>();
     _purchasecontroller = builder.CreateController<PurchaseController>(mockservice.Object);
 }