Ejemplo n.º 1
0
        public void CreateParcel_Should_Throw_Exception_When_Current_User_Is_Not_Purchaser()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var createdParcel =
                new DTO.Parcel
            {
                RublesPerDollar          = 31.5m,
                PurchaserSpentOnDelivery = 149m,
                TrackingNumber           = "US867958674896Z",
                SentDate    = new DateTime(2013, 5, 31),
                Distributor = container.Get <IDtoService>().CreateUser(UserMockFactory.Olesya),
                Comments    = "Some comments"
            };

            var parcelService = container.Get <IParcelService>();

            // Act
            // Assert
            ExceptionAssert.Throw <InvalidOperationException>(
                () => parcelService.CreateParcel(createdParcel),
                "Only purchaser can create parcel.");
        }
Ejemplo n.º 2
0
        public void ResetPassword_Should_Reset_Password_For_User()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var changedUser = dtoService.CreateUser(UserMockFactory.Olesya);

            container.Remove <IPasswordGeneratorService>();
            var passwordGeneratorServiceMock = new Mock <IPasswordGeneratorService>();

            passwordGeneratorServiceMock
            .Setup(m => m.GenerateTemporaryPassword(changedUser.Login))
            .Returns(EncryptServiceMockFactory.NewPasswordData.Password);
            container.SetConstant <IPasswordGeneratorService, IPasswordGeneratorService>(passwordGeneratorServiceMock.Object);

            // Act
            securityService.ResetPassword(changedUser);

            // Assert
            securityService.LogOut();
            securityService.LogIn(changedUser.Login, EncryptServiceMockFactory.NewPasswordData.Password);
        }
Ejemplo n.º 3
0
        public void ResetPassword_Should_Throw_Exception_When_User_Is_Inactive()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var changedUser = dtoService.CreateUser(UserMockFactory.Andrey);

            container.Remove <IPasswordGeneratorService>();
            var passwordGeneratorServiceMock = new Mock <IPasswordGeneratorService>();

            passwordGeneratorServiceMock
            .Setup(m => m.GenerateTemporaryPassword(changedUser.Login))
            .Returns(EncryptServiceMockFactory.NewPasswordData.Password);
            container.SetConstant <IPasswordGeneratorService, IPasswordGeneratorService>(passwordGeneratorServiceMock.Object);

            // Act
            // Assert
            ExceptionAssert.Throw <SecurityServiceException>(
                () => securityService.ResetPassword(changedUser),
                "Пользователь отключен администратором.");
        }
Ejemplo n.º 4
0
        public void UpdateUser_Should_Throw_Exception_When_User_Tries_Remove_Administrator_Role()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var updatedUser =
                new DTO.User
            {
                Id        = UserMockFactory.Jenya.Id,
                Email     = "*****@*****.**",
                FirstName = "New First Name",
                LastName  = "New Last Name",
                Login     = "******",
                Active    = true,
                Roles     =
                    new[]
                {
                    dtoService.CreateRole(RoleMockFactory.Purchaser),
                    dtoService.CreateRole(RoleMockFactory.Distributor)
                }
            };

            // Act
            // Assert
            ExceptionAssert.Throw <SecurityServiceException>(
                () => securityService.UpdateUser(updatedUser),
                "Пользователь не может удалить роль администратора у себя.");
        }
Ejemplo n.º 5
0
        public void GetUsers_Should_Return_All_Users_When_Filter_Is_Empty()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            // Act
            var users = securityService.GetUsers(null);

            // Assert
            var expectedUsers =
                new[]
            {
                dtoService.CreateUser(UserMockFactory.Andrey),
                dtoService.CreateUser(UserMockFactory.Jenya),
                dtoService.CreateUser(UserMockFactory.Olesya),
                dtoService.CreateUser(UserMockFactory.Diana)
            };

            CollectionAssert.AreEqual(expectedUsers, users);
        }
