Exemple #1
0
        void CreateUser_returns_400_when_username_exist()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller = scope.Resolve <UsersController>();
            var context    = scope.Resolve <DiscussionContext>();

            var user = new User
            {
                Id       = Guid.NewGuid(),
                Username = "******",
                Password = "******",
                Nickname = "cccchr"
            };

            context.Users.Add(user);
            context.SaveChanges();

            // Act
            var result = controller.CreateUser(new UsersController.CreateUserModel
            {
                Username = "******",
                Password = "******",
                Nickname = "realchr"
            });

            // Assert
            var badResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal("UsernameExist", badResult.Value);
        }
Exemple #2
0
        void CreateUser_returns_ok_when_everything_ok()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller = scope.Resolve <UsersController>();
            var context    = scope.Resolve <DiscussionContext>();

            // Act

            var model = new UsersController.CreateUserModel
            {
                Username = "******",
                Password = "******",
                Nickname = "realchr"
            };

            var result = controller.CreateUser(model);

            // Assert
            Assert.IsType <OkResult>(result);

            var userInDatabase = context.Users.Where(p => p.Username == model.Username).FirstOrDefault();

            Assert.NotNull(userInDatabase);
            Assert.Equal(model.Username, userInDatabase.Username);
            Assert.Equal(model.Password, userInDatabase.Password);
            Assert.Equal(model.Nickname, userInDatabase.Nickname);
        }
        void CreateArticle_returns_ok_when_ok_with_id_and_saves_article()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller  = scope.Resolve <ArticlesController>();
            var loginStatus = scope.Resolve <FakeLoginStatus>();

            loginStatus.RealUserId = Guid.NewGuid();

            // Act
            var model = new ArticlesController.CreateArticleModel
            {
                Title = "title23213",
                Text  = "asdasdasdasdasd"
            };
            var result = controller.CreateArticle(model);

            // Assert
            var okResult  = Assert.IsType <OkObjectResult>(result);
            var articleId = Assert.IsType <Guid>(okResult.Value);

            var article = controller.Context.Articles.Where(p => p.Id == articleId).FirstOrDefault();

            Assert.NotNull(article);
            Assert.Equal(articleId, article.Id);
            Assert.Equal(model.Title, article.Title);
            Assert.Equal(model.Text, article.Text);
            Assert.Equal(loginStatus.UserId, article.UserId);
        }
        void RemoveArticle_returns_forbidden_when_article_not_belong_to_current_user()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller  = scope.Resolve <ArticlesController>();
            var loginStatus = scope.Resolve <FakeLoginStatus>();

            // Set userId of login status
            loginStatus.RealUserId = Guid.NewGuid();

            // add an article which not belongs to current user
            var article = new Article
            {
                Id         = Guid.NewGuid(),
                Text       = "asdasdasdas",
                ThumbCount = 0,
                Title      = "asdasdasdad",
                UserId     = Guid.NewGuid()            // a random
            };

            controller.Context.Articles.Add(article);
            controller.Context.SaveChanges();

            // Act
            var result = controller.RemoveArticle(article.Id);

            // Assert
            Assert.IsType <ForbidResult>(result);
        }
        void RemoveArticle_returns_unauthorized_when_not_login()
        {
            // rArrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller = scope.Resolve <ArticlesController>();

            // Act
            var result = controller.RemoveArticle(Guid.NewGuid());

            // Assert
            Assert.IsType <UnauthorizedResult>(result);
        }
        void RemoveArticle_returns_notfound_when_article_not_exist()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller  = scope.Resolve <ArticlesController>();
            var loginStatus = scope.Resolve <FakeLoginStatus>();

            loginStatus.RealUserId = Guid.NewGuid();

            // Act
            var result = controller.RemoveArticle(Guid.NewGuid());

            // Assert
            Assert.IsType <NotFoundResult>(result);
        }
        void CreateArticle_returns_unauthorized_when_not_login()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller = scope.Resolve <ArticlesController>();

            // Act
            var result = controller.CreateArticle(new ArticlesController.CreateArticleModel
            {
                Title = "title23213",
                Text  = "asdasdasdasdasd"
            });

            // Assert
            Assert.IsType <UnauthorizedResult>(result);
        }
        void CreateArticle_returns_400_when_model_invalid()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller = scope.Resolve <ArticlesController>();

            // Act
            var result = controller.CreateArticle(new ArticlesController.CreateArticleModel
            {
                Title = "",
                Text  = ""
            });

            // Assert
            var badResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal("模型无效", badResult.Value);
        }
