public async Task GetLicenseTransactions_RepositoryThrowsException_ReturnsInternalServerError()
        {
            // Arrange
            var transactions = new[]
            {
                new LicenseTransaction {
                    LicenseActivityId = 1, UserId = 1, TransactionType = 1, ActionType = 1, ConsumerType = 1
                },
                new LicenseTransaction {
                    LicenseActivityId = 2, UserId = 2, TransactionType = 1, ActionType = 1, ConsumerType = 1
                },
                new LicenseTransaction {
                    LicenseActivityId = 3, UserId = 1, TransactionType = 2, ActionType = 2, ConsumerType = 1
                },
            };
            var httpClientProvider = CreateTestHttpClientProvider(transactions);
            var userRepository     = new Mock <IUserRepository>();
            var logMock            = new Mock <IServiceLogRepository>();

            userRepository.Setup(r => r.GetLicenseTransactionUserInfoAsync(new[] { 1, 2 })).Throws <Exception>();
            var controller = new LicensesController(httpClientProvider, userRepository.Object, logMock.Object)
            {
                Request = new HttpRequestMessage()
            };

            controller.Request.Headers.Add("Session-Token", string.Empty);
            int days = 1;

            // Act
            IHttpActionResult result = await controller.GetLicenseTransactions(days);

            // Assert
            Assert.IsInstanceOfType(result, typeof(InternalServerErrorResult));
        }
        public async Task GetLicenseTransactions_HttpClientAndRepositoryReturnResults_ReturnsCombinedResults()
        {
            // Arrange
            var transactions = new[]
            {
                new LicenseTransaction {
                    LicenseActivityId = 1, UserId = 1, LicenseType = 1, TransactionType = 1, ActionType = 1, ConsumerType = 1
                },
                new LicenseTransaction {
                    LicenseActivityId = 2, UserId = 2, LicenseType = 3, TransactionType = 1, ActionType = 1, ConsumerType = 1
                },
                new LicenseTransaction {
                    LicenseActivityId = 3, UserId = 1, LicenseType = 1, TransactionType = 2, ActionType = 2, ConsumerType = 1
                },
            };
            var httpClientProvider = CreateTestHttpClientProvider(transactions);
            var users = new[]
            {
                new LicenseTransactionUser {
                    Id = 1, Login = "******", Department = "Department"
                },
                new LicenseTransactionUser {
                    Id = 2, Login = "******"
                }
            };
            var userRepository = new Mock <IUserRepository>();
            var logMock        = new Mock <IServiceLogRepository>();

            userRepository.Setup(r => r.GetLicenseTransactionUserInfoAsync(new[] { 1, 2 })).ReturnsAsync(users);
            var controller = new LicensesController(httpClientProvider, userRepository.Object, logMock.Object)
            {
                Request = new HttpRequestMessage()
            };

            controller.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
            controller.Request.Headers.Add("Session-Token", string.Empty);
            int days = 1;

            // Act
            var result = await controller.GetLicenseTransactions(days) as ResponseMessageResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(HttpStatusCode.OK, result.Response.StatusCode);
            AddUserInfo(transactions, users);
            var resultContent = await result.Response.Content.ReadAsAsync <IEnumerable <LicenseTransaction> >();

            CollectionAssert.AreEqual(transactions, resultContent.ToList());
        }
        public async Task GetLicenseTransactions_SessionTokenIsNull_UnauthorizedResult()
        {
            // Arrange
            var httpClientProvider = CreateTestHttpClientProvider(null);
            var userRepository     = new Mock <IUserRepository>();
            var logMock            = new Mock <IServiceLogRepository>();
            var controller         = new LicensesController(httpClientProvider, userRepository.Object, logMock.Object)
            {
                Request = new HttpRequestMessage()
            };
            int days = 1;

            // Act
            IHttpActionResult result = await controller.GetLicenseTransactions(days);

            // Assert
            Assert.IsInstanceOfType(result, typeof(UnauthorizedResult));
        }