private void GetCommentsTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetCommentsTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit = 3;

            var testPost = GetFirstPostWhere(sb, PostType.Top, i => i.Children >= limit + limit);

            if (testPost == null)
            {
                return;
            }

            var request = new NamedInfoModel(testPost.Url)
            {
                Limit = limit
            };
            var response = _api.GetComments(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Url;
            response       = _api.GetComments(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            sb.AppendLine("pass.");
        }
        private void GetPostsByCategoryTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetPostsByCategoryTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit   = 3;
            var request = new PostsByCategoryModel(PostType.New, "steepshot")
            {
                ShowNsfw = _user.IsNsfw, ShowLowRated = _user.IsLowRated, Limit = limit
            };
            var response = _api.GetPostsByCategory(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Url;
            response       = _api.GetPostsByCategory(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            sb.AppendLine("pass.");
        }
 public Task RunServerTests()
 {
     return(Task.Run(() =>
     {
         try
         {
             var num = 1;
             _log.AppendLine("DitchApi tests started");
             GetUserPostsTest(_log, num++);
             GetUserRecentPostsTest(_log, num++);
             GetPostsTest(_log, num++);
             GetPostsByCategoryTest(_log, num++);
             GetPostVotersTest(_log, num++);
             GetCommentsTest(_log, num++);
             GetUserProfileTest(_log, num++);
             GetUserFriendsTest(_log, num++);
             GetPostInfoTest(_log, num++);
             SearchUserTest(_log, num++);
             UserExistsCheckTest(_log, num++);
             GetCategoriesTest(_log, num++);
             SearchCategoriesTest(_log, num++);
             _log.AppendLine("Tests End;");
             StepFinished?.Invoke(_log.ToString());
         }
         catch (Exception e)
         {
             StepFinished?.Invoke($"{e.Message} {e.StackTrace}");
         }
     }));
 }
Exemple #4
0
        public async void ExecuteWorkflowStep(Job job)
        {
            ProgressPercentage = 0;

            await Task.Run(() =>
            {
                try
                {
                    job.OnJobCompleted       += OnJobCompleted;
                    job.OnJobProgressChanged += OnJobProgressChanged;

                    job.OnJobHasError += OnAnErrorOccurredInJob;

                    _jobRunner.RunJob(job, _outputFileMover);

                    _finishedEvent.WaitOne();

                    StepFinished?.Invoke(this, EventArgs.Empty);
                }
                finally
                {
                    job.OnJobCompleted       -= OnJobCompleted;
                    job.OnJobProgressChanged -= OnJobProgressChanged;
                    job.OnJobHasError        -= OnAnErrorOccurredInJob;
                }
            });
        }
        private void SearchCategoriesTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) SearchCategoriesTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit = 3;

            var request = new SearchWithQueryModel("go")
            {
                Limit = limit
            };
            var response = _api.SearchCategories(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Name;
            response       = _api.SearchCategories(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            sb.AppendLine("pass.");
        }
        private void GetPostInfoTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetPostInfoTest : ");
            StepFinished?.Invoke(sb.ToString());

            var getPosts = new PostsModel(PostType.Top);

            var postsResp = _api.GetPosts(getPosts, CancellationToken.None)
                            .Result;

            if (!postsResp.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {postsResp.Error.Message}");
                return;
            }
            if (postsResp.Result.Results.Count == 0)
            {
                sb.AppendLine("fail. Reason:{Environment.NewLine} There are no Posts!");
                return;
            }

            var testPost = postsResp.Result.Results.First();


            var request  = new NamedInfoModel(testPost.Url);
            var response = _api.GetPostInfo(request, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {postsResp.Error.Message}");
                return;
            }

            sb.AppendLine("pass.");
        }
Exemple #7
0
        public async void ExecuteWorkflowStep(Job job)
        {
            ProgressPercentage = 0;

            await Task.Run(() =>
            {
                try
                {
                    job.OnJobCompleted       += OnJobCompleted;
                    job.OnJobProgressChanged += OnJobProgressChanged;

                    job.OnJobHasError += OnAnErrorOccurredInJob;

                    // TODO: Maybe move to a more resonable place, i.e. trigger conversion as result of the task?
                    var preCheck = _profileChecker.ProfileCheck(job.Profile, job.Accounts);
                    if (!preCheck)
                    {
                        throw new ProcessingException("Invalid Profile", preCheck[0]);
                    }

                    _jobRunner.RunJob(job, _outputFileMover);

                    _finishedEvent.WaitOne();

                    StepFinished?.Invoke(this, EventArgs.Empty);
                }
                finally
                {
                    job.OnJobCompleted       -= OnJobCompleted;
                    job.OnJobProgressChanged -= OnJobProgressChanged;
                    job.OnJobHasError        -= OnAnErrorOccurredInJob;
                }
            });
        }
        private void GetUserRecentPostsTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetUserRecentPostsTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit   = 3;
            var request = new CensoredNamedRequestWithOffsetLimitModel
            {
                Login        = _user.Login,
                Limit        = limit,
                ShowNsfw     = _user.IsNsfw,
                ShowLowRated = _user.IsLowRated
            };
            var response = _api.GetUserRecentPosts(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Url;
            response       = _api.GetUserRecentPosts(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            sb.AppendLine("pass.");
        }
Exemple #9
0
        public async Task ExecuteWorkflowStep(Job job)
        {
            ProgressPercentage = 0;

            try
            {
                _taskCompletionSource     = new TaskCompletionSource <JobCompletedEventArgs>();
                job.OnJobCompleted       += OnJobCompleted;
                job.OnJobProgressChanged += OnJobProgressChanged;

                job.OnJobHasError += OnAnErrorOccurredInJob;

                await _jobRunner.RunJob(job, _outputFileMover);

                await _taskCompletionSource.Task;

                StepFinished?.Invoke(this, EventArgs.Empty);
            }
            finally
            {
                job.OnJobCompleted       -= OnJobCompleted;
                job.OnJobProgressChanged -= OnJobProgressChanged;
                job.OnJobHasError        -= OnAnErrorOccurredInJob;
            }
        }
 protected void Navigate(InterViewModelPackage package)
 {
     if (StepFinished != null)
     {
         StepFinished.Invoke(package);
     }
     StepFinished = null;
 }
        private void FollowTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) FollowTest : ");
            StepFinished?.Invoke(sb.ToString());
            // Load last created post
            var getPosts = new PostsModel(PostType.New)
            {
                Login = _user.Login
            };

            var postsResp = _api.GetPosts(getPosts, CancellationToken.None)
                            .Result;

            if (!postsResp.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {postsResp.Error.Message}");
                return;
            }
            if (postsResp.Result.Results.Count == 0)
            {
                sb.AppendLine("fail. Reason:{Environment.NewLine} There are no Posts to Follow!");
                return;
            }

            var testPost = postsResp.Result.Results.First();

            var votereq = new FollowModel(_user, FollowType.Follow, testPost.Author);
            var rez     = _api.Follow(votereq, CancellationToken.None)
                          .Result;

            if (!rez.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {rez.Error.Message}");
                return;
            }

            Task.Delay(10000);

            var userFriendsReq = new UserFriendsModel(_user.Login, FriendsType.Followers)
            {
                Login = _user.Login, Offset = testPost.Author, Limit = 1
            };
            var verifyResp = _api.GetUserFriends(userFriendsReq, CancellationToken.None).Result;

            if (!verifyResp.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {verifyResp.Error.Message}");
                return;
            }
            if (verifyResp.Result.Results.Count != 1)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} user ({testPost.Author}) not found!");
                return;
            }
            sb.AppendLine("pass.");
        }
        private void GetUserFriendsTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetUserFriendsTest : ");
            StepFinished?.Invoke(sb.ToString());

            var limit = 3;

            var request = new UserFriendsModel(_user.Login, FriendsType.Followers)
            {
                Limit = limit
            };
            var response = _api.GetUserFriends(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Author;
            response       = _api.GetUserFriends(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            //---

            request = new UserFriendsModel(_user.Login, FriendsType.Following)
            {
                Limit = limit
            };
            response = _api.GetUserFriends(request, CancellationToken.None).Result;

            if (IsError1(sb, limit, response, response.Result.Results.Count))
            {
                return;
            }

            request.Offset = response.Result.Results.Last().Author;
            response       = _api.GetUserFriends(request, CancellationToken.None).Result;

            if (IsError2(sb, limit, response, request.Offset))
            {
                return;
            }

            sb.AppendLine("pass.");
        }
        private void LoginWithPostingKeyTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) LoginWithPostingKeyTest : ");
            StepFinished?.Invoke(sb.ToString());

            var request  = new ValidatePrivateKeyModel(_user.Login, _user.PostingKey, KeyRoleType.Posting);
            var response = _api.ValidatePrivateKey(request, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {response.Exception.Message}");
                return;
            }
            sb.AppendLine("pass.");
        }
        private void LoginWithPostingKeyTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) LoginWithPostingKeyTest : ");
            StepFinished?.Invoke(sb.ToString());

            var request  = new AuthorizedModel(_user);
            var response = _api.LoginWithPostingKey(request, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {response.Error.Message}");
                return;
            }
            sb.AppendLine("pass.");
        }
        private void GetUserProfileTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) GetUserProfileTest : ");
            StepFinished?.Invoke(sb.ToString());

            var request  = new UserProfileModel(_user.Login);
            var response = _api.GetUserProfile(request, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {response.Error.Message}");
                return;
            }

            sb.AppendLine("pass.");
        }
 public void Load()
 {
     for (int i = 0; i < stepMethods.Count(); i++)
     {
         try
         {
             Logger.Info($"Loading: {stepMethods.ElementAt(i).Name}()");
             var methodProxy = new MethodProxy(this, stepMethods.ElementAt(i), App.Current.Lake);
             methodProxy.Invoke();
             StepFinished?.Invoke(this, new StepFinishedEventArgs((uint)i, (uint)stepMethods.Count()));
         }
         catch (Exception e)
         {
             OnError("Uncaught error", new AppLoadingException(stepMethods.ElementAt(i).Name, e));
             return;
         }
     }
     Logger.Info("Done!");
     Succeced?.Invoke(this, new EventArgs());
 }
 public Task RunDitchApiTests()
 {
     return(Task.Run(() =>
     {
         try
         {
             var num = 1;
             _log.AppendLine("DitchApi tests started");
             LoginWithPostingKeyTest(_log, num++);
             VoteTest(_log, num++);
             FollowTest(_log, num++);
             CreateCommentTest(_log, num++);
             UploadTest(_log, num++);
             _log.AppendLine("Tests End;");
             StepFinished?.Invoke(_log.ToString());
         }
         catch (Exception e)
         {
             StepFinished?.Invoke($"{e.Message} {e.StackTrace}");
         }
     }));
 }
        private void UserExistsCheckTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) UserExistsCheckTest : ");
            StepFinished?.Invoke(sb.ToString());

            var request  = new UserExistsModel(_user.Login);
            var response = _api.UserExistsCheck(request, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {response.Error.Message}");
                return;
            }

            if (!response.Result.Exists)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} User {_user.Login} not found! ");
                return;
            }

            sb.AppendLine("pass.");
        }
        private void UploadTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) UploadTest : ");
            StepFinished?.Invoke(sb.ToString());

            var cat = "/9j/4AAQSkZJRgABAQEAwADAAAD/4QBqRXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAEAAAExAAIAAAAQAAAAModpAAQAAAABAAAAQgAAAABTaG90d2VsbCAwLjIyLjAAAAKgAgAJAAAAAQAAAMKgAwAJAAAAAQAAAMIAAAAAAAD/4Qn0aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPg0KCTxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+DQoJCTxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjE5NCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjE5NCIgdGlmZjpJbWFnZVdpZHRoPSIxOTQiIHRpZmY6SW1hZ2VIZWlnaHQ9IjE5NCIvPg0KCTwvcmRmOlJERj4NCjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAIBAQIBAQICAgICAgICAwUD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";

            byte[]       byteArray = Encoding.ASCII.GetBytes(cat);
            MemoryStream stream    = new MemoryStream(byteArray);

            var request = new UploadMediaModel(_user, stream, ".jpg")
            {
                GenerateThumbnail = false,
            };
            var mediaResponse = _api.UploadMedia(request, CancellationToken.None).Result;

            if (!mediaResponse.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {mediaResponse.Error.Message}");
                return;
            }

            var model = new PreparePostModel(_user, AppSettings.AppInfo.GetModel())
            {
                Tags  = new[] { "spam" },
                Title = "Upload test",
                Media = new[] { mediaResponse.Result },
            };

            var response = _api.CreateOrEditPost(model, CancellationToken.None).Result;

            if (!response.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {response.Error.Message}");
                return;
            }
            sb.AppendLine("pass.");
        }
