/// <summary> /// For a given google account check for a spreasheet file existence and return the content from that spreadsheet /// </summary> /// <param name="authorizationTokenId"></param> /// <param name="spreadsheetName"></param> /// <returns></returns> public async Task <StandardTableDataCM> GetSpreadsheetIfExist(Guid authorizationTokenId, string spreadsheetName) { var defaultGoogleAuthToken = GetGoogleAuthToken(authorizationTokenId); var googleSheetApi = new GoogleSheet(new GoogleIntegration(ObjectFactory.GetInstance <IRestfulServiceClient>()), new GoogleDrive()); var googleSheets = await googleSheetApi.GetSpreadsheets(defaultGoogleAuthToken); Assert.IsNotNull(googleSheets.FirstOrDefault(x => x.Value == spreadsheetName), "Selected spreadsheet was not found into existing google files."); var spreadSheeturl = googleSheets.FirstOrDefault(x => x.Value == spreadsheetName).Key; var worksheets = await googleSheetApi.GetWorksheets(spreadSheeturl, defaultGoogleAuthToken); Assert.IsNotNull(worksheets.FirstOrDefault(x => x.Value == "Sheet1"), "Worksheet was not found into google excel file."); var worksheetUri = worksheets.FirstOrDefault(x => x.Value == "Sheet1").Key; var dataRows = (await googleSheetApi.GetData(spreadSheeturl, worksheetUri, defaultGoogleAuthToken)).ToList(); var hasHeaderRow = false; //Adding header row if possible if (dataRows.Count > 0) { dataRows.Insert(0, new TableRowDTO { Row = dataRows.First().Row.Select(x => new TableCellDTO { Cell = new KeyValueDTO(x.Cell.Key, x.Cell.Key) }).ToList() }); hasHeaderRow = true; } return(new StandardTableDataCM { Table = dataRows, FirstRowHeaders = hasHeaderRow }); }
public async Task GoogleIntoGoogleEndToEnd() { var googleAuthTokenId = await new Fr8.Testing.Integration.Tools.Terminals.IntegrationTestTools_terminalGoogle(this).ExtractGoogleDefaultToken(); var defaultGoogleAuthToken = GetGoogleAuthToken(googleAuthTokenId); //create a new plan var googleSheetApi = new GoogleSheet(new GoogleIntegration(ObjectFactory.GetInstance <IRestfulServiceClient>()), new GoogleDrive()); var sourceSpreadsheetUri = string.Empty; var destinationSpreadsheetUri = string.Empty; var sourceSpreadsheetName = Guid.NewGuid().ToString(); var destinationSpreadsheetName = Guid.NewGuid().ToString(); try { //Save test data into test spreadsheet sourceSpreadsheetUri = await googleSheetApi.CreateSpreadsheet(sourceSpreadsheetName, defaultGoogleAuthToken); var sourceWorksheetUri = (await googleSheetApi.GetWorksheets(sourceSpreadsheetUri, defaultGoogleAuthToken)).Select(x => x.Key).First(); await googleSheetApi.WriteData(sourceSpreadsheetUri, sourceWorksheetUri, GetTestSpreadsheetContent(), defaultGoogleAuthToken); var thePlan = await _plansHelper.CreateNewPlan(); //Configure Get_Google_Sheet_Data activity to read data from this test spreadsheet await _googleActivityConfigurator.AddAndConfigureGetFromGoogleSheet(thePlan, 1, sourceSpreadsheetName, true); //Configure Build_Message activity to build message based on the data from this spreadsheet await _fr8ActivityConfigurator.AddAndConfigureBuildMessage(thePlan, 2, "message", "Email - [email], subject - [subject], body - [body]"); //Configure Save_To_Google activity to save this message into new test spreadsheet destinationSpreadsheetUri = await googleSheetApi.CreateSpreadsheet(destinationSpreadsheetName, defaultGoogleAuthToken); await _googleActivityConfigurator.AddAndConfigureSaveToGoogleSheet(thePlan, 3, "Standard Payload Data", Build_Message_v1.RuntimeCrateLabel, destinationSpreadsheetName); //run the plan await _plansHelper.RunPlan(thePlan.Id); var googleSheets = await googleSheetApi.GetSpreadsheets(defaultGoogleAuthToken); Assert.IsNotNull(googleSheets.FirstOrDefault(x => x.Value == destinationSpreadsheetName), "New created spreadsheet was not found into existing google files."); var spreadSheeturl = googleSheets.FirstOrDefault(x => x.Value == destinationSpreadsheetName).Key; //Checking that new test spreadsheet contains the same message that was generated var worksheets = await googleSheetApi.GetWorksheets(spreadSheeturl, defaultGoogleAuthToken); Assert.IsNotNull(worksheets.FirstOrDefault(x => x.Value == "Sheet1"), "Worksheet was not found into newly created google excel file."); var worksheetUri = worksheets.FirstOrDefault(x => x.Value == "Sheet1").Key; var dataRows = (await googleSheetApi.GetData(spreadSheeturl, worksheetUri, defaultGoogleAuthToken)).ToArray(); Assert.AreEqual(1, dataRows.Length, "Only one data row is expected to be in crated spreadsheet"); var storedData = dataRows[0].Row[0].Cell; Assert.AreEqual("message", storedData.Key, "Saved message header doesn't match the expected data"); Assert.AreEqual("Email - [email protected], subject - Fake Subject, body - Fake Body", storedData.Value, "Saved message body doesn't match the expected data"); } finally { if (!string.IsNullOrEmpty(sourceSpreadsheetUri)) { await googleSheetApi.DeleteSpreadSheet(sourceSpreadsheetUri, defaultGoogleAuthToken); } if (!string.IsNullOrEmpty(destinationSpreadsheetUri)) { await googleSheetApi.DeleteSpreadSheet(destinationSpreadsheetUri, defaultGoogleAuthToken); } } }