Ejemplo n.º 6
0
        public void UpdateSize_Should_Throw_Exception_When_Size_With_The_Same_Name_Brand_SubCategory_Already_Exists()
        {
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var updatedSize =
                new DTO.Size
            {
                Id          = SizeMockFactory.Carters_Boys_0_2_3M.Id,
                Name        = SizeMockFactory.TheChildrensPlace_Boys_0_2_0_3_Months.Name,
                Brand       = container.Get <IDtoService>().CreateBrand(SizeMockFactory.TheChildrensPlace_Boys_0_2_0_3_Months.Brand),
                SubCategory = container.Get <IDtoService>().CreateSubCategory(SizeMockFactory.TheChildrensPlace_Boys_0_2_0_3_Months.SubCategory),
                Weight      = "New Weight",
                Height      = "New Height",
                Active      = true
            };

            var sizeService = container.Get <ISizeService>();

            // Act
            // Assert
            ExceptionAssert.Throw <SizeServiceException>(
                () => sizeService.UpdateSize(updatedSize),
                "Размер с заданным названием уже существует для данной подкатегории и данного бренда.");
        }
Ejemplo n.º 7
0
        public void AvailableRoles_Should_Return_All_Roles()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogInGuest();

            var dtoService = container.Get <IDtoService>();

            // Act
            var roles = securityService.AvailableRoles;

            // Assert
            var expectedRoles =
                new[]
            {
                dtoService.CreateRole(RoleMockFactory.Administrator),
                dtoService.CreateRole(RoleMockFactory.Purchaser),
                dtoService.CreateRole(RoleMockFactory.Seller),
                dtoService.CreateRole(RoleMockFactory.Distributor)
            };

            CollectionAssert.AreEqual(expectedRoles, roles);
        }
Ejemplo n.º 8
0
        public void UpdateProductSize_Should_Throw_Exception_When_Current_User_Is_Not_Seller()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Olesya.Login, EncryptServiceMockFactory.OlesyaPasswordData.Password);

            var size    = container.Get <IDtoService>().CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_Newborn);
            var product = container.Get <IDtoService>().CreateProduct(ProductMockFactory.TheChildrensPlace_Boys_TShirt);

            const decimal NEW_PRODUCT_SIZE_PRICE = 1200;

            var updatedProductSize =
                new DTO.ProductSize
            {
                Id      = ProductSizeMockFactory.Boys_Sweater_0_3_Months.Id,
                Size    = size,
                Product = product,
                Active  = false,
                Price   = NEW_PRODUCT_SIZE_PRICE
            };

            var productSizeService = container.Get <IProductSizeService>();

            // Act
            // Assert
            ExceptionAssert.Throw <InvalidOperationException>(
                () => productSizeService.UpdateProductSize(updatedProductSize),
                "Only seller can change product size.");
        }
Ejemplo n.º 9
0
        public void UpdateProductSize_Should_Throw_Exception_When_ProductSize_With_The_Same_Product_Size_Already_Exists()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var size    = container.Get <IDtoService>().CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_0_3_Months);
            var product = container.Get <IDtoService>().CreateProduct(ProductMockFactory.TheChildrensPlace_Boys_Sweater);

            const decimal NEW_PRODUCT_SIZE_PRICE = 1200;

            var updatedProductSize =
                new DTO.ProductSize
            {
                Id      = ProductSizeMockFactory.Girls_Sweater_0_3_Months.Id,
                Size    = size,
                Product = product,
                Active  = true,
                Price   = NEW_PRODUCT_SIZE_PRICE
            };

            var productSizeService = container.Get <IProductSizeService>();

            // Act
            // Assert
            ExceptionAssert.Throw <ProductSizeServiceException>(
                () => productSizeService.UpdateProductSize(updatedProductSize),
                "Размер товара с заданным размером уже существует для данного товара.");
        }
Ejemplo n.º 10
0
        public void GetParcels_Should_Return_Parcels_With_Orders_Created_By_Current_User_When_Current_User_Is_Seller()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.DianaDistributor.Active   = false;
            UserRoleMockFactory.DianaPurchaser.Active     = false;
            UserRoleMockFactory.DianaAdministrator.Active = false;
            UserRoleMockFactory.DianaSeller.Active        = true;
            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService    = container.Get <IDtoService>();
            var parcelService = container.Get <IParcelService>();

            // Act
            var parcels =
                parcelService.GetParcels(
                    TimeServiceMockFactory.Date1, TimeServiceMockFactory.Date5, null);

            // Assert
            var expectedParcels =
                new[]
            {
                dtoService.CreateParcel(ParcelMockFactory.Parcel_2),
                dtoService.CreateParcel(ParcelMockFactory.Parcel_3)
            };

            CollectionAssert.AreEqual(expectedParcels, parcels);
        }
