public void Allow_ProcessMessage() { this.deletedMessage = null; this.fileUpdated = false; VerifyFileMessage message = new VerifyFileMessage() { RepositoryId = 1, FileId = 1 }; IMessageHandler queueService = this.GetVerifyFileQueueService(); using (ShimsContext.Create()) { ShimConfigReader<int>.GetRepositoryConfigValuesStringString = (baseRepositoryName, SettingName) => { return 3; }; queueService.ProcessMessage(message); } Assert.IsTrue(this.deletedMessage == message); Assert.IsTrue(this.isDeletedFromBlob); Assert.IsTrue(this.file.Status == FileStatus.Posted.ToString()); }
/// <summary> /// Verifies if the file exists in the repository /// </summary> /// <param name="fileId">File Id</param> /// <param name="repositoryId">Repository Id</param> /// <param name="userId">User Id</param> /// <returns>OperationStatus returns Success if the file exists</returns> public override OperationStatus CheckIfFileExistsOnExternalRepository(VerifyFileMessage verifyFileMessage) { Repository repository = this.RepositoryService.GetRepositoryById(verifyFileMessage.RepositoryId); DM.File file = this.GetFileByFileId(verifyFileMessage.FileId); this.RepositoryAdapter = this.RepositoryAdapterFactory.GetRepositoryAdapter(repository.BaseRepository.Name); string userName; string password; if ((bool)repository.IsImpersonating) { userName = repository.ImpersonatingUserName; password = repository.ImpersonatingPassword; } else { userName = verifyFileMessage.UserName; password = verifyFileMessage.Password; } string authorization = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(userName /*UserName*/ + ":" + password /*Password*/)); string downloadURL = String.Join(string.Empty, repository.HttpGetUriTemplate, HttpUtility.UrlEncode(file.Identifier)); OperationStatus status = this.RepositoryAdapter.CheckIfFileExists(downloadURL, file.Identifier, authorization); return OperationStatus.CreateSuccessStatus(); }
/// <summary> /// Verifies if the file exists in the repository /// </summary> /// <param name="verifyFileMessage">Verify File Message</param> /// <returns>OperationStatus returns Success if the file exists</returns> public virtual OperationStatus CheckIfFileExistsOnExternalRepository(VerifyFileMessage verifyFileMessage) { return OperationStatus.CreateFailureStatus("not implemented"); }
public void Error_When_CheckIfFileExistsOnExternalRepository_Returns_Failure_AND_Exceeds_Maximum_Retries() { this.deletedMessage = null; this.fileUpdated = false; int startCount = 2; VerifyFileMessage message = new VerifyFileMessage() { RepositoryId = 1, FileId = 1, RetryCount = startCount }; VerifyFileQueueService queueService = this.GetVerifyFileQueueService(); this.fileService = new StubIFileService() { CheckIfFileExistsOnExternalRepositoryVerifyFileMessage = (verifyMessage) => { return OperationStatus.CreateFailureStatus(string.Empty); }, GetFileByFileIdInt32 = (fileId) => { this.file = new File() { FileId = 1 }; return file; }, UpdateFileFile = (file) => { this.file = file; return true; }, }; using (ShimsContext.Create()) { ShimConfigReader<int>.GetRepositoryConfigValuesStringString = (baseRepositoryName, SettingName) => { return 3; }; queueService.ProcessMessage(message); } Assert.IsTrue(this.file.Status == FileStatus.Error.ToString()); Assert.IsTrue(this.deletedMessage == message); Assert.IsFalse(this.isDeletedFromBlob); }
/// <summary> /// Verifies if the file exists in the repository /// </summary> /// <param name="verifyFileMessage">Verify File Message</param> /// <returns>OperationStatus returns Success if the file exists</returns> public override OperationStatus CheckIfFileExistsOnExternalRepository(VerifyFileMessage verifyFileMessage) { Repository repository = this.RepositoryDetails.GetRepositoryById(verifyFileMessage.RepositoryId); DM.File file = this.GetFileByFileId(verifyFileMessage.FileId); this.RepositoryAdapter = this.RepositoryAdapterFactory.GetRepositoryAdapter(repository.BaseRepository.Name); AuthToken token = this.GetAuthTokens(repository, verifyFileMessage.UserId); OperationStatus status = this.RepositoryAdapter.CheckIfFileExists(string.Empty, file.Identifier, token.AccessToken); return status; }
/// <summary> /// Updates the file status as Posted. /// </summary> /// <param name="message">VerifyFileMessage instance.</param> private void UpdateFileAndDeleteFromQueue(VerifyFileMessage message) { DM.File file = this.FileService.GetFileByFileId(message.FileId); file.RepositoryId = message.RepositoryId; file.ModifiedOn = DateTime.UtcNow; file.PublishedOn = DateTime.UtcNow; file.BlobId = string.Empty; file.isDeleted = true; file.Status = FileStatus.Posted.ToString(); this.FileService.UpdateFile(file); this.QueueRepository.DeleteFromQueue(message); }
/// <summary> /// Creates an instance of VerifyFileMessage from PublishMessage and Adds the VerifyFileMessage to the Queue. /// </summary> /// <param name="publishMessage">PublishMessage instance.</param> private void AddVerifyFileMessageToQueue(PublishMessage publishMessage) { VerifyFileMessage message = new VerifyFileMessage() { FileId = publishMessage.FileId, RepositoryId = publishMessage.RepositoryId, UserId = publishMessage.UserId, ProcessOn = DateTime.UtcNow.AddSeconds(this.VerifyFileInterval), UserName = publishMessage.UserName, Password = publishMessage.Password }; this.QueueRepository.AddMessageToQueue(message); //// TODO Need to use the Async Method //// return this.queueRepository.AddMessageToQueueAsync(message); }