Esempio n. 1
0
        private VipLevelViewModel CreateAddVipLevelCommand(Core.Brand.Interface.Data.Brand brand)
        {
            var suffix = TestDataGenerator.GetRandomAlphabeticString(5);

            var vipLevel = new VipLevelViewModel
            {
                Brand       = brand.Id,
                Code        = "code" + suffix,
                Name        = "name" + suffix,
                Description = "description" + suffix,
                Rank        = TestDataGenerator.GetRandomNumber(1000),
                Color       = TestDataGenerator.GetRandomColor(),
                Limits      = new[]
                {
                    new VipLevelLimitViewModel
                    {
                        GameProviderId = _fakeGsiRepository.GameProviders.First().Id,
                        CurrencyCode   = "CAD",
                        BetLimitId     = _fakeGsiRepository.BetLimits.First().Id
                    }
                }
            };

            return(vipLevel);
        }
Esempio n. 2
0
        private VipLevelViewModel CreateAddVipLevelCommand(Core.Brand.Interface.Data.Brand brand, string name = "", string code = "")
        {
            var suffix = TestDataGenerator.GetRandomAlphabeticString(5);
            int rank;

            do
            {
                rank = TestDataGenerator.GetRandomNumber(1000);
            }while (_brandRepository.VipLevels.Any(vl => vl.Rank == rank && vl.BrandId == brand.Id));

            var vipLevel = new VipLevelViewModel
            {
                Id          = Guid.NewGuid(),
                Brand       = brand.Id,
                Code        = string.IsNullOrEmpty(code) ? "code" + suffix : code,
                Name        = string.IsNullOrEmpty(name) ? "name" + suffix : name,
                Description = "description" + suffix,
                Rank        = rank,
                Color       = TestDataGenerator.GetRandomColor(),
                Limits      = new[]
                {
                    new VipLevelLimitViewModel
                    {
                        GameProviderId = _gameRepository.GameProviders.First().Id,
                        CurrencyCode   = "CAD",
                        BetLimitId     = _gameRepository.BetLimits.First().Id
                    }
                }
            };

            return(vipLevel);
        }
        public override void BeforeEach()
        {
            base.BeforeEach();

            BonusBalance = new BonusBalance {
                Main = 10
            };
            var bonusApiMock = new Mock <IBonusApiProxy>();

            bonusApiMock.Setup(proxy => proxy.GetPlayerBalanceAsync(It.IsAny <Guid>(), It.IsAny <Guid?>())).ReturnsAsync(BonusBalance);
            Container.RegisterInstance(bonusApiMock.Object);

            Container.Resolve <PaymentWorker>().Start();
            var brandTestHelper    = Container.Resolve <BrandTestHelper>();
            var securityTestHelper = Container.Resolve <SecurityTestHelper>();

            securityTestHelper.PopulatePermissions();
            securityTestHelper.CreateAndSignInSuperAdmin();
            _brand = brandTestHelper.CreateBrand(isActive: true);

            var player = Container.Resolve <PlayerTestHelper>().CreatePlayer(true, _brand.Id);

            _playerId          = player.Id;
            _walletTemplateId  = _brand.WalletTemplates.Single(x => x.IsMain).Id;
            _validationService = Container.Resolve <ITransferFundValidationService>();
            _repository        = Container.Resolve <FakePaymentRepository>();

            _transferFundTestHelper = Container.Resolve <TransferFundTestHelper>();
            _paymentTestHelper      = Container.Resolve <PaymentTestHelper>();
        }
        private VipLevelViewModel CreateAddVipLevelCommand(Core.Brand.Interface.Data.Brand brand)
        {
            BrandRepository.SaveChanges();

            var suffix = TestDataGenerator.GetRandomAlphabeticString(5);

            var vipLevel = new VipLevelViewModel
            {
                Brand       = brand.Id,
                Code        = "code" + suffix,
                Name        = "name" + suffix,
                Description = "description" + suffix,
                Rank        = TestDataGenerator.GetRandomNumber(1000),
                Color       = TestDataGenerator.GetRandomColor(),
                Limits      = new[]
                {
                    new VipLevelLimitViewModel
                    {
                        GameProviderId = _fakeGameRepository.GameProviders.First().Id,
                        CurrencyCode   = "CAD",
                        BetLimitId     = _fakeGameRepository.BetLimits.First().Id
                    }
                }
            };

            while (BrandQueries.GetAllVipLevels().Any(x => x.Brand.Id == brand.Id && x.Rank == vipLevel.Rank))
            {
                vipLevel.Rank = TestDataGenerator.GetRandomNumber(1000);
            }

            return(vipLevel);
        }
        public void CreateTransferSettings(
            Core.Brand.Interface.Data.Brand brand,
            SaveTransferSettingsCommand saveTransferSettingsCommand,
            Guid walletTemplateId,
            TransferFundType transferType,
            string currencyCode,
            Guid vipLevel)
        {
            var transferSettings = new SaveTransferSettingsCommand
            {
                Brand        = brand.Id,
                Licensee     = brand.Licensee.Id,
                TimezoneId   = brand.TimezoneId,
                TransferType = transferType,
                Currency     = currencyCode,
                //VipLevel = vipLevel.ToString(),
                VipLevel = vipLevel,
                Wallet   = walletTemplateId.ToString(),
                MinAmountPerTransaction = saveTransferSettingsCommand.MinAmountPerTransaction,
                MaxAmountPerTransaction = saveTransferSettingsCommand.MaxAmountPerTransaction,
                MaxAmountPerDay         = saveTransferSettingsCommand.MaxAmountPerDay,
                MaxTransactionPerDay    = saveTransferSettingsCommand.MaxTransactionPerDay,
                MaxTransactionPerWeek   = saveTransferSettingsCommand.MaxTransactionPerWeek,
                MaxTransactionPerMonth  = saveTransferSettingsCommand.MaxTransactionPerMonth
            };

            var transferSettingsId = _transferSettingsCommands.AddSettings(transferSettings);

            _transferSettingsCommands.Enable(transferSettingsId, brand.TimezoneId, "remark");
        }