Ejemplo n.º 11
0
        public void GetBrands_Should_Return_Brands_By_Filter()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService   = container.Get <IDtoService>();
            var brandService = container.Get <IBrandService>();

            // Act
            var brands = brandService.GetBrands("a");

            // Assert
            var expectedBrands =
                new[]
            {
                dtoService.CreateBrand(BrandMockFactory.Carters),
                dtoService.CreateBrand(BrandMockFactory.Crazy8),
                dtoService.CreateBrand(BrandMockFactory.TheChildrensPlace)
            };

            CollectionAssert.AreEqual(expectedBrands, brands);
        }
Ejemplo n.º 12
0
        public void UpdateParcel_Should_Throw_Exception_When_Current_User_Is_Distributor_And_Parcel_Is_Assigned_To_Another_Distributor()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.OlesyaDistributor.Active   = true;
            UserRoleMockFactory.OlesyaPurchaser.Active     = false;
            UserRoleMockFactory.OlesyaAdministrator.Active = false;
            UserRoleMockFactory.OlesyaSeller.Active        = false;
            securityService.LogIn(UserMockFactory.Olesya.Login, EncryptServiceMockFactory.OlesyaPasswordData.Password);

            var updatedParcel =
                new DTO.Parcel
            {
                Id = ParcelMockFactory.Parcel_2.Id,
                RublesPerDollar          = 31.5m,
                PurchaserSpentOnDelivery = 149m,
                TrackingNumber           = "US867958674896Z",
                SentDate     = new DateTime(2013, 5, 31),
                Distributor  = container.Get <IDtoService>().CreateUser(UserMockFactory.Diana),
                Comments     = "Some comments",
                ReceivedDate = new DateTime(2013, 6, 30)
            };

            var parcelService = container.Get <IParcelService>();

            // Act
            // Assert
            ExceptionAssert.Throw <InvalidOperationException>(
                () => parcelService.UpdateParcel(updatedParcel),
                "Only purchaser and distributor can change parcel.");
        }
Ejemplo n.º 13
0
        public void UpdateParcel_Should_Update_Parcel_When_Current_User_Is_Purchaser_And_Distributor_And_Parcel_Is_Assigned_To_Another_Distributor()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.JenyaDistributor.Active   = true;
            UserRoleMockFactory.JenyaPurchaser.Active     = true;
            UserRoleMockFactory.JenyaAdministrator.Active = false;
            UserRoleMockFactory.JenyaSeller.Active        = false;
            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            const decimal RUBLES_PER_DOLLAR           = 31.5m;
            const decimal PURCHASER_SPENT_ON_DELIVERY = 149m;
            const string  TRACK_NUMBER = "US867958674896Z";
            var           sentDate     = new DateTime(2013, 5, 31);
            var           distributor  = container.Get <IDtoService>().CreateUser(UserMockFactory.Diana);
            const string  COMMENTS     = "Some comments";
            var           receivedDate = ParcelMockFactory.Parcel_1.ReceivedDate;
            var           createDate   = ParcelMockFactory.Parcel_1.CreateDate;
            var           createdBy    = ParcelMockFactory.Parcel_1.CreatedBy;


            var updatedParcel =
                new DTO.Parcel
            {
                Id = ParcelMockFactory.Parcel_1.Id,
                RublesPerDollar          = RUBLES_PER_DOLLAR,
                PurchaserSpentOnDelivery = PURCHASER_SPENT_ON_DELIVERY,
                TrackingNumber           = TRACK_NUMBER,
                SentDate     = sentDate,
                Distributor  = distributor,
                Comments     = COMMENTS,
                ReceivedDate = new DateTime(2013, 6, 30)
            };

            var parcelService     = container.Get <IParcelService>();
            var persistentService = container.Get <IPersistentService>();
            var timeService       = container.Get <ITimeService>();

            // Act
            parcelService.UpdateParcel(updatedParcel);

            // Assert
            var actualParcel = persistentService.GetEntityById <DataAccess.Parcel>(ParcelMockFactory.Parcel_1.Id);

            Assert.AreEqual(RUBLES_PER_DOLLAR, actualParcel.RublesPerDollar);
            Assert.AreEqual(PURCHASER_SPENT_ON_DELIVERY, actualParcel.PurchaserSpentOnDelivery);
            Assert.AreEqual(TRACK_NUMBER, actualParcel.TrackingNumber);
            Assert.AreEqual(sentDate, actualParcel.SentDate);
            Assert.AreEqual(distributor.Id, actualParcel.DistributorId);
            Assert.AreEqual(COMMENTS, actualParcel.Comments);
            Assert.AreEqual(receivedDate, actualParcel.ReceivedDate);
            Assert.AreEqual(createDate, actualParcel.CreateDate);
            Assert.AreEqual(timeService.UtcNow, actualParcel.ChangeDate);
            Assert.AreEqual(createdBy, actualParcel.CreatedBy);
            Assert.AreEqual(UserMockFactory.Jenya, actualParcel.ChangedBy);

            Assert.AreEqual(updatedParcel, container.Get <IDtoService>().CreateParcel(actualParcel));
        }
