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);
        }
Esempio n. 5
0
 /// <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);
 }
Esempio n. 7
0
        /// <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);
        }