Esempio n. 6
0
        public PaymentSettings CreatePaymentSettings(Core.Brand.Interface.Data.Brand brand, PaymentType type, string vipLevel, PaymentSettingsValues settings)
        {
            var model = new SavePaymentSettingsCommand
            {
                Id                      = Guid.NewGuid(),
                Licensee                = brand.Licensee.Id,
                Brand                   = brand.Id,
                PaymentType             = type,
                PaymentGatewayMethod    = PaymentMethod.OfflineBank,
                PaymentMethod           = PaymentMethodDto.OfflinePayMethod,
                Currency                = brand.BrandCurrencies.First().CurrencyCode,
                VipLevel                = vipLevel,
                MinAmountPerTransaction = settings.MinAmountPerTransaction,
                MaxAmountPerTransaction = settings.MaxAmountPerTransaction,
                MaxTransactionPerDay    = settings.MaxTransactionsPerDay,
                MaxTransactionPerWeek   = settings.MaxTransactionsPerWeek,
                MaxTransactionPerMonth  = settings.MaxTransactionsPerMonth
            };

            var paymentSettingsId = _paymentSettingsCommands.AddSettings(model);

            var ps =
                _paymentRepository.PaymentSettings
                .Single(x => x.Id == paymentSettingsId);

            _paymentSettingsCommands.Enable(ps.Id, "remark");
            return(ps);
        }
