public void Request_ForApiController_Throws_WhenControllerRequestIsNull()
        {
            // Arrange
            IEnumerable <AuthenticationHeaderValue> challenges = CreateChallenges();
            ApiController controller = CreateController();

            Assert.Null(controller.Request);
            UnauthorizedResult result = CreateProductUnderTest(challenges, controller);

            // Act & Assert
            InvalidOperationException exception = Assert.Throws <InvalidOperationException>(() =>
                                                                                            { HttpRequestMessage ignore = result.Request; }, "ApiController.Request must not be null.");
        }
        public void Request_Returns_InstanceProvided()
        {
            // Arrange
            IEnumerable <AuthenticationHeaderValue> challenges = CreateChallenges();

            using (HttpRequestMessage expectedRequest = CreateRequest())
            {
                UnauthorizedResult result = CreateProductUnderTest(challenges, expectedRequest);

                // Act
                HttpRequestMessage request = result.Request;

                // Assert
                Assert.Same(expectedRequest, request);
            }
        }
        public void Request_ForApiController_EvaluatesLazily()
        {
            // Arrange
            IEnumerable <AuthenticationHeaderValue> challenges = CreateChallenges();
            ApiController      controller = CreateController();
            UnauthorizedResult result     = CreateProductUnderTest(challenges, controller);

            using (HttpRequestMessage expectedRequest = CreateRequest())
            {
                controller.Request = expectedRequest;

                // Act
                HttpRequestMessage request = result.Request;

                // Assert
                Assert.Same(expectedRequest, request);
            }
        }
        public void ApiControllerUnauthorized_WithIEnumerable_CreatesCorrectResult()
        {
            // Arrange
            IEnumerable <AuthenticationHeaderValue> expectedChallenges = CreateChallenges();
            ApiController controller = CreateController();

            // Act
            UnauthorizedResult result = controller.Unauthorized(expectedChallenges);

            // Assert
            Assert.NotNull(result);
            Assert.Same(expectedChallenges, result.Challenges);

            using (HttpRequestMessage expectedRequest = CreateRequest())
            {
                controller.Request = expectedRequest;
                Assert.Same(expectedRequest, result.Request);
            }
        }
        public void ApiControllerUnauthorized_WithParams_CreatesCorrectResult()
        {
            // Arrange
            AuthenticationHeaderValue challenge1 = CreateChallenge();
            AuthenticationHeaderValue challenge2 = CreateChallenge();
            ApiController             controller = CreateController();

            // Act
            UnauthorizedResult result = controller.Unauthorized(challenge1, challenge2);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(2, result.Challenges.Count());
            Assert.Same(challenge1, result.Challenges.ElementAt(0));
            Assert.Same(challenge2, result.Challenges.ElementAt(1));

            using (HttpRequestMessage expectedRequest = CreateRequest())
            {
                controller.Request = expectedRequest;
                Assert.Same(expectedRequest, result.Request);
            }
        }