Exemple #20
0
 private void OnFinish(object obj)
 {
     _saveChangedSettingsCommand.Execute(null);
     StepFinished?.Invoke(this, EventArgs.Empty);
     _taskCompletionSource.SetResult(null);
 }
 private void InvokeStepFinished()
 {
     StepFinished?.Invoke(this, EventArgs.Empty);
     _taskCompletionSource.SetResult(null);
 }
 private void CloseView()
 {
     StepFinished?.Invoke(this, EventArgs.Empty);
     CloseAction();
 }
 private void InvokeStepFinished()
 {
     StepFinished?.Invoke(this, EventArgs.Empty);
 }
        //ditchapi

        private void VoteTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) VoteTest : ");
            StepFinished?.Invoke(sb.ToString());
            // Load last created post
            var getPosts = new PostsModel(PostType.New)
            {
                Login = _user.Login
            };
            Post testPost;

            do
            {
                var postsResp = _api.GetPosts(getPosts, CancellationToken.None)
                                .Result;

                if (!postsResp.IsSuccess)
                {
                    sb.AppendLine($"fail. Reason:{Environment.NewLine} {postsResp.Error.Message}");
                    return;
                }
                if (postsResp.Result.Results.Count == 0)
                {
                    sb.AppendLine($"fail. Reason:{Environment.NewLine} There are no Posts to Upvote!");
                    return;
                }

                testPost = postsResp.Result.Results.FirstOrDefault(i => !i.Vote);
                if (testPost == null)
                {
                    getPosts.Offset = postsResp.Result.Results.Last().Url;
                }
            } while (testPost == null);

            var votereq = new VoteModel(_user, testPost, VoteType.Up);
            var rez     = _api.Vote(votereq, CancellationToken.None)
                          .Result;

            if (!rez.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {rez.Error.Message}");
                return;
            }

            Task.Delay(10000);
            getPosts.Offset = testPost.Url;
            getPosts.Limit  = 1;

            var verifyPostresp = _api.GetPosts(getPosts, CancellationToken.None)
                                 .Result;

            if (!verifyPostresp.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {verifyPostresp.Error.Message}");
                return;
            }
            if (verifyPostresp.Result.Results.Count != 1)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} Upvoted post ({testPost.Url}) not found!");
                return;
            }
            if (!verifyPostresp.Result.Results[0].Vote)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} post ({testPost.Url}) wasn`t Upvoted!");
                return;
            }

            sb.AppendLine("pass.");
        }
Exemple #25
0
 private void FinishInteraction()
 {
     StepFinished?.Invoke(this, EventArgs.Empty);
 }
 private void FinishStep()
 {
     StepFinished?.Invoke(this, EventArgs.Empty);
     _taskCompletionSource.SetResult(null);
     FinishInteraction?.Invoke();
 }
 private void OnStepFinished(StepFinishedArgs args)
 {
     StepFinished?.Invoke(this, args);
 }
 public virtual void FinishedHook()
 {
     StepFinished?.Invoke(this, EventArgs.Empty);
     _taskCompletionSource.SetResult(null);
 }
Exemple #29
0
 private void OnStepFinished(Fmi2Status status) =>
 StepFinished?.Invoke(status);
        private void CreateCommentTest(StringBuilder sb, int num)
        {
            sb.Append($"{num}) CreateCommentTest : ");
            StepFinished?.Invoke(sb.ToString());

            // Load last created post
            var getPosts = new PostsModel(PostType.New)
            {
                Login = _user.Login
            };

            var postsResp = _api.GetPosts(getPosts, CancellationToken.None)
                            .Result;

            if (!postsResp.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {postsResp.Error.Message}");
                return;
            }
            if (postsResp.Result.Results.Count == 0)
            {
                sb.AppendLine("fail. Reason:{Environment.NewLine} There are no Posts!");
                return;
            }

            var testPost = postsResp.Result.Results.First();
            var req      = new CreateOrEditCommentModel(_user, testPost, "Hi, I am a bot for testing Ditch api, please ignore this comment.", _appInfo);
            var rez      = _api.CreateOrEditComment(req, CancellationToken.None)
                           .Result;

            if (!UrlHelper.TryCastUrlToAuthorAndPermlink(testPost.Url, out var parentAuthor, out var parentPermlink))
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} url to permlink cast.");
                return;
            }

            var permlink = OperationHelper.CreateReplyPermlink(_user.Login, parentAuthor, parentPermlink);

            if (!rez.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {rez.Error.Message}");
                return;
            }

            Task.Delay(10000);

            var getComm = new NamedInfoModel(testPost.Url)
            {
                Offset = permlink, Limit = 1
            };
            var verifyPostresp = _api.GetComments(getComm, CancellationToken.None)
                                 .Result;

            if (!verifyPostresp.IsSuccess)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} {verifyPostresp.Error.Message}");
                return;
            }
            if (verifyPostresp.Result.Results.Count != 1)
            {
                sb.AppendLine($"fail. Reason:{Environment.NewLine} Comment ({permlink}) not found!");
                return;
            }

            sb.AppendLine("pass.");
        }