Esempio n. 7
0
        public PaymentSettings CreatePaymentSettings(Core.Brand.Interface.Data.Brand brand, PaymentType type, bool enable = true)
        {
            var model = new SavePaymentSettingsCommand
            {
                Id                      = Guid.NewGuid(),
                Licensee                = brand.Licensee.Id,
                Brand                   = brand.Id,
                PaymentType             = type,
                PaymentGatewayMethod    = PaymentMethod.OfflineBank,
                PaymentMethod           = PaymentMethodDto.OfflinePayMethod,
                Currency                = brand.BrandCurrencies.First().CurrencyCode,
                VipLevel                = brand.DefaultVipLevelId.ToString(),
                MinAmountPerTransaction = 10,
                MaxAmountPerTransaction = 200,
                MaxTransactionPerDay    = 10,
                MaxTransactionPerWeek   = 20,
                MaxTransactionPerMonth  = 30
            };

            var paymentSettingsId = _paymentSettingsCommands.AddSettings(model);

            var ps =
                _paymentRepository.PaymentSettings
                .Single(x => x.Id == paymentSettingsId);

            if (enable)
            {
                _paymentSettingsCommands.Enable(ps.Id, "remark");
            }

            return(ps);
        }
        private void AssertRiskProfileCheckStatus(OfflineWithdrawRequest offlineWithdrawalRequest,
                                                  Core.Brand.Interface.Data.Brand brand, FraudRiskLevelStatus expectedResult)
        {
            var response = _withdrawalService.Request(offlineWithdrawalRequest);

            var riskProfileCheckReportInfo = _withdrawalVerificationLogsQueues.RiskProfileCheckStatus(response.Id,
                                                                                                      brand.Name, brand.Licensee.Name, "Random Name");

            Assert.AreEqual(expectedResult.ToString(),
                            riskProfileCheckReportInfo.VerificationDialogHeaderValues.StatusSuccess);
        }
        public override void BeforeEach()
        {
            base.BeforeEach();

            Balance = new BonusBalance();
            var bonusApiMock = new Mock <IBonusApiProxy>();

            bonusApiMock.Setup(proxy => proxy.GetPlayerBalanceAsync(It.IsAny <Guid>(), It.IsAny <Guid?>())).ReturnsAsync(Balance);
            Container.RegisterInstance(bonusApiMock.Object);

            Container.Resolve <PaymentWorker>().Start();

            _withdrawalService = Container.Resolve <IWithdrawalService>();
            _playerQueries     = Container.Resolve <PlayerQueries>();
            _paymentRepository = Container.Resolve <FakePaymentRepository>();
            _paymentTestHelper = Container.Resolve <PaymentTestHelper>();
            _withdrawalVerificationLogsQueues = Container.Resolve <IWithdrawalVerificationLogsQueues>();
            _riskLevelQueries = Container.Resolve <IRiskLevelQueries>();

            var securityTestHelper = Container.Resolve <SecurityTestHelper>();

            securityTestHelper.PopulatePermissions();
            securityTestHelper.CreateAndSignInSuperAdmin();
            _gamesTestHelper = Container.Resolve <GamesTestHelper>();

            var brandHelper = Container.Resolve <BrandTestHelper>();
            var brand       = brandHelper.CreateActiveBrandWithProducts();

            _brandQueries = Container.Resolve <BrandQueries>();

            _actorInfoProvider = Container.Resolve <IActorInfoProvider>();

            _avcConfigurationCommands = Container.Resolve <IAVCConfigurationCommands>();
            _riskProfileCheckCommands = Container.Resolve <IRiskProfileCheckCommands>();

            var player = Container.Resolve <PlayerTestHelper>().CreatePlayer();

            _paymentTestHelper.CreatePlayerBankAccount(player.Id, brand.Id, true);
            _observedBrand = _brandQueries.GetBrands().First();

            brandHelper.CreateRiskLevel(_observedBrand.Id);

            //Replace with risk levels from fraud repository
            var availableRiskLevels = _riskLevelQueries.GetByBrand(_observedBrand.Id);

            _observedRiskLevel = availableRiskLevels.FirstOrDefault().Id;

            _riskLevelDifferentThanObserved = availableRiskLevels.First(rl => rl.Id != _observedRiskLevel).Id;
        }
Esempio n. 10
0
        public Core.Brand.Interface.Data.Brand CreateBrand()
        {
            var suffix = TestDataGenerator.GetRandomAlphabeticString(3);

            var brand = new Core.Brand.Interface.Data.Brand
            {
                Id   = Guid.NewGuid(),
                Code = "Code" + suffix,
                Name = "Name" + suffix
            };

            BrandRepository.Brands.Add(brand);
            BrandRepository.SaveChanges();

            return(brand);
        }
Esempio n. 11
0
        private void GeneratePlayer()
        {
            var brandTestHelper    = Container.Resolve <BrandTestHelper>();
            var playerTestHelper   = Container.Resolve <PlayerTestHelper>();
            var securityTestHelper = Container.Resolve <SecurityTestHelper>();
            var admin = securityTestHelper.CreateSuperAdmin();

            securityTestHelper.SignInAdmin(admin);

            var licensee = brandTestHelper.CreateLicensee();

            _testBrand = brandTestHelper.CreateBrand(licensee, isActive: true);
            var player = playerTestHelper.CreatePlayer(true, _testBrand.Id);

            _testPlayer = _paymentRepositoryMock.Players.SingleOrDefault(x => x.Id == player.Id);
        }
Esempio n. 12
0
        public override void BeforeAll()
        {
            base.BeforeAll();

            //create a brand for a default licensee
            _brandTestHelper = _container.Resolve <BrandTestHelper>();
            var defaultLicenseeId = _brandTestHelper.GetDefaultLicensee();

            _currency = _brandTestHelper.CreateCurrency("ZAR", "South African Rand");
            _brand    = _brandTestHelper.CreateBrand(defaultLicenseeId, null, null, _currency);

            // create a bank account for the brand
            _paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            _bankAccount       = _paymentTestHelper.CreateBankAccount(_brand.Id, _currency.Code);

            _brandQueries  = _container.Resolve <BrandQueries>();
            _brandCurrency = _brandQueries.GetCurrenciesByBrand(_brand.Id).Select(c => c.Code).First();
        }
Esempio n. 13
0
        public void Player_registration_fails_when_username_already_exists()
        {
            const string userName = "******";
            var          brand139 = new Core.Brand.Interface.Data.Brand {
                Id = Guid.NewGuid(), Name = "139"
            };

            FakePlayerRepository.Players.Add(new Core.Common.Data.Player.Player {
                Username = userName, BrandId = brand139.Id
            });

            var testCase = new TestPair(r => r.Username, userName);

            ValidateTestCase(testCase, true);

            FakeBrandRepository.Brands.Add(brand139);
            ValidateTestCase(testCase);
        }
