Inheritance: ApiController
コード例 #1
0
        public void TestInitialize()
        {
            AutoMapperConfig.Execute();
            this.mocksContainer = new MocksContainer();
            this.mocksContainer.SetupMocks();

            var requestMock = new Mock <HttpRequestBase>();

            requestMock.SetupGet(x => x.Headers).Returns(
                new System.Net.WebHeaderCollection {
                { "X-Requested-With", "XMLHttpRequest" }
            });

            var responseMock = new Mock <HttpResponseBase>();

            var contextMock = new Mock <HttpContextBase>();

            contextMock.SetupGet(c => c.Request).Returns(requestMock.Object);
            contextMock.SetupGet(c => c.User.Identity.IsAuthenticated).Returns(true);
            contextMock.SetupGet(c => c.User.Identity.Name).Returns("admin");
            contextMock.Setup(c => c.Response).Returns(responseMock.Object);

            var dataMock = new Mock <IPhotoContestData>();

            dataMock.Setup(d => d.Contests).Returns(this.mocksContainer.ContestsRepositoryMock.Object);

            var service    = new ContestService(dataMock.Object);
            var controller = new ContestsController(dataMock.Object, service);

            controller.ControllerContext = new ControllerContext(contextMock.Object, new RouteData(), controller);

            this.fakeContestsController = controller;
        }
コード例 #2
0
        public void GivenAnIncorrectParameter_GetContests_ShouldReturn_BadRequest()
        {
            // Arrange
            const int incorrectElectionId = 0;

            //var authValues = Request.Headers.Authorization;

            //if (authValues?.Scheme == null || authValues.Parameter == null)
            //{
            //    return BadRequest();
            //}

            //if (!authValues.Scheme.Equals(_webConfigContainer.AuthScheme) ||
            //    !authValues.Parameter.Equals(_webConfigContainer.ApiKey))

            var mockWebConfigContainer = new Mock <IWebConfigContainer>();

            mockWebConfigContainer.Setup(wcc => wcc.AuthScheme).Returns(AuthScheme);
            mockWebConfigContainer.Setup(wcc => wcc.ApiKey).Returns(ApiKey);

            var mockContestServices = new Mock <IContestServices>();

            mockContestServices.Setup(mut => mut.GetContestsByElectionId(0))
            .Returns(new List <Contest>());

            // api/v1/contests/ui/{electionId}
            var mockCandidateServices = new Mock <ICandidatesServices>();

            mockCandidateServices.Setup(mut => mut.GetCandidatesByContestId(0))
            .Returns(new List <Candidate>());

            var contestsController = new ContestsController(
                mockWebConfigContainer.Object,
                mockContestServices.Object,
                mockCandidateServices.Object)
            {
                Configuration = new HttpConfiguration(),
                //var authValues = Request.Headers.Authorization;
                Request = new HttpRequestMessage
                {
                    Method     = HttpMethod.Get,
                    RequestUri = new Uri("http://localhost:63190/api/v1/contests/ui/0"),
                    Headers    = { Authorization = new AuthenticationHeaderValue(AuthScheme, ApiKey) }
                }
            };

            // Act
            //var response = contestsController.GetContests(incorrectElectionId);
            //var contentResult = response as OkNegotiatedContentResult<IEnumerable<Contest>>;

            // Assert
            //Assert.IsNotNull(contentResult);
            //Assert.IsNotNull(contentResult.Content);
            //Assert.IsInstanceOfType(response, typeof(IHttpActionResult));
            //Assert.IsInstanceOfType(response, typeof(OkNegotiatedContentResult<IEnumerable<Contest>>));
        }
コード例 #3
0
        public void AddContestShouldInsertOneRecordToTheRepository()
        {
            var contests = new List<Contest>();

            var fakeUser = this.mocks.FakeUserRepository.Object.GetAll().FirstOrDefault();
            if (fakeUser == null)
            {
                Assert.Fail();
            }

            this.mocks.FakeContestRepository
                .Setup(r => r.Add(It.IsAny<Contest>()))
                .Callback(
                    (Contest contest) =>
                        {
                            contest.Organizer = fakeUser;
                            contests.Add(contest);
                        });

            var mockContext = new Mock<IPhotoBattlesData>();
            mockContext.Setup(c => c.Users)
                       .Returns(this.mocks.FakeUserRepository.Object);
            mockContext.Setup(c => c.Contests)
                       .Returns(this.mocks.FakeContestRepository.Object);

            var mockIdProvider = new Mock<IUserIdProvider>();
            mockIdProvider.Setup(ip => ip.GetUserId())
                          .Returns(fakeUser.Id);

            var contestController = new ContestsController(mockContext.Object, mockIdProvider.Object);

            var newContest = new ContestBindingModel()
            {
                Title = "Contest three",
                Description = "Contests three description",
                VotingStrategyEnum = VotingStrategyEnum.Open,
                ParticipationStrategyEnum = ParticipationStrategyEnum.Open,
                RewardStrategyEnum = RewardStrategyEnum.SingleWinner,
                DeadlineStrategyEnum = DeadlineStrategyEnum.ParticipantsLimit,
                ParticipantsLimit = 3
            };

            var response = contestController.AddContest(newContest);

            var expected = contests.FirstOrDefault(c => c.Title == newContest.Title);
            if (expected == null)
            {
                Assert.Fail();
            }

            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.IsInstanceOfType(response, typeof(RedirectToRouteResult));
            Assert.AreEqual(1, contests.Count);
            Assert.AreEqual(newContest.Description, expected.Description);
        }