Ejemplo n.º 14
0
        public void GetParcels_Should_Return_Parcels_By_Dates()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService    = container.Get <IDtoService>();
            var parcelService = container.Get <IParcelService>();

            // Act
            var parcels =
                parcelService.GetParcels(
                    TimeServiceMockFactory.Date2, TimeServiceMockFactory.Date3, null);

            // Assert
            var expectedParcels =
                new[]
            {
                dtoService.CreateParcel(ParcelMockFactory.Parcel_1),
                dtoService.CreateParcel(ParcelMockFactory.Parcel_3)
            };

            CollectionAssert.AreEqual(expectedParcels, parcels);
        }
Ejemplo n.º 15
0
        public void GetActiveSizes_Should_Return_All_Active_Sizes_By_SubCategory_And_Brand()
        {
            // Arrange
            var container = ContainerMockFactory.Create();

            container.Get <ISecurityService>().LogInGuest();

            var dtoService = container.Get <IDtoService>();

            var subCategory = dtoService.CreateSubCategory(SubCategoryMockFactory.Boys_0_2);
            var brand       = dtoService.CreateBrand(BrandMockFactory.Carters);

            var sizeService = container.Get <ISizeService>();

            // Act
            var sizes = sizeService.GetActiveSizes(subCategory, brand);

            // Assert
            var expectedSizes =
                new[]
            {
                dtoService.CreateSize(SizeMockFactory.Carters_Boys_0_2_3M),
                dtoService.CreateSize(SizeMockFactory.Carters_Boys_0_2_6M)
            };

            CollectionAssert.AreEqual(expectedSizes, sizes);
        }
Ejemplo n.º 16
0
        public void GetProductSizesByProduct_Should_Return_ProductSizes_By_Filter()
        {
            // Arrange
            var container = ContainerMockFactory.Create();

            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService         = container.Get <IDtoService>();
            var productSizeService = container.Get <IProductSizeService>();

            var product = dtoService.CreateProduct(ProductMockFactory.TheChildrensPlace_Girls_Sweater);

            // Act
            var productSizes = productSizeService.GetProductSizes(product, "6");

            // Assert
            var expectedProductSizes =
                new[]
            {
                dtoService.CreateProductSize(ProductSizeMockFactory.Girls_Sweater_3_6_Months)
            };

            CollectionAssert.AreEqual(expectedProductSizes, productSizes);
        }