Esempio n. 14
0
        public void Player_registration_fails_when_email_already_exists()
        {
            const string email = "*****@*****.**";

            var brand139 = new Core.Brand.Interface.Data.Brand {
                Id = Guid.NewGuid(), Name = "139"
            };

            FakePlayerRepository.Players.Add(new Core.Common.Data.Player.Player {
                Email = email, BrandId = brand139.Id
            });

            var testCase = new TestPair(r => r.Email, email);

            ValidateTestCase(testCase, true);

            FakeBrandRepository.Brands.Add(brand139);

            ValidateTestCase(testCase);
        }
        public override void BeforeAll()
        {
            base.BeforeAll();
            var brandTestHelper    = _container.Resolve <BrandTestHelper>();
            var transferTestHelper = _container.Resolve <TransferFundTestHelper>();
            var paymentTestHelper  = _container.Resolve <PaymentTestHelper>();
            var playerTestHelper   = _container.Resolve <PlayerTestHelper>();
            var playerQueries      = _container.Resolve <PlayerQueries>();
            var playerCommands     = _container.Resolve <PlayerCommands>();
            var brandQueries       = _container.Resolve <BrandQueries>();

            //create vip level for a brand
            //TODO: Igor  -  needs to generate new vip level for a brand here
            //change default VIP Level for Brand
            //TODO: Igor  -  change default VIP Level for Brand 138

            _brand = brandQueries.GetBrand(DefaultBrandId);

            var vipLevel = _brand.DefaultVipLevel; //needs to be changed for multiple times run

            //create fund-in transfer settings for the brand and vip level
            var transferSettings = new SaveTransferSettingsCommand
            {
                MinAmountPerTransaction = MinAmountPerTransaction,
                MaxAmountPerTransaction = MaxAmountPerTransaction
            };

            var walletTemplateId = _brand.WalletTemplates.Single(x => x.IsMain).Id;

            transferTestHelper.CreateTransferSettings(_brand, transferSettings, walletTemplateId, TransferFundType.FundIn, "CAD", vipLevel.Id);

            //create a player
            _player = playerTestHelper.CreatePlayerForMemberWebsite(currencyCode: "CAD", password: "******");

            //deposit money to the player's main balance
            paymentTestHelper.MakeDeposit(_player.Username, 200);
            var playerId = playerQueries.GetPlayerByUsername(_player.Username).Id;

            //change the vip level of the player
            playerCommands.ChangeVipLevel(playerId, vipLevel.Id, "changed vip level");
        }
Esempio n. 16
0
        public override void BeforeAll()
        {
            base.BeforeAll();
            _paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            _playerTestHelper  = _container.Resolve <PlayerTestHelper>();
            var brandTestHelper = _container.Resolve <BrandTestHelper>();

            var defaultLicenseeId = brandTestHelper.GetDefaultLicensee();

            Core.Brand.Interface.Data.Currency curreny = new Core.Brand.Interface.Data.Currency
            {
                Code = DefaultCurrency,
                Name = DefaultCurrency
            };
            //create a brand for a default licensee
            _brand = brandTestHelper.CreateBrand(defaultLicenseeId, null, null, curreny, true);

            //log in
            _dashboardPage = _driver.LoginToAdminWebsiteAsSuperAdmin();
            _dashboardPage.BrandFilter.SelectAll();
        }
Esempio n. 17
0
        public Core.Brand.Interface.Data.Brand CreateBrand(Licensee licensee)
        {
            var suffix = TestDataGenerator.GetRandomAlphabeticString(3);

            var brand = new Core.Brand.Interface.Data.Brand
            {
                Id         = Guid.NewGuid(),
                Code       = "Code" + suffix,
                Name       = "Name" + suffix,
                Licensee   = licensee,
                Status     = BrandStatus.Active,
                TimezoneId = "Pacific Standard Time"
            };

            licensee.Brands.Add(brand);

            BrandRepository.Brands.Add(brand);
            BrandRepository.SaveChanges();

            return(brand);
        }
        public void AddTransfer(
            Core.Brand.Interface.Data.Brand brand,
            Guid playerId,
            Guid walletTemplateId,
            IPaymentRepository repository,
            double timeShiftInDays = 0)
        {
            var transferFund = new TransferFund
            {
                Id                = Guid.NewGuid(),
                Amount            = 1,
                CreatedBy         = playerId.ToString(),
                Created           = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId) + TimeSpan.FromDays(timeShiftInDays),
                TransferType      = TransferFundType.FundIn,
                WalletId          = walletTemplateId.ToString(),
                Status            = TransferFundStatus.Approved,
                TransactionNumber = "TF000000000"
            };

            repository.TransferFunds.Add(transferFund);
            repository.SaveChanges();
        }
        public override void BeforeEach()
        {
            base.BeforeEach();

            _wagerConfigurationCommands = Container.Resolve <IWagerConfigurationCommands>();
            _wagerConfigurationQueries  = Container.Resolve <IWagerConfigurationQueries>();
            _brandRepository            = Container.Resolve <FakeBrandRepository>();
            _brandTestHelper            = Container.Resolve <BrandTestHelper>();

            var securityTestHelper = Container.Resolve <SecurityTestHelper>();

            securityTestHelper.PopulatePermissions();
            securityTestHelper.CreateAndSignInSuperAdmin();

            foreach (var currencyCode in TestDataGenerator.CurrencyCodes)
            {
                _brandRepository.Currencies.Add(new Currency {
                    Code = currencyCode
                });
            }

            _brand = _brandTestHelper.CreateBrand(isActive: true);
        }
