public void ShouldSaveAPictureWithFileName()
        {
            var id = Guid.NewGuid();

            var mockPictureRepository = new Mock <IPictureRepository>();

            mockPictureRepository.Setup(r => r.Save(It.IsAny <Picture>(), It.IsAny <byte[]>())).Returns <Picture, byte[]>((p, i) =>
            {
                p.Id  = id;
                p.Url = new Uri("http://foo", UriKind.Absolute);
                return(p);
            });

            var mockTagRepository = new Mock <ITagRepository>();

            var pictureController = new PicturesController(mockPictureRepository.Object, mockTagRepository.Object);

            var content = new StreamContent(File.OpenRead(Path.Combine(Environment.CurrentDirectory, "multipartStreamEmpty.txt")));

            content.Headers.Add("Content-Type", "multipart/form-data; boundary=---------------------------7dcfd134057c");
            pictureController.Request = new HttpRequestMessage()
            {
                Content = content
            };

            var picture = pictureController.Post();

            Assert.AreEqual(picture.Id, id);
            Assert.AreEqual(picture.Url.ToString(), "http://foo/");
            Assert.AreEqual(picture.Name, "test.txt");
            Assert.IsNull(picture.Description);
            Assert.IsNull(picture.Tags);

            mockTagRepository.Verify(r => r.IncrementPictureCount(It.IsAny <string>()), Times.Never());
        }
 public void ShouldThrowWhenMimeIsNotFormData()
 {
     try
     {
         var controller = new PicturesController();
         controller.Request = new HttpRequestMessage()
         {
             Content = new StreamContent(new MemoryStream())
         };
         controller.Post();
     }
     catch (HttpResponseException ex)
     {
         Assert.AreEqual(ex.Response.StatusCode, HttpStatusCode.UnsupportedMediaType);
     }
 }