public void Should_Return_Validation_Error_When_Invalid_Data_Given() { // Checked in the Request Validation: applicationSettingsMock.Expect(x => x.MaxFileSizeForUpload) .Repeat.Any() .Return(FileSize.Create(2, FileSize.Unit.Megabyte)); // Pass the Bootstrapper with Mocks into the Testing Browser: var browser = new Browser(bootstrapper); // Define the When Action: var result = browser.Post("/file/upload", with => { with.Header("Accept", "application/json"); with.HttpRequest(); }); // Check the Results: Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode); // Deserialize the Error: var error = new JsonSerializer().Deserialize <ServiceErrorModel>(result); Assert.AreEqual(ServiceErrorEnum.ValidationError, error.Code); Assert.AreEqual("Validation failed for Request Parameters: (Parameter = Title, Errors = ('Title' must not be empty.), Parameter = Tags, Errors = (Length of the array is not between 1 and 5.), Parameter = File, Errors = ('File' must not be empty.))", error.Details); }
public void BytesCorrect_When_Converting_Between_Units() { Assert.AreEqual(2, FileSize.Create(2, Unit.Byte).Get(Unit.Byte)); Assert.AreEqual((long)(2 * Math.Pow(2, 10)), FileSize.Create(2, Unit.Kilobyte).Get(Unit.Byte)); Assert.AreEqual((long)(1000 * Math.Pow(2, 20)), FileSize.Create(1000, Unit.Megabyte).Get(Unit.Byte)); Assert.AreEqual((long)(2 * Math.Pow(2, 30)), FileSize.Create(2, Unit.Gigabyte).Get(Unit.Byte)); Assert.AreEqual((long)(3 * Math.Pow(2, 40)), FileSize.Create(3, Unit.Terabyte).Get(Unit.Byte)); }
public void Parameters_Mapped_Correctly_When_Parameters_Are_Given() { string uploadDirectory = "upload_dir"; FileSize fileSize = FileSize.Create(321, FileSize.Unit.Kilobyte); ApplicationSettings applicationSettings = new ApplicationSettings(uploadDirectory, fileSize); Assert.AreEqual(uploadDirectory, applicationSettings.FileUploadDirectory); Assert.AreEqual(321, (int)applicationSettings.MaxFileSizeForUpload.Get(FileSize.Unit.Kilobyte)); }
public void Constructor_Throws_When_Required_Parameter_Is_Null() { string uploadDirectory = "upload_dir"; FileSize fileSize = FileSize.Create(321, FileSize.Unit.Kilobyte); Assert.Throws <ArgumentNullException>(() => new ApplicationSettings(uploadDirectory, null)); Assert.Throws <ArgumentNullException>(() => new ApplicationSettings(null, fileSize)); Assert.Throws <ArgumentNullException>(() => new ApplicationSettings(null, null)); Assert.DoesNotThrow(() => new ApplicationSettings(uploadDirectory, fileSize)); }
public void ConfigureApplicationContainer(TinyIoCContainer container) { container.Register <IApplicationSettings>(new ApplicationSettings("uploads", FileSize.Create(2, FileSize.Unit.Megabyte))); }
public void Should_Store_File_When_Request_Is_Valid() { // Define the File Name and Content: var fileName = "persons.txt"; var fileContent = new StringBuilder() .AppendLine("FirstName;LastName;BirthDate") .AppendLine("Philipp;Wagner;1986/05/12") .AppendLine("Max;Mustermann;2014/01/01"); // Create the File: Assert.AreEqual(true, Create(fileName, fileContent.ToString())); // The Result of the Upload (we are not writing to disk actually): var fileUploadResult = new FileUploadResult() { Identifier = Guid.NewGuid().ToString() }; // Checked in the Request Validation: applicationSettingsMock.Expect(x => x.MaxFileSizeForUpload) .Repeat.Any() .Return(FileSize.Create(2, FileSize.Unit.Megabyte)); // Probably we should also check the Content? fileUploadHandlerMock.Expect(x => x.HandleUpload(Arg <string> .Is.Equal(fileName), Arg <Stream> .Is.Anything)) .Repeat.Once() .Return(Task.Delay(100).ContinueWith(x => fileUploadResult)); // Pass the Bootstrapper with Mocks into the Testing Browser: var browser = new Browser(bootstrapper); using (var textReader = new FileStream(GetAbsolutePath(fileName), FileMode.Open)) { // Define the Multipart Form Data for an upload: var multipartFormData = new BrowserContextMultipartFormData( (configuration => { configuration.AddFile("file", fileName, "text", textReader); configuration.AddFormField("tags", "text", "Hans,Wurst"); configuration.AddFormField("description", "text", "Description"); configuration.AddFormField("title", "text", "Title"); } )); // Define the When Action: var result = browser.Post("/file/upload", with => { with.Header("Accept", "application/json"); with.Header("Content-Length", "1234"); with.HttpRequest(); with.MultiPartFormData(multipartFormData); }); // File Upload was successful: Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); // We get the Expected Identifier: var deserializedResponseContent = new JsonSerializer().Deserialize <FileUploadResult>(result); Assert.AreEqual(deserializedResponseContent.Identifier, fileUploadResult.Identifier); } // Finally delete the Temporary file: Assert.AreEqual(true, Delete(fileName)); }