Ejemplo n.º 17
0
        public void UpdateSize_Should_Throw_Exception_When_Current_User_Is_Not_Seller()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Olesya.Login, EncryptServiceMockFactory.OlesyaPasswordData.Password);

            var updatedSize =
                new DTO.Size
            {
                Id          = SizeMockFactory.Carters_Boys_0_2_3M.Id,
                Name        = "New Size",
                SubCategory = container.Get <IDtoService>().CreateSubCategory(SubCategoryMockFactory.Girls_0_2),
                Brand       = container.Get <IDtoService>().CreateBrand(BrandMockFactory.Crazy8),
                Weight      = "New Weight",
                Height      = "New Height",
                Active      = true
            };

            var sizeService = container.Get <ISizeService>();

            // Act
            // Assert
            ExceptionAssert.Throw <InvalidOperationException>(
                () => sizeService.UpdateSize(updatedSize),
                "Only seller can change size.");
        }
Ejemplo n.º 18
0
        public void GetProductSizes_Should_Return_All_ProductSizes_When_Filter_Is_Empty()
        {
            // Arrange
            var container = ContainerMockFactory.Create();

            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService         = container.Get <IDtoService>();
            var productSizeService = container.Get <IProductSizeService>();

            // Act
            var productSizes = productSizeService.GetProductSizes(null);

            // Assert
            var expectedProductSizes =
                new[]
            {
                dtoService.CreateProductSize(ProductSizeMockFactory.Girls_Sweater_0_3_Months),
                dtoService.CreateProductSize(ProductSizeMockFactory.Girls_Sweater_3_6_Months),
                dtoService.CreateProductSize(ProductSizeMockFactory.Boys_Sweater_0_3_Months),
                dtoService.CreateProductSize(ProductSizeMockFactory.Boys_Sweater_3_6_Months)
            };

            CollectionAssert.AreEqual(expectedProductSizes, productSizes);
        }
Ejemplo n.º 19
0
        public void GetSizes_Should_Return_All_Sizes_When_Filter_Is_Empty()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService  = container.Get <IDtoService>();
            var sizeService = container.Get <ISizeService>();

            // Act
            var sizes = sizeService.GetSizes(null);

            // Assert
            var expectedSizes =
                new[]
            {
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_Newborn),
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_0_3_Months),
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_3_6_Months),
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Girls_0_2_Newborn),
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Girls_0_2_0_3_Months),
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Girls_0_2_3_6_Months),
                dtoService.CreateSize(SizeMockFactory.Carters_Boys_0_2_3M),
                dtoService.CreateSize(SizeMockFactory.Carters_Boys_0_2_6M),
                dtoService.CreateSize(SizeMockFactory.Carters_Girls_0_2_3M),
                dtoService.CreateSize(SizeMockFactory.Carters_Girls_0_2_6M)
            };

            CollectionAssert.AreEqual(expectedSizes, sizes);
        }
Ejemplo n.º 20
0
        public void GenerateParcelsReport_Should_Generate_Report_When_Current_User_Is_Distributor()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.OlesyaDistributor.Active   = true;
            UserRoleMockFactory.OlesyaPurchaser.Active     = false;
            UserRoleMockFactory.OlesyaAdministrator.Active = false;
            UserRoleMockFactory.OlesyaSeller.Active        = false;
            securityService.LogIn(UserMockFactory.Olesya.Login, EncryptServiceMockFactory.OlesyaPasswordData.Password);

            var reportService = container.Get <IReportService>();

            // Act
            var parcelReportItems = reportService.GenerateParcelsReport();

            // Assert
            var expectedParcelReportItems =
                new[]
            {
                GetParcelReportItem1()
            };

            CollectionAssert.AreEqual(expectedParcelReportItems, parcelReportItems);
        }
Ejemplo n.º 21
0
        public void UpdateUser_Should_Update_CurrentUser_When_CurrentUser_Updates_His_Data()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var updatedUser =
                new DTO.User
            {
                Id        = UserMockFactory.Jenya.Id,
                Email     = "*****@*****.**",
                FirstName = "New First Name",
                LastName  = "New Last Name",
                Login     = "******",
                Active    = true,
                Roles     =
                    new[]
                {
                    dtoService.CreateRole(RoleMockFactory.Administrator),
                    dtoService.CreateRole(RoleMockFactory.Distributor)
                }
            };

            // Act
            securityService.UpdateUser(updatedUser);

            // Assert
            Assert.AreEqual(updatedUser, securityService.CurrentUser);
            CollectionAssert.AreEqual(updatedUser.Roles, securityService.CurrentRoles);
        }
