Exemple #1
0
        public async Task AuthenticateInternal_Multiplefr8Accounts_GenerateAuthorizationTokenDO()
        {
            using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
            {
                //Arrange
                var currentAccount = FixtureData.TestDockyardAccount1();
                uow.UserRepository.Add(currentAccount);

                var developerAccount = FixtureData.TestDeveloperAccount();
                uow.UserRepository.Add(developerAccount);

                var terminal = FixtureData.TerminalSix();
                uow.TerminalRepository.Add(terminal);

                uow.SaveChanges();

                var credentialsDTO = new CredentialsDTO()
                {
                    Username = "******",
                    Password = "******",
                    Domain   = "Domain"
                };

                var authorizationToken = FixtureData.AuthorizationTokenTest1();

                var response             = JsonConvert.SerializeObject(authorizationToken);
                var restfulServiceClient = new Mock <IRestfulServiceClient>();
                restfulServiceClient.Setup(r => r.PostAsync <CredentialsDTO>(new Uri(terminal.Endpoint + "/authentication/token"),
                                                                             It.Is <CredentialsDTO>(it => it.Username == credentialsDTO.Username &&
                                                                                                    it.Password == credentialsDTO.Password &&
                                                                                                    it.Domain == credentialsDTO.Domain), It.IsAny <string>(), It.IsAny <Dictionary <string, string> >()))
                .Returns(Task.FromResult(response));
                ObjectFactory.Configure(cfg => cfg.For <IRestfulServiceClient>().Use(restfulServiceClient.Object));

                var authorization = ObjectFactory.GetInstance <Authorization>();

                //Act
                await authorization.AuthenticateInternal(currentAccount, terminal, credentialsDTO.Domain, credentialsDTO.Username, credentialsDTO.Password);

                await authorization.AuthenticateInternal(developerAccount, terminal, credentialsDTO.Domain, credentialsDTO.Username, credentialsDTO.Password);

                //Assert
                int actualResult = uow.AuthorizationTokenRepository.GetPublicDataQuery().Count(x => x.ExternalAccountId == authorizationToken.ExternalAccountId);
                Assert.AreEqual(2, actualResult);
            }
        }