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()); }
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); }
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); }