예제 #1
0
        private static int RunTestsWindowsAuth(WindowsAuthTestSettings settings)
        {
            var authenticationSetting = new AuthenticationSetting
            {
                AuthenticationScheme = AuthenticationScheme.Windows,
                ServiceUrl           = settings.ServiceUrl
            };

            return(RunTests(authenticationSetting, settings));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        /// <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>()));
        }
예제 #5
0
 /// <summary>
 /// Create UserContext
 /// </summary>
 /// <param name="authenticationSetting">The authentication settings.</param>
 public UserContext(AuthenticationSetting authenticationSetting)
 {
     this.ClientSession = ClientSessionExtensions.InitializeSession(authenticationSetting);
 }
예제 #6
0
        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);
        }