public void PostFile_ShouldReturnArgumentNullException_WhenFileIsNull() { using (ShimsContext.Create()) { ShimDiagnosticsProvider.ConstructorType = (dp, type) => { }; SkyDriveAdapter skyDriveAdapter = new SkyDriveAdapter(); PublishSkyDriveFileModel publishFileModel = new PublishSkyDriveFileModel(); skyDriveAdapter.PostFile(publishFileModel); } }
public void PostFile_ShouldReturnArgumentException_WhenFileNameHasWhitespaces() { using (ShimsContext.Create()) { ShimDiagnosticsProvider.ConstructorType = (dp, type) => { }; SkyDriveAdapter skyDriveAdapter = new SkyDriveAdapter(); PublishSkyDriveFileModel publishFileModel = new PublishSkyDriveFileModel() { File = new DataFile() { FileName = " " } }; skyDriveAdapter.PostFile(publishFileModel); } }
/// <summary> /// uploads the file to skydrive /// </summary> /// <param name="publishSkyDriveFileModel">PublishSkyDriveFileModel </param> /// <returns>File Id</returns> private string UploadFile(PublishSkyDriveFileModel publishSkyDriveFileModel) { Repository repository = publishSkyDriveFileModel.Repository; DataFile dataFile = publishSkyDriveFileModel.File; int fileId = publishSkyDriveFileModel.File.FileInfo.FileId; string fileName = Path.GetFileNameWithoutExtension(dataFile.FileName); string folderId = CreateFolderForFile(repository.Name, fileId.ToString(), fileName, publishSkyDriveFileModel.AuthToken); string url = string.Format(skydriveUserFileUploadUrlTemplate, folderId, publishSkyDriveFileModel.AuthToken.AccessToken); //Build Request Body Encoding encoding = Encoding.UTF8; string boundary = "--" + skyDriveMultiPartRequestBoundary; Stream formData = new MemoryStream(); StringBuilder sbRequest = new StringBuilder(); sbRequest.AppendLine(boundary); sbRequest.AppendLine(String.Format("Content-Disposition: form-data; name=\"file\"; filename=\"{0}\"", dataFile.FileName)); sbRequest.AppendLine("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); sbRequest.AppendLine(); byte[] bodyStart = encoding.GetBytes(sbRequest.ToString()); formData.Write(bodyStart, 0, bodyStart.Length); byte[] fileContents = dataFile.FileContent; formData.Write(fileContents, 0, fileContents.Length); sbRequest.Clear(); sbRequest.AppendLine(); sbRequest.AppendLine(boundary + "--"); byte[] bodyEnd = encoding.GetBytes(sbRequest.ToString()); formData.Write(bodyEnd, 0, bodyEnd.Length); formData.Position = 0; byte[] outboundBytes = new byte[formData.Length]; formData.Read(outboundBytes, 0, outboundBytes.Length); HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "POST"; request.ContentType = String.Format("multipart/form-data; boundary={0}", skyDriveMultiPartRequestBoundary); request.ContentLength = outboundBytes.Length; using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(outboundBytes, 0, outboundBytes.Length); } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Content)); Content content = serializer.ReadObject(response.GetResponseStream()) as Content; return content.Id; } }
public void PostFile_ShouldReturnExceptionMessage_WhenFileUploadThrowsError() { SkyDriveAdapter skyDriveAdapter = new SkyDriveAdapter(); PublishSkyDriveFileModel publishFileModel = new PublishSkyDriveFileModel() { File = new DataFile() { FileName = "SomeFileName", FileContent = new byte[1] }, AuthToken = new AuthToken() }; OperationStatus operationStatus; string errorMessage = "Some error message"; using (ShimsContext.Create()) { ShimSkyDriveAdapter.AllInstances.UploadFilePublishSkyDriveFileModel = (sda, psdfm) => { throw new Exception(errorMessage); return string.Empty; }; operationStatus = skyDriveAdapter.PostFile(publishFileModel); } }
public void PostFile_ShouldReturnSucceededStatus_WhenFileUploadIsSuccessful() { OperationStatus operationStatus; string fileId = "1234"; using (ShimsContext.Create()) { ShimDiagnosticsProvider.ConstructorType = (dp, type) => { }; SkyDriveAdapter skyDriveAdapter = new SkyDriveAdapter(); PublishSkyDriveFileModel publishFileModel = new PublishSkyDriveFileModel() { File = new DataFile() { FileName = "SomeFileName", FileContent = new byte[1] }, AuthToken = new AuthToken() }; ShimSkyDriveAdapter.AllInstances.UploadFilePublishSkyDriveFileModel = (sda, psdfm) => fileId; ShimDiagnosticsProvider.AllInstances.WriteInformationTraceTraceEventIdString = (diagnosticsProvider, traceEventId, message) => { }; operationStatus = skyDriveAdapter.PostFile(publishFileModel); } Assert.IsTrue(operationStatus.Succeeded); Assert.AreEqual(fileId, operationStatus.CustomReturnValues); }
public void PostFile_ShouldReturnInvalidAccessTokenErrorMessage_WhenAccessTokenIsNull() { using (ShimsContext.Create()) { ShimDiagnosticsProvider.ConstructorType = (dp, type) => { }; SkyDriveAdapter skyDriveAdapter = new SkyDriveAdapter(); PublishSkyDriveFileModel publishFileModel = new PublishSkyDriveFileModel() { File = new DataFile() { FileName = "SomeFileName", FileContent = new byte[1] } }; skyDriveAdapter.PostFile(publishFileModel); } }
public void PostFile_ShouldReturnArgumentException_WhenFileContentLengthIsZero() { using (ShimsContext.Create()) { ShimDiagnosticsProvider.ConstructorType = (dp, type) => { }; SkyDriveAdapter skyDriveAdapter = new SkyDriveAdapter(); PublishSkyDriveFileModel publishFileModel = new PublishSkyDriveFileModel() { File = new DataFile() { FileName = "SomeFileName", FileContent = new byte[0] } }; var operationStatus = skyDriveAdapter.PostFile(publishFileModel); } }
/// <summary> /// Method to publish file /// </summary> /// <param name="postFileData">PostFileModel object</param> /// <returns>returns File Identifier</returns> public override string PublishFile(PublishMessage publishModel) { string fileIndentifier = null; var file = this.GetFileByFileId(publishModel.FileId); Check.IsNotNull<DM.File>(file, "fileToPublish"); IEnumerable<DM.FileColumnType> fileColumnTypes = null; IEnumerable<DM.FileColumnUnit> fileColumnUnits = null; OperationStatus status = null; Encoding encoding = Encoding.UTF8; string identifier = string.Empty; Repository repository = this.RepositoryService.GetRepositoryById(publishModel.RepositoryId); string baseRepoName = repository.BaseRepository.Name; this.RepositoryAdapter = this.RepositoryAdapterFactory.GetRepositoryAdapter(baseRepoName); DataFile dataFile = this.GetDataFile(file); if (file.FileColumns != null && file.FileColumns.Count > 0) { // before posting the file set file column units and types fileColumnTypes = this.RetrieveFileColumnTypes(); fileColumnUnits = this.RetrieveFileColumnUnits(); } // Set the user Id on AuthToken publishModel.AuthToken.UserId = publishModel.UserId; publishModel.AuthToken.RespositoryId = repository.RepositoryId; AuthToken authToken = this.GetOrUpdateAuthTokens(repository, publishModel.AuthToken); PublishSkyDriveFileModel publishSkyDriveFileModel = new PublishSkyDriveFileModel() { File = dataFile, Repository = repository, FileColumnTypes = fileColumnTypes, FileColumnUnits = fileColumnUnits, AuthToken = authToken }; //post the file status = this.RepositoryAdapter.PostFile(publishSkyDriveFileModel); if (status.Succeeded) { fileIndentifier = (string)status.CustomReturnValues; } return fileIndentifier; }