public async Task WhenGivenStringDownloadPdf() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var trustedTicketGetter = new TrustedTicketGetter(Options, TableauAdminCredentials, TableauTenantFinder, httpClientFactory); var testService = new TableauVisualServices(trustedTicketGetter, Options, Logger, httpClientFactory) as ITableauVisualServices; var testString = "{\"sessionId\":\"D8FCB32D154543D2A559D333F9D76FC2-0:0\",\"workbookName\":\"AverageRiskMap\",\"viewName\":\"AverageRiskDashboard\",\"tempFileKey\":\"1294393454\",\"referrerUri\":\"https://tableau-dev.traffk.com/trusted/DFJ0lIm3XemqDTDM_hpX4ZGX/views/AverageRiskMap/AverageRiskDashboard?:size=1610,31&:embed=y&:showVizHome=n&:jsdebug=y&:bootstrapWhenNotified=y&:tabs=n&:apiID=host0\",\"cookiesJson\":\"[{\\\"Comment\\\":\\\"\\\",\\\"CommentUri\\\":null,\\\"HttpOnly\\\":true,\\\"Discard\\\":false,\\\"Domain\\\":\\\"tableau-dev.traffk.com\\\",\\\"Expired\\\":false,\\\"Expires\\\":\\\"0001-01-01T00:00:00\\\",\\\"Name\\\":\\\"workgroup_session_id\\\",\\\"Path\\\":\\\"/\\\",\\\"Port\\\":\\\"\\\",\\\"Secure\\\":true,\\\"TimeStamp\\\":\\\"2017-05-18T15:11:54.4239408-07:00\\\",\\\"Value\\\":\\\"uhHuUMYmk7mYzWWr26HI8oememKagKSk\\\",\\\"Version\\\":0},{\\\"Comment\\\":\\\"\\\",\\\"CommentUri\\\":null,\\\"HttpOnly\\\":false,\\\"Discard\\\":false,\\\"Domain\\\":\\\"tableau-dev.traffk.com\\\",\\\"Expired\\\":false,\\\"Expires\\\":\\\"0001-01-01T00:00:00\\\",\\\"Name\\\":\\\"XSRF-TOKEN\\\",\\\"Path\\\":\\\"/\\\",\\\"Port\\\":\\\"\\\",\\\"Secure\\\":true,\\\"TimeStamp\\\":\\\"2017-05-18T15:11:54.4269516-07:00\\\",\\\"Value\\\":\\\"hrYPgkej0VvLonyizHZ9xbMj5QZeldAA\\\",\\\"Version\\\":0},{\\\"Comment\\\":\\\"\\\",\\\"CommentUri\\\":null,\\\"HttpOnly\\\":true,\\\"Discard\\\":false,\\\"Domain\\\":\\\"tableau-dev.traffk.com\\\",\\\"Expired\\\":false,\\\"Expires\\\":\\\"0001-01-01T00:00:00\\\",\\\"Name\\\":\\\"tableau_locale\\\",\\\"Path\\\":\\\"/\\\",\\\"Port\\\":\\\"\\\",\\\"Secure\\\":true,\\\"TimeStamp\\\":\\\"2017-05-18T15:11:54.6386584-07:00\\\",\\\"Value\\\":\\\"en\\\",\\\"Version\\\":0}]\"}"; var deserializedPdfOptions = JsonConvert.DeserializeObject <DownloadPdfOptions>(testString); var pdfBytes = await testService.DownloadPdfAsync(deserializedPdfOptions); Assert.IsNotNull(pdfBytes); var tempPath = Path.GetTempPath() + @"TableauPDFTestDownload"; Directory.CreateDirectory(tempPath); //Doesn't create if it already exists var dateTime = DateTime.UtcNow.ToString().RemoveSpecialCharacters(); var tempFilePath = tempPath + $@"\test-{dateTime}.pdf"; File.WriteAllBytes(tempFilePath, pdfBytes); }
public async Task WhenSignedInGetUnderlyingDataUsingWorksheetName() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testTimeout = TimeSpan.FromHours(12); //Required so that test itself doesn't timeou var trustedTicketGetter = new TrustedTicketGetter(Options, TableauAdminCredentials, TableauTenantFinder, httpClientFactory); var testService = new TableauVisualServices(trustedTicketGetter, Options, Logger, httpClientFactory) as ITableauVisualServices; var worksheetName = "Risk by Occupation"; var testGetUnderlyingDataOptions = new GetUnderlyingDataOptions { WorksheetName = worksheetName }; //var task = testService.GetUnderlyingDataAsync(testGetUnderlyingDataOptions, "RiskIndex-Occupations", // "EmploymentandRisk").ExecuteSynchronously(); var task = testService.GetUnderlyingDataAsync(testGetUnderlyingDataOptions, "RiskIndex-Occupations", "EmploymentandRisk"); if (await Task.WhenAny(task, Task.Delay(testTimeout)) == task) { task.ExecuteSynchronously(); var data = task.Result; var dataTable = data.ToDataTable(); Assert.IsNotNull(data); Assert.IsNotNull(dataTable); } else { throw new Exception("Timed Out"); } }
public async Task WhenGivenJsonObjectDownloadPdf() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var trustedTicketGetter = new TrustedTicketGetter(Options, TableauAdminCredentials, TableauTenantFinder, httpClientFactory); var testService = new TableauVisualServices(trustedTicketGetter, Options, Logger, httpClientFactory) as ITableauVisualServices; var testGetPdfOptions = new CreatePdfOptions("AverageRiskMap", "AverageRiskDashboard", "Average Risk Dashboard"); var downloadPdfOptions = await testService.CreatePdfAsync(testGetPdfOptions); Assert.IsNotNull(downloadPdfOptions); var downloadPdfJsonObject = JsonConvert.SerializeObject(downloadPdfOptions); var deserializedPdfOptions = JsonConvert.DeserializeObject <DownloadPdfOptions>(downloadPdfJsonObject); var pdfBytes = await testService.DownloadPdfAsync(deserializedPdfOptions); Assert.IsNotNull(pdfBytes); var tempPath = Path.GetTempPath() + @"TableauPDFTestDownload"; Directory.CreateDirectory(tempPath); //Doesn't create if it already exists var dateTime = DateTime.UtcNow.ToString().RemoveSpecialCharacters(); var tempFilePath = tempPath + $@"\test-{dateTime}.pdf"; File.WriteAllBytes(tempFilePath, pdfBytes); }
public async Task WhenSignedInGetUnderlyingDataWithManyRows() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testTimeout = TimeSpan.FromHours(12); //Required so that test itself doesn't timeout var testMaxRows = 7500000; var trustedTicketGetter = new TrustedTicketGetter(Options, TableauAdminCredentials, TableauTenantFinder, httpClientFactory); var testService = new TableauVisualServices(trustedTicketGetter, Options, Logger, httpClientFactory) as ITableauVisualServices; var worksheetName = "Avg Risk by Mbr Relationship"; var testGetUnderlyingDataOptions = new GetUnderlyingDataOptions { WorksheetName = worksheetName, MaxRows = testMaxRows }; var task = testService.GetUnderlyingDataAsync(testGetUnderlyingDataOptions, "AverageRiskScore", "1-AverageRiskScore_demo"); if (await Task.WhenAny(task, Task.Delay(testTimeout)) == task) { var data = task.Result; var dataTable = data.ToDataTable(); Assert.IsNotNull(data); Assert.IsNotNull(dataTable); } else { throw new Exception("Timed Out"); } }
public void WhenGivenExistingSiteMigrateData() { var newSiteOptions = MockEnvironment.TableauSignInOptions("https://tableau-dev.traffk.com/#/site/TestMasterTenant").Object; var tableauAdminCredentials = ConfigurationHelpers.CreateOptions(TableauAdminCredentials); var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testAdminService = new TableauAdminService(newSiteOptions, tableauAdminCredentials, httpClientFactory, Logger) as ITableauAdminService; var dbUserName = "******"; var dbPassword = "******"; var testNewServerAddress = "traffkrdb-dev.database.windows.net/"; var testDbName = "TraffkHip2"; string path = Path.GetTempPath(); path = path + @"TableauIntegrationTestFiles"; var dataMigrationRequest = new TableauDataMigrationRequest("ExistingTestTenant", testNewServerAddress, testDbName, dbUserName, dbPassword, path); testAdminService.MigrateDataset(dataMigrationRequest); DirectoryInfo di = new DirectoryInfo(path); foreach (FileInfo file in di.GetFiles()) { file.Delete(); } foreach (DirectoryInfo dir in di.GetDirectories()) { dir.Delete(true); } }
public void WhenSignedInDownloadPreviewImage() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testService = new TableauViewerService(Options, TableauUserCredentials, httpClientFactory, Logger) as ITableauViewerService; var testImageBytes = testService.DownloadPreviewImageForView("6d8f31d9-aceb-40be-867d-1c980215b246", "c8922aac-c202-446b-8ed2-ff4dde96eaba"); Assert.IsNotNull(testImageBytes); }
public void WhenSignedInDownloadViewList() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testService = new TableauViewerService(Options, TableauUserCredentials, httpClientFactory, Logger) as ITableauViewerService; var views = testService.DownloadViewsForSite(); Assert.IsNotNull(views); Assert.IsTrue(views.Views.Any()); }
public async Task WhenSignedInCreatePdf() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var trustedTicketGetter = new TrustedTicketGetter(Options, TableauAdminCredentials, TableauTenantFinder, httpClientFactory); var testService = new TableauVisualServices(trustedTicketGetter, Options, Logger, httpClientFactory) as ITableauVisualServices; var testGetPdfOptions = new CreatePdfOptions("AverageRiskMap", "AverageRiskDashboard", "Average Risk Dashboard"); var downloadPdfOptions = await testService.CreatePdfAsync(testGetPdfOptions); Assert.IsNotNull(downloadPdfOptions); }
public void WhenGivenUrlSignIn() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var testService = new TableauViewerService(Options, TableauUserCredentials, httpClientFactory, Logger); Assert.IsNotNull(testService); var tableauAdminCredentials = ConfigurationHelpers.CreateOptions(TableauAdminCredentials); var testAdminService = new TableauAdminService(Options, tableauAdminCredentials, httpClientFactory, Logger); Assert.IsNotNull(testAdminService); }
public void WhenSignedInGetUnderlyingDataUsingDashboardName() { var httpClientOptions = ConfigurationHelpers.CreateOptions(HttpClientOptions); var httpClientFactory = new HttpClientFactory(httpClientOptions); var trustedTicketGetter = new TrustedTicketGetter(Options, TableauAdminCredentials, TableauTenantFinder, httpClientFactory); var testService = new TableauVisualServices(trustedTicketGetter, Options, Logger, httpClientFactory) as ITableauVisualServices; var dashboardName = "Employment and Risk"; var testGetUnderlyingDataOptions = new GetUnderlyingDataOptions { DashboardName = dashboardName }; var data = testService.GetUnderlyingDataAsync(testGetUnderlyingDataOptions, "RiskIndex-Occupations", "EmploymentandRisk").ExecuteSynchronously(); var dataTable = data.ToDataTable(); Assert.IsNotNull(data); Assert.IsNotNull(dataTable); }
void ITableauAdminService.MigrateDataset(TableauDataMigrationRequest request) { base.Options.UpdateForTenant(request.DestTableauTenantId); var destinationSiteSignInOptions = ConfigurationHelpers.CreateOptions(Options); var adminCredentialOptions = ConfigurationHelpers.CreateOptions(TableauAdminCredentials); var destinationAdminService = new TableauAdminService(destinationSiteSignInOptions, adminCredentialOptions, HttpClientFactory, Logger); var destinationSiteInfo = destinationAdminService.GetSiteInfo(); var sourceAdminService = this; //not normal convention, but using this to make it clearer to future devs //Download datasources from master site var dataSources = sourceAdminService.DownloadDatasourceList(); sourceAdminService.DownloadDatasourceFiles(dataSources, request.TempFilePath); foreach (var datasource in Directory.GetFiles(request.TempFilePath + @"\Default")) { TableauFileEditor.UpdateDatasourceDatabaseName(datasource, request.DestDbName, request.TempFilePath); } //Upload datasources to new site var uploadedDataSources = destinationAdminService.UploadDatasourceFiles("Default", request.DestDbUsername, request.DestDbPassword, true, request.TempFilePath); //Download workbooks from master site var workbooksToDownload = sourceAdminService.DownloadWorkbookList(); sourceAdminService.DownloadWorkbookFiles(workbooksToDownload, request.TempFilePath, false); foreach (var workbook in Directory.GetFiles(request.TempFilePath)) { TableauFileEditor.UpdateWorkbookFileSiteReferences(workbook, destinationSiteInfo); } //Upload workbooks to new site destinationAdminService.UploadWorkbooks("Default", request.DestDbUsername, request.DestDbPassword, true, request.TempFilePath); }