예제 #1
0
        public async void RunMainTask_NoProvider()
        {
            var config = new Dictionary <string, string>();

            var task = new PullTask(_projectService.Object, _projectMemberService.Object, _externalServiceService.Object, _externalServiceTypeService.Object, _providerService.Object, _taskProviderManager.Object, _logger.Object);

            task.SetConfig(config, "working");
            task.Provider = "NotExistRepositoryProvider";

            var result = await task.RunMainTask(new Dictionary <string, string>());

            Assert.False(result.IsSuccess);
            Assert.Equal("Code repository provider \"NotExistRepositoryProvider\" could not be found.", result.ErrorMessage);
        }
예제 #2
0
        public async void RunMainTask_AdditionalConfigSecured()
        {
            _taskProviderManager.Setup(p => p.InvokeTaskProvider(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync((string taskProviderDll, string taskProviderArgs, string secretTaskProviderArgs) => new Dictionary <string, object>
            {
                { "repositoryLocation", "c:\\test" }
            });
            _taskProviderManager.Setup(p => p.GetTaskProviders(It.IsAny <string>())).Returns(new List <TaskProviderItem>
            {
                new TaskProviderItem("FakeCodeRepositoryProvider", "path/to/FakeCodeRepositoryProvider.dll", new string[] { "GitHub" })
            });
            _externalServiceService.Setup(p => p.GetExternalServiceByName(It.IsAny <string>())).ReturnsAsync((string name) => new ExternalServiceDto
            {
                Name   = name,
                Config = new Dictionary <string, string>
                {
                    { "AuthToken", "123" }
                }
            });

            var config = new Dictionary <string, string>
            {
                { "GitHubExternalService", "github-test" }
            };

            var task = new PullTask(_projectService.Object, _projectMemberService.Object, _externalServiceService.Object, _externalServiceTypeService.Object, _providerService.Object, _taskProviderManager.Object, _logger.Object);

            task.SetConfig(config, "working");
            task.Provider          = "FakeCodeRepositoryProvider";
            task.AdditionalConfigs = new Dictionary <string, string>
            {
                { "ConnectionString", "Server=localhost;Database=TestProject;User ID=sa;Password=samprod;" }
            };

            var result = await task.RunMainTask(new Dictionary <string, string>());

            Assert.True(result.IsSuccess);
            Assert.Equal("c:\\test", result.ReturnValue);
            Assert.Equal("The repository in c:\\test has been pulled to the latest update", result.TaskRemarks);

            Assert.Equal(2, task.AdditionalConfigs.Count);
            Assert.Equal(2, task.SecuredAdditionalConfigs.Count);
            Assert.Equal("***", task.SecuredAdditionalConfigs["AuthToken"]);
            Assert.Equal("***", task.SecuredAdditionalConfigs["ConnectionString"]);
            Assert.Equal("123", task.AdditionalConfigs["AuthToken"]);
            Assert.Equal("Server=localhost;Database=TestProject;User ID=sa;Password=samprod;", task.AdditionalConfigs["ConnectionString"]);
        }
예제 #3
0
        public async void RunMainTask_Failed()
        {
            _taskProviderManager.Setup(p => p.InvokeTaskProvider(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync((string taskProviderDll, string taskProviderArgs, string secretTaskProviderArgs) => new Dictionary <string, object>
            {
                { "errorMessage", "error-message" }
            });

            var config = new Dictionary <string, string>();

            var task = new PullTask(_projectService.Object, _projectMemberService.Object, _externalServiceService.Object, _externalServiceTypeService.Object, _providerService.Object, _taskProviderManager.Object, _logger.Object);

            task.SetConfig(config, "working");
            task.Provider = "FakeCodeRepositoryProvider";

            var result = await task.RunMainTask(new Dictionary <string, string>());

            Assert.False(result.IsSuccess);
            Assert.Equal("error-message", result.ErrorMessage);
        }
예제 #4
0
        public async void RunMainTask_Success()
        {
            _taskProviderManager.Setup(p => p.InvokeTaskProvider(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync((string taskProviderDll, string taskProviderArgs, string secretTaskProviderArgs) => new Dictionary <string, object>
            {
                { "repositoryLocation", "c:\\test" }
            });

            var config = new Dictionary <string, string>();

            var task = new PullTask(_projectService.Object, _projectMemberService.Object, _externalServiceService.Object, _externalServiceTypeService.Object, _providerService.Object, _taskProviderManager.Object, _logger.Object);

            task.SetConfig(config, "working");
            task.Provider = "FakeCodeRepositoryProvider";

            var result = await task.RunMainTask(new Dictionary <string, string>());

            Assert.True(result.IsSuccess);
            Assert.Equal("c:\\test", result.ReturnValue);
            Assert.Equal("The repository in c:\\test has been pulled to the latest update", result.TaskRemarks);
        }
예제 #5
0
        public static async Task <RestStatus> PullTask(int currentRole, bool pullTasks)
        {
            RestStatus    status  = new RestStatus();
            List <string> tanNums = new List <string>();

            if (!string.IsNullOrEmpty(Sessionkey))
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(BEARER_HEDER, Sessionkey);
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(APPLICATION_JSON));

                    StringContent stringContent = new StringContent("productId=1");

                    HttpResponseMessage response = await httpClient.GetAsync(PULL_TASK + "?productId=1&currentRole=" + currentRole + "&pullTasks=" + pullTasks);

                    using (HttpContent content = response.Content)
                    {
                        string responseText = await content.ReadAsStringAsync();

                        status.HttpCode     = response.StatusCode;
                        status.HttpResponse = responseText;
                        if (status.HttpCode == System.Net.HttpStatusCode.OK)
                        {
                            PullTask pullTask = JsonConvert.DeserializeObject <PullTask>(responseText);
                            status.UserObject    = pullTask;
                            status.StatusMessage = "User Tans Pulled Successfully . .";
                        }
                        else
                        {
                            status.StatusMessage = responseText;
                        }
                    }
                }
            }
            return(status);
        }
예제 #6
0
        private async Task LoadTasks(int RoleID, bool pullTasks)
        {
            try
            {
                ProgressBarVisibility = Visibility.Visible;
                ButtonEnable          = false;
                ClearTaskSheet();
                if (pullTasks)
                {
                    RestStatus pullTaskResult = await RestHub.PullTask(RoleID, pullTasks);

                    PullTask   pullTask   = pullTaskResult.UserObject != null ? (PullTask)pullTaskResult.UserObject : null;
                    PullTaskVM pullTaskVm = new PullTaskVM();
                    if (pullTask != null)
                    {
                        pullTaskVm.TanNumber = pullTask.TanNumber;
                        if (pullTask.UserRanks != null)
                        {
                            pullTaskVm.UserRank = pullTask.UserRanks.Find(ur => ur.Key == U.UserName)?.Rank;
                        }
                        if (pullTask.TanRanks != null && pullTask.TanNumber != null)
                        {
                            pullTaskVm.AllottedTanRank = pullTask.TanRanks.Find(ur => ur.Key == pullTask.TanNumber)?.Rank;
                        }
                        List <RankVM> rankVM = new List <RankVM>();
                        int           count  = 1;
                        foreach (var r in pullTask.TanRanks)
                        {
                            rankVM.Add(new RankVM {
                                DisplayOrder = count++, Key = r.Key, Rank = r.Rank, Score = r.Score.ToString()
                            });
                        }
                        pullTaskVm.TanRanks = new ObservableCollection <RankVM>(rankVM);
                        rankVM = new List <RankVM>();
                        count  = 1;
                        foreach (var r in pullTask.UserRanks)
                        {
                            rankVM.Add(new RankVM {
                                DisplayOrder = count++, Key = r.Key, Rank = r.Rank, Score = r.Score.ToString()
                            });
                        }
                        pullTaskVm.UserRanks = new ObservableCollection <Core.RankVM>(rankVM);
                        PullTaskDetails.ShowWindow(pullTaskVm);
                    }
                }
                RestStatus status = await RestHub.MyTans(RoleID, pullTasks);

                if (status.HttpCode == System.Net.HttpStatusCode.OK)
                {
                    List <TaskDTO> tans = status.UserObject as List <TaskDTO>;
                    if (tans != null && tans.Count > 0)
                    {
                        foreach (TaskDTO tan in tans)
                        {
                            Tasks.Add(new TaskDeatilsVM
                            {
                                TanId             = tan.Id,
                                TanName           = tan.TanName,
                                Status            = tan.Status,
                                Analyst           = tan.Analyst,
                                BatchNo           = tan.BatchNo,
                                NUMsCount         = tan.NUMsCount,
                                QC                = tan.QC,
                                Reviewer          = tan.Reviewer,
                                RXNsCount         = tan.RXNsCount,
                                Version           = tan.Version,
                                TanCompletionDate = tan.TanCompletionDate,
                                ProcessingNote    = tan.ProcessingNote,
                                NearToTargetDate  = tan.NearToTargetDate
                            });
                        }
                        Tasks.UpdateDisplayOrder();
                        UserTasks = new ListCollectionView(Tasks);
                    }
                    else
                    {
                        AppInfoBox.ShowInfoMessage("No Tasks Found. Try GetTasks After Some Time.");
                    }
                }
                else
                {
                    AppErrorBox.ShowErrorMessage("Some error occured in Getting Tans.", status.StatusMessage);
                }
                ButtonEnable = true;
            }
            catch (Exception ex)
            {
                Log.This(ex);
            }
            finally
            {
                ProgressBarVisibility = Visibility.Hidden;
            }
        }