Ejemplo n.º 22
0
        public void GenerateDistributorsReport_Should_Generate_Report_When_Current_User_Is_Purchaser_And_Seller()
        {
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.DianaDistributor.Active   = true;
            UserRoleMockFactory.DianaPurchaser.Active     = false;
            UserRoleMockFactory.DianaAdministrator.Active = false;
            UserRoleMockFactory.DianaSeller.Active        = true;
            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var reportService = container.Get <IReportService>();

            // Act
            var distributorReportItems = reportService.GenerateDistributorsReport();

            // Assert
            var expectedDistributorReportItems =
                new[]
            {
                GetDianaReportItem()
            };

            CollectionAssert.AreEqual(expectedDistributorReportItems, distributorReportItems);
        }
Ejemplo n.º 23
0
        public void UpdateUser_Should_Throw_Exception_When_User_With_The_Same_Login_Already_Exists()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var updatedUser =
                new DTO.User
            {
                Id        = UserMockFactory.Jenya.Id,
                Email     = "*****@*****.**",
                FirstName = "New First Name",
                LastName  = "New Last Name",
                Login     = UserMockFactory.Olesya.Login,
                Active    = true,
                Roles     =
                    new[]
                {
                    dtoService.CreateRole(RoleMockFactory.Administrator),
                    dtoService.CreateRole(RoleMockFactory.Purchaser),
                    dtoService.CreateRole(RoleMockFactory.Distributor)
                }
            };

            // Act
            // Assert
            ExceptionAssert.Throw <SecurityServiceException>(
                () => securityService.UpdateUser(updatedUser),
                "Пользователь с заданным логином уже существует.");
        }
Ejemplo n.º 24
0
        public void CreateActionLog_Should_Create_Action_Log()
        {
            // Arrange
            var container = ContainerMockFactory.Create();

            var securityService = container.Get <ISecurityService>();

            securityService.LogInGuest();

            var actionLogService = container.Get <IActionLogService>();

            var createdActionLog =
                new DTO.ActionLog
            {
                Text          = "User Diana is changed",
                DocumentId    = UserMockFactory.Diana.Id,
                ActionLogType = actionLogService.UserChangedType
            };

            // Act
            actionLogService.CreateActionLog(createdActionLog);

            // Assert
            securityService.LogOut();
            container.Get <ISecurityService>().LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var actionLog =
                actionLogService
                .GetActionLogs(TimeServiceMockFactory.UtcNow, TimeServiceMockFactory.UtcNow, null)
                .Single();

            Assert.AreEqual(createdActionLog, actionLog);
        }
Ejemplo n.º 25
0
        public void GetUsers_Should_Return_Only_Active_Distributors_When_Current_User_Is_Purchaser()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.JenyaDistributor.Active   = false;
            UserRoleMockFactory.JenyaPurchaser.Active     = true;
            UserRoleMockFactory.JenyaAdministrator.Active = false;
            UserRoleMockFactory.JenyaSeller.Active        = false;
            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            // Act
            var users = securityService.GetUsers(null);

            // Assert
            var expectedUsers =
                new[]
            {
                dtoService.CreateUser(UserMockFactory.Olesya),
                dtoService.CreateUser(UserMockFactory.Diana)
            };

            CollectionAssert.AreEqual(expectedUsers, users);
        }
Ejemplo n.º 26
0
        public void GetSizesByBrandAndSubCategory_Should_Return_All_Sizes_When_Filter_Is_Empty()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService  = container.Get <IDtoService>();
            var sizeService = container.Get <ISizeService>();

            var subCategory = dtoService.CreateSubCategory(SubCategoryMockFactory.Girls_0_2);
            var brand       = dtoService.CreateBrand(BrandMockFactory.Carters);

            // Act
            var sizes = sizeService.GetSizes(subCategory, brand, null);

            // Assert
            var expectedSizes =
                new[]
            {
                dtoService.CreateSize(SizeMockFactory.Carters_Girls_0_2_3M),
                dtoService.CreateSize(SizeMockFactory.Carters_Girls_0_2_6M)
            };

            CollectionAssert.AreEqual(expectedSizes, sizes);
        }