Exemple #9
0
        void CreateUser_returns_400_when_model_invalid()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller = scope.Resolve <UsersController>();

            // Act
            var result = controller.CreateUser(new UsersController.CreateUserModel
            {
                Username = "******",
                Password = "******",
                Nickname = "realchr"
            });

            // Assert
            var badResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal("ModelInvalid", badResult.Value);
        }
        void RemoveArticle_returns_ok_and_change_db_when_all_condition_ok()
        {
            // Arrange
            var container = ContainerCreator.CreateContainer();
            var scope     = container.BeginLifetimeScope();

            var controller  = scope.Resolve <ArticlesController>();
            var loginStatus = scope.Resolve <FakeLoginStatus>();

            // Set userId of login status
            loginStatus.RealUserId = Guid.NewGuid();

            // add an article which not belongs to current user
            var article = new Article
            {
                Id         = Guid.NewGuid(),
                Text       = "asdasdasdas",
                ThumbCount = 0,
                Title      = "asdasdasdad",
                UserId     = loginStatus.UserId
            };

            controller.Context.Articles.Add(article);
            controller.Context.SaveChanges();

            // Act
            var result = controller.RemoveArticle(article.Id);

            // Assert
            Assert.IsType <OkResult>(result);

            // Check database
            var articleInDatabase = controller.Context.Articles.FirstOrDefault(p => p.Id == article.Id);

            Assert.Null(articleInDatabase);
        }
Exemple #11
0
        public async Task DepositWalletLockReleasedEventSent__AggregateIsRejectedCashin__NotifyCashinFailedCommandSent()
        {
            var operationId     = Guid.NewGuid();
            var cashinAggregate = CashinAggregate.Restore(operationId,
                                                          "ETC",
                                                          6,
                                                          6,
                                                          10,
                                                          250,
                                                          "ETC",
                                                          "EthereumClassic",
                                                          0,
                                                          DateTime.UtcNow,
                                                          "0x...",
                                                          150,
                                                          250,
                                                          null,
                                                          null,
                                                          null,
                                                          0.05m,
                                                          "0x...",
                                                          DateTime.UtcNow,
                                                          10,
                                                          10,
                                                          DateTime.UtcNow,
                                                          null,
                                                          operationId,
                                                          CashinResult.Unknown,
                                                          null,
                                                          null,
                                                          10,
                                                          250,
                                                          "0xHASH",
                                                          CashinState.ClientRetrieved,
                                                          true,
                                                          "1.0.0",
                                                          CashinErrorCode.Unknown,
                                                          null);
            var cashinRepoMock = new Mock <ICashinRepository>();

            cashinRepoMock.Setup(x => x.GetAsync(It.IsAny <Guid>())).ReturnsAsync(cashinAggregate);
            var repoModule = new RepoMockModule((builder) =>
            {
                var depositWalletLockRepository = new Mock <IDepositWalletLockRepository>();
                var matchingEngineCallsDeduplicationRepository = new Mock <IMatchingEngineCallsDeduplicationRepository>();
                var enrolledBalanceRepository = new Mock <IEnrolledBalanceRepository>();
                builder.RegisterInstance(cashinRepoMock.Object)
                .As <ICashinRepository>();

                builder.RegisterInstance(matchingEngineCallsDeduplicationRepository.Object)
                .As <IMatchingEngineCallsDeduplicationRepository>();

                builder.RegisterInstance(enrolledBalanceRepository.Object)
                .As <IEnrolledBalanceRepository>();

                builder.RegisterInstance(depositWalletLockRepository.Object)
                .As <IDepositWalletLockRepository>();
            });

            var dependencies = GetIntegrationDependencies();

            dependencies.Add(repoModule);
            var testContainer = ContainerCreator.CreateContainer(
                dependencies.ToArray()
                );
            var cqrsEngine = testContainer.Resolve <ICqrsEngine>();
            var @event     = new BlockchainRiskControl.Contract.Events.OperationRejectedEvent()
            {
                OperationId = operationId,
                Message     = "Test"
            };

            cqrsEngine.StartSubscribers();

            cqrsEngine.PublishEvent(@event, BlockchainRiskControl.Contract.BlockchainRiskControlBoundedContext.Name);

            await CqrsTestModule.CommandsInterceptor.WaitForCommandToBeHandledWithTimeoutAsync(
                typeof(ReleaseDepositWalletLockCommand),
                TimeSpan.FromMinutes(4));

            await CqrsTestModule.EventsInterceptor.WaitForEventToBeHandledWithTimeoutAsync(
                typeof(DepositWalletLockReleasedEvent),
                TimeSpan.FromMinutes(4));

            await CqrsTestModule.CommandsInterceptor.WaitForCommandToBeHandledWithTimeoutAsync(
                typeof(NotifyCashinFailedCommand),
                TimeSpan.FromMinutes(4));
        }