Esempio n. 20
0
        public override void BeforeEach()
        {
            base.BeforeEach();

            FakeBrandRepository     = Container.Resolve <FakeBrandRepository>();
            FakePlayerRepository    = Container.Resolve <FakePlayerRepository>();
            FakePaymentRepository   = Container.Resolve <FakePaymentRepository>();
            FakeEventRepository     = Container.Resolve <FakeEventRepository>();
            FakeSecurityRepository  = Container.Resolve <FakeSecurityRepository>();
            FakeMessagingRepository = Container.Resolve <FakeMessagingRepository>();

            for (int i = 0; i < TestDataGenerator.CountryCodes.Length; i++)
            {
                FakeBrandRepository.Countries.Add(new Country {
                    Code = TestDataGenerator.CountryCodes[i]
                });
            }

            for (int i = 0; i < TestDataGenerator.CurrencyCodes.Length; i++)
            {
                FakeBrandRepository.Currencies.Add(new Currency {
                    Code = TestDataGenerator.CurrencyCodes[i]
                });
            }

            for (int i = 0; i < TestDataGenerator.CultureCodes.Length; i++)
            {
                FakeBrandRepository.Cultures.Add(new Culture {
                    Code = TestDataGenerator.CultureCodes[i]
                });
            }

            var brandId = new Guid("00000000-0000-0000-0000-000000000138");
            var brand   = new Core.Brand.Interface.Data.Brand {
                Id = brandId, Name = "138", Status = BrandStatus.Active, TimezoneId = "Pacific Standard Time"
            };

            for (int i = 0; i < TestDataGenerator.CurrencyCodes.Length; i++)
            {
                var currencyCode = TestDataGenerator.CurrencyCodes[i];

                brand.BrandCurrencies.Add(new BrandCurrency
                {
                    BrandId               = brand.Id,
                    Brand                 = brand,
                    CurrencyCode          = currencyCode,
                    Currency              = FakeBrandRepository.Currencies.Single(x => x.Code == currencyCode),
                    DefaultPaymentLevelId = currencyCode == "CAD"
                        ? new Guid("E1E600D4-0729-4D5C-B93E-085A94B55B33")
                        : new Guid("1ED97A2B-EBA2-4B68-A70C-18A7070908F9")
                });
            }
            for (int i = 0; i < TestDataGenerator.CountryCodes.Length; i++)
            {
                var countryCode = TestDataGenerator.CountryCodes[i];

                brand.BrandCountries.Add(new BrandCountry
                {
                    BrandId     = brand.Id,
                    Brand       = brand,
                    CountryCode = countryCode,
                    Country     = FakeBrandRepository.Countries.Single(x => x.Code == countryCode)
                });
            }
            for (int i = 0; i < TestDataGenerator.CultureCodes.Length; i++)
            {
                var cultureCode = TestDataGenerator.CultureCodes[i];

                brand.BrandCultures.Add(new BrandCulture
                {
                    BrandId     = brand.Id,
                    Brand       = brand,
                    CultureCode = cultureCode,
                    Culture     = FakeBrandRepository.Cultures.Single(x => x.Code == cultureCode)
                });
            }
            var walletTemplate = new WalletTemplate()
            {
                Brand       = brand,
                Id          = Guid.NewGuid(),
                IsMain      = true,
                Name        = "Main wallet",
                DateCreated = DateTimeOffset.UtcNow,
                CreatedBy   = Guid.NewGuid()
            };

            brand.WalletTemplates.Add(walletTemplate);
            brand.DefaultCulture  = brand.BrandCultures.First().Culture.Code;
            brand.DefaultCurrency = brand.BrandCurrencies.First().Currency.Code;
            var vipLevel = new Core.Brand.Interface.Data.VipLevel {
                Name = "Standard", BrandId = brandId
            };

            brand.DefaultVipLevelId = vipLevel.Id;
            brand.DefaultVipLevel   = vipLevel;

            FakeBrandRepository.WalletTemplates.Add(walletTemplate);
            var playerVipLevel = new VipLevel
            {
                Id      = Guid.NewGuid(),
                Name    = "Standard",
                BrandId = brandId
            };

            brand.DefaultVipLevelId = playerVipLevel.Id;

            FakeBrandRepository.Brands.Add(brand);
            var playerBrand = new Core.Common.Data.Player.Brand {
                Id = brand.Id, TimezoneId = brand.TimezoneId
            };

            FakePlayerRepository.Brands.Add(playerBrand);
            FakePlayerRepository.VipLevels.Add(playerVipLevel);

            FakeMessagingRepository.VipLevels.Add(new Core.Messaging.Data.VipLevel
            {
                Id   = playerVipLevel.Id,
                Name = playerVipLevel.Name
            });

            FakeMessagingRepository.SaveChanges();

            playerBrand.DefaultVipLevelId = playerVipLevel.Id;
            FakePlayerRepository.SaveChanges();

            foreach (var questionid in TestDataGenerator.SecurityQuestions)
            {
                FakePlayerRepository.SecurityQuestions.Add(new SecurityQuestion
                {
                    Id       = new Guid(questionid),
                    Question = TestDataGenerator.GetRandomString()
                });
            }

            Container.Resolve <FakeGameRepository>().Brands.Add(new Core.Game.Interface.Data.Brand
            {
                Id         = new Guid("00000000-0000-0000-0000-000000000138"),
                TimezoneId = TestDataGenerator.GetRandomTimeZone().Id
            });

            var bankAccountType = new BankAccountType
            {
                Id   = new Guid("00000000-0000-0000-0000-000000000100"),
                Name = "Main"
            };


            FakePaymentRepository.Brands.Add(new Core.Payment.Data.Brand
            {
                Id         = new Guid("00000000-0000-0000-0000-000000000138"),
                TimezoneId = "Pacific Standard Time"
            });

            FakePaymentRepository.BankAccountTypes.Add(bankAccountType);

            var bank = new Bank
            {
                Id          = Guid.NewGuid(),
                BankId      = "SE45",
                BankName    = "Bank of Canada",
                BrandId     = brandId,
                CountryCode = "Canada",
                Created     = DateTime.Now,
                CreatedBy   = "initializer"
            };

            FakePaymentRepository.Banks.Add(bank);

            var cadAccountId = new Guid("B6755CB9-8F9A-4EBA-87E0-1ED5493B7534");

            FakePaymentRepository.BankAccounts.Add(
                new BankAccount
            {
                Id            = cadAccountId,
                AccountId     = "BoC1",
                AccountName   = "John Doe",
                AccountNumber = "SE45 0583 9825 7466",
                AccountType   = bankAccountType,
                Bank          = bank,
                Branch        = "Main",
                Province      = "Vancouver",
                CurrencyCode  = "CAD",
                Created       = DateTime.Now,
                CreatedBy     = "Initializer",
                Status        = BankAccountStatus.Active,
                Updated       = DateTime.Now,
                UpdatedBy     = "Initializer"
            }
                );

            bankAccountType = new BankAccountType
            {
                Id   = new Guid("00000000-0000-0000-0000-000000000101"),
                Name = "VIP"
            };
            FakePaymentRepository.BankAccountTypes.Add(bankAccountType);

            bank = new Bank
            {
                Id          = Guid.NewGuid(),
                BankId      = "70AC",
                BankName    = "Hua Xia Bank",
                BrandId     = brandId,
                CountryCode = "China",
                Created     = DateTime.Now,
                CreatedBy   = "initializer"
            };
            FakePaymentRepository.Banks.Add(bank);

            var rmbAccountId = new Guid("13672261-70AC-46E3-9E62-9E2E3AB77663");

            FakePaymentRepository.BankAccounts.Add(
                new BankAccount
            {
                Id            = rmbAccountId,
                AccountId     = "HXB1",
                AccountName   = "Beijing",
                AccountNumber = "BA3912940494",
                //AccountType = "Main",
                AccountType  = bankAccountType,
                Bank         = bank,
                Branch       = "Main",
                Province     = "Beijing Municipality",
                CurrencyCode = "RMB",
                Created      = DateTime.Now,
                CreatedBy    = "Initializer",
                Status       = BankAccountStatus.Active,
                Updated      = DateTime.Now,
                UpdatedBy    = "Initializer"
            }
                );

            var paymentLevel = new PaymentLevel
            {
                Id                   = new Guid("E1E600D4-0729-4D5C-B93E-085A94B55B33"),
                BrandId              = brandId,
                CurrencyCode         = "CAD",
                Name                 = "CADLevel",
                Code                 = "CADLevel",
                EnableOfflineDeposit = true,
                DateCreated          = DateTimeOffset.Now,
                CreatedBy            = "Initializer"
            };

            paymentLevel.BankAccounts.Add(FakePaymentRepository.BankAccounts.Single(a => a.Id == cadAccountId));
            FakePaymentRepository.PaymentLevels.Add(paymentLevel);

            paymentLevel = new PaymentLevel
            {
                Id                   = new Guid("1ED97A2B-EBA2-4B68-A70C-18A7070908F9"),
                BrandId              = brandId,
                CurrencyCode         = "RMB",
                Name                 = "RMBLevel",
                Code                 = "RMBLevel",
                EnableOfflineDeposit = true,
                DateCreated          = DateTimeOffset.Now,
                CreatedBy            = "Initializer"
            };
            paymentLevel.BankAccounts.Add(FakePaymentRepository.BankAccounts.Single(a => a.Id == rmbAccountId));
            FakePaymentRepository.PaymentLevels.Add(paymentLevel);

            var licensee = new Licensee
            {
                Id = Guid.NewGuid(),
                AllowedBrandCount = 1,
                Status            = LicenseeStatus.Active
            };

            FakeBrandRepository.Licensees.Add(licensee);
            FakeBrandRepository.SaveChanges();

            foreach (var culture in FakeBrandRepository.Cultures)
            {
                FakeMessagingRepository.Languages.Add(new Language
                {
                    Code = culture.Code,
                    Name = culture.Name
                });
            }

            foreach (var thisBrand in FakeBrandRepository.Brands.Include(x => x.BrandCultures.Select(y => y.Culture)))
            {
                FakeMessagingRepository.Brands.Add(new Core.Messaging.Data.Brand
                {
                    Id        = thisBrand.Id,
                    Name      = thisBrand.Name,
                    SmsNumber = TestDataGenerator.GetRandomPhoneNumber(),
                    Email     = TestDataGenerator.GetRandomEmail(),
                    Languages = thisBrand.BrandCultures.Select(x => new Language
                    {
                        Code = x.Culture.Code,
                        Name = x.Culture.Name
                    }).ToList()
                });
            }

            foreach (var thisPlayer in FakePlayerRepository.Players)
            {
                FakeMessagingRepository.Players.Add(new Core.Messaging.Data.Player
                {
                    Id        = thisPlayer.Id,
                    Username  = thisPlayer.Username,
                    FirstName = thisPlayer.FirstName,
                    LastName  = thisPlayer.LastName,
                    Email     = thisPlayer.Email,
                    Language  = FakeMessagingRepository.Languages.Single(x => x.Code == thisPlayer.CultureCode),
                    Brand     = FakeMessagingRepository.Brands.Single(x => x.Id == thisPlayer.BrandId)
                });
            }

            foreach (var thisBrand in FakeMessagingRepository.Brands.Include(x => x.Languages))
            {
                foreach (var thisLanguage in thisBrand.Languages)
                {
                    foreach (var messageType in (MessageType[])Enum.GetValues(typeof(MessageType)))
                    {
                        FakeMessagingRepository.MessageTemplates.Add(new MessageTemplate
                        {
                            BrandId               = thisBrand.Id,
                            LanguageCode          = thisLanguage.Code,
                            MessageType           = messageType,
                            MessageDeliveryMethod = MessageDeliveryMethod.Email,
                            TemplateName          = TestDataGenerator.GetRandomString(),
                            MessageContent        = string.Format("Fake email message Template. {0}.",
                                                                  Enum.GetName(typeof(MessageType), messageType)),
                            Subject     = TestDataGenerator.GetRandomString(),
                            Status      = Status.Active,
                            CreatedBy   = "System",
                            Created     = DateTimeOffset.UtcNow,
                            ActivatedBy = "System",
                            Activated   = DateTimeOffset.UtcNow
                        });

                        FakeMessagingRepository.MessageTemplates.Add(new MessageTemplate
                        {
                            BrandId               = thisBrand.Id,
                            LanguageCode          = thisLanguage.Code,
                            MessageType           = messageType,
                            MessageDeliveryMethod = MessageDeliveryMethod.Sms,
                            TemplateName          = TestDataGenerator.GetRandomString(),
                            MessageContent        = string.Format("Fake SMS message Template. {0}.",
                                                                  Enum.GetName(typeof(MessageType), messageType)),
                            Status      = Status.Active,
                            CreatedBy   = "System",
                            Created     = DateTimeOffset.UtcNow,
                            ActivatedBy = "System",
                            Activated   = DateTimeOffset.UtcNow
                        });
                    }
                }
            }

            FakeMessagingRepository.SaveChanges();

            var securityHelper = Container.Resolve <SecurityTestHelper>();

            securityHelper.PopulatePermissions();

            var licenseeIds = new[] { licensee.Id };
            var brandIds    = new[] { brand.Id };

            const string superAdminUsername = "******";

            var adminId = RoleIds.SuperAdminId;
            var role    = new Role
            {
                Id          = adminId,
                Code        = "SuperAdmin",
                Name        = "SuperAdmin",
                CreatedDate = DateTime.UtcNow
            };

            role.SetLicensees(licenseeIds);

            var user = new Core.Security.Data.Users.Admin
            {
                Id          = adminId,
                Username    = superAdminUsername,
                FirstName   = superAdminUsername,
                LastName    = superAdminUsername,
                IsActive    = true,
                Description = superAdminUsername,
                Role        = role
            };

            user.SetLicensees(licenseeIds);

            foreach (var licenseeId in licenseeIds)
            {
                user.LicenseeFilterSelections.Add(new LicenseeFilterSelection
                {
                    AdminId    = user.Id,
                    LicenseeId = licenseeId,
                    Admin      = user
                });
            }

            user.SetAllowedBrands(brandIds);

            foreach (var item in brandIds)
            {
                user.BrandFilterSelections.Add(new BrandFilterSelection
                {
                    AdminId = user.Id,
                    BrandId = item,
                    Admin   = user
                });
            }

            FakeSecurityRepository.Admins.AddOrUpdate(user);
            var authCommands = Container.Resolve <IAuthCommands>();

            authCommands.CreateRole(new CreateRole
            {
                RoleId      = adminId,
                Permissions = Container.Resolve <IAuthQueries>().GetPermissions().Select(p => p.Id).ToList()
            });
            authCommands.CreateActor(new CreateActor
            {
                ActorId  = adminId,
                Username = superAdminUsername,
                Password = superAdminUsername
            });
            authCommands.AssignRoleToActor(new AssignRole
            {
                ActorId = adminId,
                RoleId  = adminId
            });

            FakeSecurityRepository.SaveChanges();

            securityHelper.SignInAdmin(user);

            var testServerUri = ConfigurationManager.AppSettings["TestServerUri"];

            TestStartup.Container = Container;
            _webServer            = WebApp.Start <TestStartup>(testServerUri);

            PlayerWebservice = new MemberApiProxy(testServerUri);
        }
        public override void BeforeEach()
        {
            base.BeforeEach();
            _driver.Logout();
            _dashboardPage = _driver.LoginToAdminWebsiteAsSuperAdmin();
            _dashboardPage.BrandFilter.SelectAll();
            _playerManagerPage = _dashboardPage.Menu.ClickPlayerManagerMenuItem();

            _brandTestHelper   = _container.Resolve <BrandTestHelper>();
            _paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            _playerQueries     = _container.Resolve <PlayerQueries>();
            _gamesTestHelper   = _container.Resolve <GamesTestHelper>();
            var avcTestHelper    = _container.Resolve <AutoVerificationConfigurationTestHelper>();
            var playerTestHelper = _container.Resolve <PlayerTestHelper>();
            var brandQueries     = _container.Resolve <BrandQueries>();
            var playerCommands   = _container.Resolve <PlayerCommands>();

            //create a brand for a default licensee
            _brand = brandQueries.GetBrand(DefaultBrandId);

            //create a not default VIP Level for Brand
            var vipLevel = _brandTestHelper.CreateNotDefaultVipLevel(DefaultBrandId);

            //create Auto Verification Configuration for custom Brand
            var gameRepository = _container.Resolve <IGameRepository>();

            var avcConfigurationBuilder = new AvcConfigurationBuilder(_brand.Id, new[] { vipLevel.Id }, "CAD");

            avcConfigurationBuilder
            .SetupWinnings(new List <WinningRuleDTO>
            {
                new WinningRuleDTO
                {
                    Id         = Guid.NewGuid(),
                    ProductId  = gameRepository.GameProviders.Single(g => g.Name == "Mock Sport Bets").Id,
                    Comparison = ComparisonEnum.Greater,
                    Amount     = 200,
                    Period     = PeriodEnum.FromSignUp
                }
            });

            var configuration        = avcConfigurationBuilder.Configuration;
            var createdConfiguration = avcTestHelper.CreateConfiguration(configuration);

            avcTestHelper.Activate(createdConfiguration.Id);

            // create a player with a bound bank account for a brand
            var player = playerTestHelper.CreatePlayer(true, _brand.Id);

            _playerUsername  = player.Username;
            _playerFirstname = player.FirstName;
            _playerLastname  = player.LastName;
            _playerFullname  = _playerFirstname + " " + _playerLastname;
            _paymentTestHelper.CreatePlayerBankAccount(player.Id, DefaultBrandId, true);

            //change the VIP Level for Player
            playerCommands.ChangeVipLevel(player.Id, vipLevel.Id, "changed vip level");

            //deposit some money
            _paymentTestHelper.MakeDeposit(_playerUsername, 400);
            Thread.Sleep(5000); //wait for Deposit created event processing
        }