Ejemplo n.º 27
0
        public void ResetPassword_Should_Throw_Exception_When_Current_User_Is_Not_Administrator()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var changedUser = dtoService.CreateUser(UserMockFactory.Olesya);

            container.Remove <IPasswordGeneratorService>();
            var passwordGeneratorServiceMock = new Mock <IPasswordGeneratorService>();

            passwordGeneratorServiceMock
            .Setup(m => m.GenerateTemporaryPassword(changedUser.Login))
            .Returns(EncryptServiceMockFactory.NewPasswordData.Password);
            container.SetConstant <IPasswordGeneratorService, IPasswordGeneratorService>(passwordGeneratorServiceMock.Object);

            // Act
            // Assert
            ExceptionAssert.Throw <InvalidOperationException>(
                () => securityService.ResetPassword(changedUser),
                "Only administrator can reset password.");
        }
Ejemplo n.º 28
0
        public void GetSizesByBrandAndSubCategory_Should_Return_Sizes_By_Filter()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Diana.Login, EncryptServiceMockFactory.DianaPasswordData.Password);

            var dtoService  = container.Get <IDtoService>();
            var sizeService = container.Get <ISizeService>();

            var subCategory = dtoService.CreateSubCategory(SubCategoryMockFactory.Boys_0_2);
            var brand       = dtoService.CreateBrand(BrandMockFactory.TheChildrensPlace);

            // Act
            var sizes = sizeService.GetSizes(subCategory, brand, "5");

            // Assert
            var expectedSizes =
                new[]
            {
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_0_3_Months),
                dtoService.CreateSize(SizeMockFactory.TheChildrensPlace_Boys_0_2_3_6_Months)
            };

            CollectionAssert.AreEqual(expectedSizes, sizes);
        }
Ejemplo n.º 29
0
        public void ResetPassword_Should_Throw_Exception_When_CurrentUser_Tries_To_Reset_Password_To_Himself()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            securityService.LogIn(UserMockFactory.Jenya.Login, EncryptServiceMockFactory.JenyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();

            var changedUser = dtoService.CreateUser(UserMockFactory.Jenya);

            container.Remove <IPasswordGeneratorService>();
            var passwordGeneratorServiceMock = new Mock <IPasswordGeneratorService>();

            passwordGeneratorServiceMock
            .Setup(m => m.GenerateTemporaryPassword(changedUser.Login))
            .Returns(EncryptServiceMockFactory.NewPasswordData.Password);
            container.SetConstant <IPasswordGeneratorService, IPasswordGeneratorService>(passwordGeneratorServiceMock.Object);

            // Act
            // Assert
            ExceptionAssert.Throw <SecurityServiceException>(
                () => securityService.ResetPassword(changedUser),
                "Пользователь не может сбросить себе пароль.");
        }
Ejemplo n.º 30
0
        public void GetDistributorTransfers_Should_Return_Only_Transfers_Of_Current_Distributor_When_User_Is_Distributor_And_Distributor_Is_Null()
        {
            // Arrange
            var container       = ContainerMockFactory.Create();
            var securityService = container.Get <ISecurityService>();

            UserRoleMockFactory.OlesyaDistributor.Active   = true;
            UserRoleMockFactory.OlesyaPurchaser.Active     = false;
            UserRoleMockFactory.OlesyaAdministrator.Active = false;
            UserRoleMockFactory.OlesyaSeller.Active        = false;
            securityService.LogIn(UserMockFactory.Olesya.Login, EncryptServiceMockFactory.OlesyaPasswordData.Password);

            var dtoService = container.Get <IDtoService>();
            var distributorTransferService = container.Get <IDistributorTransferService>();

            // Act
            var distributorTransfers = distributorTransferService.GetDistributorTransfers(null);

            // Assert
            var expectedDistributorTransfers =
                new[]
            {
                dtoService.CreateDistributorTransfer(DistributorTransferMockFactory.Olesya_Transfer_1),
                dtoService.CreateDistributorTransfer(DistributorTransferMockFactory.Olesya_Transfer_2)
            };

            CollectionAssert.AreEqual(expectedDistributorTransfers, distributorTransfers);
        }