Exemplo n.º 1
0
        public static string GetSqlPagePayload(string database)
        {
            var dataStore = new DataStore();

            dynamic sqlPayload = new ExpandoObject();

            sqlPayload.SqlCredentials          = new ExpandoObject();
            sqlPayload.SqlCredentials.Server   = Credential.Instance.Sql.Server;
            sqlPayload.SqlCredentials.AuthType = "azuresql";
            sqlPayload.SqlCredentials.User     = Credential.Instance.Sql.Username;
            sqlPayload.SqlCredentials.Password = Credential.Instance.Sql.Password;
            sqlPayload.SqlCredentials.Database = database;

            dataStore.AddObjectDataStore("SqlCredentials", JsonUtility.GetJObjectFromObject(sqlPayload), DataStoreType.Any);

            ActionResponse sqlResponse = TestManager.ExecuteAction("Microsoft-GetSqlConnectionString", dataStore);

            Assert.IsTrue(sqlResponse.Status == ActionStatus.Success);

            return((sqlResponse.Body as JObject)["value"].ToString());
        }
Exemplo n.º 2
0
        public static async Task <DataStore> GetUserTokenFromPopup(string openAuthorizationType = "")
        {
#if DEBUG
            AuthenticationContext context = new AuthenticationContext("https://login.windows.net/" + "common");
            AzureTokenRequestMeta meta    = AzureTokenUtility.GetMetaFromOAuthType(openAuthorizationType);

            var url = context.GetAuthorizationRequestUrlAsync(meta.Resource, meta.ClientId, new Uri("https://unittest/redirect.html"), UserIdentifier.AnyUser, "prompt=consent").Result;
            WindowsFormsWebAuthenticationDialog form = new WindowsFormsWebAuthenticationDialog(null);
            form.WebBrowser.Navigated += delegate(object sender, WebBrowserNavigatedEventArgs args)
            {
                if (args.Url.ToString().StartsWith("https://unittest/redirect.html"))
                {
                    string tempcode = args.Url.ToString();
                    tempcode = tempcode.Substring(tempcode.IndexOf("code=") + 5);
                    code     = tempcode.Substring(0, tempcode.IndexOf("&"));
                    form.Close();
                }
                ;
            };
            form.WebBrowser.Navigate(url);
            form.ShowBrowser();

            while (string.IsNullOrEmpty(code))
            {
                await Task.Delay(5000);
            }
#endif

            DataStore datastore = new DataStore();
            datastore.AddToDataStore("code", code, DataStoreType.Private);
            datastore.AddToDataStore("AADTenant", "common", DataStoreType.Private);
            datastore.AddToDataStore("AADRedirect", "https://unittest/redirect.html");
            datastore.AddToDataStore("oauthType", openAuthorizationType);
            var result = await TestManager.ExecuteActionAsync("Microsoft-GetAzureToken", datastore);

            return(result.DataStore);
        }
Exemplo n.º 3
0
        private static async Task <DataStore> GetDataStoreWithToken(bool force = false, Dictionary <string, string> extraTokens = null, string subscriptionId = null, string resourceGroup = null, string region = null)
        {
            // Read from file DataStore
            if (File.Exists("datastore.json") && !force)
            {
                string filecontents = File.ReadAllText("datastore.json");
                var    jsonObj      = JsonConvert.DeserializeObject <DataStore>(filecontents);

                RefreshAzureToken token = new RefreshAzureToken();
                ActionRequest     req   = new ActionRequest()
                {
                    DataStore = jsonObj
                };

                try
                {
                    var intercept = await token.CanInterceptAsync(null, req);

                    if (intercept == InterceptorStatus.Intercept)
                    {
                        await TestManager.ExecuteActionAsync("Microsoft-RefreshAzureToken", jsonObj);

                        System.IO.File.WriteAllText("datastore.json", JsonUtility.GetJObjectFromObject(jsonObj).ToString());
                    }

                    return(jsonObj);
                }
                catch (Exception)
                {
                    // Skip over error and try again
                }
            }

            // If not found or refresh failed prompt
            Credential.Load();
            var dataStore = await AAD.GetUserTokenFromPopup();

            if (extraTokens != null)
            {
                foreach (KeyValuePair <string, string> pair in extraTokens)
                {
                    var datastoreExtra = await AAD.GetUserTokenFromPopup(pair.Key);           // see AAD case 'powerbi'

                    dataStore.AddToDataStore(pair.Value, datastoreExtra.GetJson(pair.Value)); // {PBIToken:val}
                    dataStore.AddToDataStore("code" + pair.Key, datastoreExtra.GetValue("code"));
                    dataStore.AddToDataStore("state" + pair.Key, datastoreExtra.GetValue("state"));
                    dataStore.AddToDataStore("sessionstate" + pair.Key, datastoreExtra.GetValue("session_state"));
                }
            }

            var subscriptionResult = await TestManager.ExecuteActionAsync("Microsoft-GetAzureSubscriptions", dataStore);

            JToken subscription = null;

            Assert.IsTrue(subscriptionResult.IsSuccess);
            if (subscriptionId == null)
            {
                subscription = subscriptionResult.Body.GetJObject()["value"].SingleOrDefault(p => p["DisplayName"].ToString().StartsWith("PBI_"));
                if (subscription == null)
                {
                    subscription = subscriptionResult.Body.GetJObject()["value"].FirstOrDefault();
                }
            }
            else
            {
                subscription = subscriptionResult.Body.GetJObject()["value"].SingleOrDefault(p => p["SubscriptionId"].ToString().Equals(subscriptionId, StringComparison.OrdinalIgnoreCase));
            }

            dataStore.AddToDataStore("SelectedSubscription", subscription, DataStoreType.Public);

            var locationResult = await TestManager.ExecuteActionAsync("Microsoft-GetLocations", dataStore);

            var location = locationResult.Body.GetJObject()["value"][5];

            if (!string.IsNullOrWhiteSpace(region))
            {
                location = locationResult.Body.GetJObject()["value"].SingleOrDefault(l => l["Name"].ToString().Equals(region, StringComparison.OrdinalIgnoreCase));
            }

            dataStore.AddToDataStore("SelectedLocation", location, DataStoreType.Public);
            dataStore.AddToDataStore("SelectedResourceGroup", resourceGroup ?? ResourceGroup);

            var resourceGroupResult = await TestManager.ExecuteActionAsync("Microsoft-CreateResourceGroup", dataStore);

            System.IO.File.WriteAllText("datastore.json", JsonUtility.GetJObjectFromObject(dataStore).ToString());
            return(dataStore);
        }