Beispiel #1
0
        public Tweet Create(CreateTwitData createTwitData)
        {
            if (string.IsNullOrWhiteSpace(createTwitData.Content))
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest));

            int authUserId = credentialsChecker.GetAuthUserId(HttpContext.Current);

            if (authUserId!=-1)
                return repositoryTwits.CreateTweet(authUserId, createTwitData.Content, DateTime.Now);
            else
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Unauthorized)); ;
        }
        public void CreateShouldCallRepositoryTest()
        {
            StatusesRepositorySpy spy_repository = new StatusesRepositorySpy();
            CredentialsCheckerSpy_AlwaysPass spy_checker = new CredentialsCheckerSpy_AlwaysPass();
            StatusesController target = new StatusesController(spy_repository, spy_checker);
            CreateTwitData arg = new CreateTwitData() { Content = "Twit content" };
            spy_repository.CreateTweetResult = new Tweet() { Content = arg.Content, DateAndTime = DateTime.Now, Id = 20, UserId = 1 };

            var config = new HttpConfiguration();
            var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/1.0/statuses/create");
            var route = config.Routes.MapHttpRoute("TestApi", "api/1.0/{controller}/{action}");
            var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "statuses" }, { "action", "create" } });
            target.ControllerContext = new HttpControllerContext(config, routeData, request);
            target.Request = request;
            target.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;

            var actual = target.Create(arg);

            Assert.AreEqual(arg.Content,spy_repository.CreateTweetContent);
            Assert.AreEqual(1, spy_repository.CreateTweetUserId);
            Assert.AreNotEqual(new DateTime(), spy_repository.CreateTweetDateTime);
        }