public void JobsCountStrategyShouldHavePositiveCount() { var setting = new OrchestratorSettings() { AuthMode = "Basic", TenancyName = "Default", UsernameOrEmailAddress = "Test", Password = "******", BaseUrl = "Http://localhost", Strategy = "JobsCount", JobsCount = -1, }; Assert.False(setting.Validate()); }
public void SpecificStrategyShouldHaveAtLeastOneRobot() { var setting = new OrchestratorSettings() { AuthMode = "Basic", TenancyName = "Default", UsernameOrEmailAddress = "Test", Password = "******", BaseUrl = "Http://localhost", Strategy = "Specific", RobotIds = null, }; Assert.False(setting.Validate()); }
public void UerTokenRequiredForCloudAuth() { var setting = new OrchestratorSettings() { AuthMode = "Cloud", BaseUrl = "Http://localhost", Strategy = "JobsCount", JobsCount = 1, ProcessKeys = new ProcessKey[] { new ProcessKey() { Key = Guid.NewGuid().ToString(), Process = "test" } }, }; Assert.False(setting.Validate()); }
public void ShouldHaveAtLeastOneProcess() { var setting = new OrchestratorSettings() { AuthMode = "Basic", TenancyName = "Default", UsernameOrEmailAddress = "Test", Password = "******", BaseUrl = "Http://localhost", Strategy = "JobsCount", JobsCount = 1, ProcessKeys = null, }; Assert.False(setting.Validate()); }
public void TwoStrategyAllowed() { var setting = new OrchestratorSettings() { AuthMode = "Basic", TenancyName = "Default", UsernameOrEmailAddress = "Test", Password = "******", BaseUrl = "Http://localhost", Strategy = "invalid", ProcessKeys = new ProcessKey[] { new ProcessKey() { Key = Guid.NewGuid().ToString(), Process = "test" } }, }; Assert.False(setting.Validate()); }
public void UrlShouldBeValid() { var setting = new OrchestratorSettings() { AuthMode = "Basic", TenancyName = "Default", UsernameOrEmailAddress = "Test", Password = "******", BaseUrl = "invalid", Strategy = "JobsCount", JobsCount = 1, ProcessKeys = new ProcessKey[] { new ProcessKey() { Key = Guid.NewGuid().ToString(), Process = "test" } }, }; Assert.False(setting.Validate()); }
public void ValidCloudAuth() { var setting = new OrchestratorSettings() { AuthMode = "Cloud", RefreshToken = "randometoken", ServiceInstanceLogicalName = "test", AccountLogicalName = "test", BaseUrl = "Https://platform.uipath.com", Strategy = "Specific", RobotIds = new long[] { 1, 2, 3 }, ProcessKeys = new ProcessKey[] { new ProcessKey() { Key = Guid.NewGuid().ToString(), Process = "test" } }, }; Assert.True(setting.Validate()); }
public void ProcessKeyShouldBeGuid() { var setting = new OrchestratorSettings() { AuthMode = "Basic", TenancyName = "Default", UsernameOrEmailAddress = "Test", Password = "******", BaseUrl = "Http://localhost", Strategy = "JobsCount", JobsCount = 1, ProcessKeys = new ProcessKey[] { new ProcessKey() { Key = "1234", Process = "test" } }, }; Assert.False(setting.Validate()); }
public MyRpaClient(IOrchestratorClient orchestratorClient, IOptionsMonitor <OrchestratorSettings> orchestratorSettingsAccessor) { _orchestratorClient = orchestratorClient.CheckNullReference(); _orchestratorSettings = orchestratorSettingsAccessor.CheckNullReference().CurrentValue; }
public JournalMutation( JournalSettings journalSettings, OrchestratorSettings orchestratorSettings, HttpClient httpClient) { Field <JournalType>() .Name("createJournalEC") .Argument <NonNullGraphType <JournalInputType> >("journal", "Add a journal") .ResolveAsync(async ctx => { var dto = ctx.GetArgument <JournalDTO>("journal"); var requestUrl = $"{journalSettings.BaseUrl}/{journalSettings.Endpoints.AddJournal}"; var content = new StringContent(JsonConvert.SerializeObject(dto), Encoding.Default, "application/json"); using (var responseMessage = await httpClient.PostAsync(requestUrl, content)) { if (!responseMessage.IsSuccessStatusCode) { var errorContent = await responseMessage.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(errorContent)) { ctx.Errors.Add(new GraphQL.ExecutionError(errorContent)); } else { responseMessage.EnsureSuccessStatusCode(); } return(null); } var serializedResponse = await responseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject <JournalDTO>(serializedResponse); return(response); } }); Field <JournalType>() .Name("createJournalSaga") .Argument <NonNullGraphType <JournalInputType> >("journal", "Add a journal") .ResolveAsync(async ctx => { var dto = ctx.GetArgument <JournalDTO>("journal"); var requestUrl = $"{orchestratorSettings.BaseUrl}/{orchestratorSettings.FunctionName}"; var content = new StringContent(JsonConvert.SerializeObject(dto), Encoding.Default, "application/json"); HttpManagementPayload httpManagementPayload; using (var responseMessage = await httpClient.PostAsync(requestUrl, content)) { if (!responseMessage.IsSuccessStatusCode) { var errorContent = await responseMessage.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(errorContent)) { ctx.Errors.Add(new GraphQL.ExecutionError(errorContent)); } else { responseMessage.EnsureSuccessStatusCode(); } return(null); } var serializedResponse = await responseMessage.Content.ReadAsStringAsync(); httpManagementPayload = JsonConvert.DeserializeObject <HttpManagementPayload>(serializedResponse); } JToken status = null; do { await Task.Delay(2000); status = await GetStatus(httpManagementPayload.StatusQueryGetUri, ctx); if (status == null) { return(status); } } while(status.Value <string>("runtimeStatus") == "Pending" || status.Value <string>("runtimeStatus") == "Running"); if (status.Value <string>("runtimeStatus") != "Completed") { ctx.Errors.Add(new GraphQL.ExecutionError("Saga failed")); return(null); } var journalResult = status["output"].ToObject <Result <JournalDTO> >(); if (journalResult.IsFailure) { ctx.Errors.Add(new GraphQL.ExecutionError(journalResult.ErrorMessage)); return(null); } return(journalResult.Value); }); this.httpClient = httpClient; }