コード例 #4
0
        public void GivenInvalidParameter_GetContests_ShouldReturnBadRequest()
        {
            // Arrange
            const int invalidElectionId = 0;

            var mockWebConfigContainer = new Mock <IWebConfigContainer>();

            var mockContestServices = new Mock <IContestServices>();

            mockContestServices.Setup(mut => mut.GetContestsByElectionId(0))
            .Returns(new List <Contest>());

            var mockCandidateServices = new Mock <ICandidatesServices>();

            mockCandidateServices.Setup(mut => mut.GetCandidatesByContestId(0))
            .Returns(new List <Candidate>());

            var contestsController = new ContestsController(
                mockWebConfigContainer.Object,
                mockContestServices.Object,
                mockCandidateServices.Object)
            {
                Configuration = new HttpConfiguration(),
                Request       = new HttpRequestMessage
                {
                    Method     = HttpMethod.Post,
                    RequestUri = new Uri("http://localhost:63190/api/v1/contests/1/candidates")
                }
            };

            // Act
            //var actionResult = contestsController.GetContests(invalidElectionId);

            //var ct = new CancellationToken();
            //var response = actionResult.ExecuteAsync(ct).Result;

            //// Assert
            //Assert.IsInstanceOfType(actionResult, typeof(IHttpActionResult));
            //Assert.IsInstanceOfType(actionResult, typeof(BadRequestErrorMessageResult));
            //Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
コード例 #5
0
 public void Initialize()
 {
     this.contestsController = new ContestsController(this.EmptyOjsData);
 }
コード例 #6
0
 private void UpdateContestList(object state)
 {
     ContestsController.UpdateContests();
 }
コード例 #7
0
        public void DissmissContestShouldWorkCorrectly()
        {
            var fakeContest = this.mocks.FakeContestRepository.Object.GetAll().FirstOrDefault();
            if (fakeContest == null)
            {
                Assert.Fail();
            }

            var fakeUser = this.mocks.FakeUserRepository.Object.GetAll().FirstOrDefault();
            if (fakeUser == null)
            {
                Assert.Fail();
            }

            var mockContext = new Mock<IPhotoBattlesData>();
            mockContext.Setup(c => c.Users)
                       .Returns(this.mocks.FakeUserRepository.Object);
            mockContext.Setup(c => c.Contests)
                       .Returns(this.mocks.FakeContestRepository.Object);

            var mockIdProvider = new Mock<IUserIdProvider>();
            mockIdProvider.Setup(ip => ip.GetUserId())
                          .Returns(fakeUser.Id);

            var contestController = new ContestsController(mockContext.Object, mockIdProvider.Object);

            var response = contestController.DismissContest(fakeContest.Id);

            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.IsInstanceOfType(response, typeof(RedirectToRouteResult));
        }
コード例 #8
0
        public void EditContestShouldUpdateTheRecordCorrectly()
        {
            var fakeContest = this.mocks.FakeContestRepository.Object.GetAll().FirstOrDefault();
            if (fakeContest == null)
            {
                Assert.Fail();
            }

            var fakeUser = this.mocks.FakeUserRepository.Object.GetAll().FirstOrDefault();
            if (fakeUser == null)
            {
                Assert.Fail();
            }

            var mockContext = new Mock<IPhotoBattlesData>();
            mockContext.Setup(c => c.Users)
                       .Returns(this.mocks.FakeUserRepository.Object);
            mockContext.Setup(c => c.Contests)
                       .Returns(this.mocks.FakeContestRepository.Object);

            var mockIdProvider = new Mock<IUserIdProvider>();
            mockIdProvider.Setup(ip => ip.GetUserId())
                          .Returns(fakeUser.Id);

            var contestController = new ContestsController(mockContext.Object, mockIdProvider.Object);

            var editContest = new ContestBindingModel()
            {
                Title = "Edited contest title",
                Description = "Edited contest description",
                VotingStrategyEnum = VotingStrategyEnum.Open,
                ParticipationStrategyEnum = ParticipationStrategyEnum.Open,
                RewardStrategyEnum = RewardStrategyEnum.SingleWinner,
                DeadlineStrategyEnum = DeadlineStrategyEnum.ParticipantsLimit,
                ParticipantsLimit = 3
            };

            var response = contestController.EditContest(editContest, fakeContest.Id);

            var result = this.mocks.FakeContestRepository.Object.GetAll().FirstOrDefault();
            if (result == null)
            {
                Assert.Fail();
            }

            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.IsInstanceOfType(response, typeof(RedirectToRouteResult));
            Assert.AreEqual(editContest.Title, result.Title);
            Assert.AreEqual(editContest.Description, result.Description);
        }