private static int RunTestsWindowsAuth(WindowsAuthTestSettings settings) { var authenticationSetting = new AuthenticationSetting { AuthenticationScheme = AuthenticationScheme.Windows, ServiceUrl = settings.ServiceUrl }; return(RunTests(authenticationSetting, settings)); }
private static int RunTestsNavUserPasswordAuth(NavUserPasswordAuthTestSettings settings) { var authenticationSetting = new AuthenticationSetting { AuthenticationScheme = AuthenticationScheme.UserNamePassword, ServiceUrl = settings.ServiceUrl, Username = settings.Username, Password = settings.Password }; return(RunTests(authenticationSetting, settings)); }
private static int RunTestsAadAuth(AadAuthTestSettings settings) { var authenticationSetting = new AuthenticationSetting { AuthenticationScheme = AuthenticationScheme.AzureActiveDirectory, ServiceUrl = settings.ServiceUrl, Username = settings.Username, Password = settings.Password, Authority = settings.Authority, Resource = settings.Resource, ClientId = settings.ClientId, ClientSecret = settings.ClientSecret }; return(RunTests(authenticationSetting, settings)); }
/// <summary>Inititialies a new <see cref="ClientSession"/>.</summary> /// <param name="authenticationSetting">The authentication settings.</param> /// <returns>The initialize session.</returns> public static ClientSession InitializeSession(AuthenticationSetting authenticationSetting) { Uri addressUri = ServiceAddressProvider.ServiceAddress(new Uri(authenticationSetting.ServiceUrl)); ICredentials credentials = null; switch (authenticationSetting.AuthenticationScheme) { case AuthenticationScheme.UserNamePassword: credentials = new NetworkCredential(authenticationSetting.Username, authenticationSetting.Password); break; case AuthenticationScheme.AzureActiveDirectory: using (var client = new HttpClient()) { var result = client.PostAsync(new Uri(authenticationSetting.Authority + "/oauth2/token"), new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("resource", authenticationSetting.Resource), new KeyValuePair <string, string>("client_id", authenticationSetting.ClientId), new KeyValuePair <string, string>("grant_type", "password"), new KeyValuePair <string, string>("username", authenticationSetting.Username), new KeyValuePair <string, string>("password", authenticationSetting.Password), new KeyValuePair <string, string>("scope", "openid"), new KeyValuePair <string, string>("client_secret", authenticationSetting.ClientSecret), })).Result; var content = result.Content.ReadAsStringAsync().Result; var authResult = JsonConvert.DeserializeObject <OAuthResult>(content); credentials = new TokenCredential(authResult.Access_Token); } break; case AuthenticationScheme.Windows: // Windows auth is supported break; default: throw new Exception("Unsupported Authentication Scheme"); } var jsonClient = new JsonHttpClient(addressUri, credentials, authenticationSetting.AuthenticationScheme); return(new ClientSession(jsonClient, new NonDispatcher(), new TimerFactory <TaskTimer>())); }
/// <summary> /// Create UserContext /// </summary> /// <param name="authenticationSetting">The authentication settings.</param> public UserContext(AuthenticationSetting authenticationSetting) { this.ClientSession = ClientSessionExtensions.InitializeSession(authenticationSetting); }
static int RunTests(AuthenticationSetting authenticationSetting, TestSettingsBase settings) { context = new UserContext(authenticationSetting); var sessionParameters = new ClientSessionParameters { CultureId = "en-US", UICultureId = "en-US" }; context.OpenSession(sessionParameters); var form = context.OpenForm(settings.TestPage); context.EnsurePage(int.Parse(settings.TestPage), form); var suiteControl = form.Control("Suite Name"); suiteControl.SaveValue(settings.TestSuite); Console.WriteLine("Running tests"); var repeater = form.Repeater(); int index = 0; while (true) { if (index >= (repeater.Offset + repeater.DefaultViewport.Count)) { context.InvokeInteraction(new ScrollRepeaterInteraction(repeater, 1)); } var rowIndex = (int)(index - repeater.Offset); if (rowIndex >= repeater.DefaultViewport.Count) { break; } var row = repeater.DefaultViewport[rowIndex]; var lineType = row.ContainedControls.First(c => c is ClientSelectionControl); if (lineType.StringValue == "Codeunit") { lineType.Activate(); Console.Write(string.Format(" {0} {1} {2} ", lineType.StringValue, row.Control("Codeunit ID").StringValue, row.Control("Name").StringValue)); var runAction = form.Action("Run Selected"); runAction.Invoke(); context.ValidateForm(form); row = repeater.DefaultViewport[rowIndex]; var result = row.Control("Result").StringValue; if (result == "Success") { Console.ForegroundColor = ConsoleColor.Green; } else { Console.ForegroundColor = ConsoleColor.Red; } Console.WriteLine(result); } else if (lineType.StringValue == "Function") { var writeit = settings.Verbose; var result = row.Control("Result").StringValue; if (result == "Success") { Console.ForegroundColor = ConsoleColor.Green; } else { Console.ForegroundColor = ConsoleColor.Red; writeit = true; } if (writeit) { Console.WriteLine(string.Format(" {0} {1} {2}", lineType.StringValue, row.Control("Name").StringValue, result)); } } else { Console.WriteLine(string.Format("{0} {1}", lineType.StringValue, row.Control("Name").StringValue)); } Console.ResetColor(); index++; } context.CloseAllForms(); context.CloseSession(); Console.WriteLine("Done"); return(0); }