public override IEnumerator RunTest() { LogSystem.InstallDefaultReactors(); contractAFilepath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/compare-comply/contract_A.pdf"; contractBFilepath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/compare-comply/contract_B.pdf"; tableFilepath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/compare-comply/TestTable.pdf"; string objectStorageCredentialsInputFilepath = "../sdk-credentials/cloud-object-storage-credentials-input.json"; string objectStorageCredentialsOutputFilepath = "../sdk-credentials/cloud-object-storage-credentials-output.json"; #region Get Credentials VcapCredentials vcapCredentials = new VcapCredentials(); fsData data = null; string result = null; string credentialsFilepath = "../sdk-credentials/credentials.json"; // Load credentials file if it exists. If it doesn't exist, don't run the tests. if (File.Exists(credentialsFilepath)) { result = File.ReadAllText(credentialsFilepath); } else { yield break; } // Add in a parent object because Unity does not like to deserialize root level collection types. result = Utility.AddTopLevelObjectToJson(result, "VCAP_SERVICES"); // Convert json to fsResult fsResult r = fsJsonParser.Parse(result, out data); if (!r.Succeeded) { throw new WatsonException(r.FormattedMessages); } // Convert fsResult to VcapCredentials object obj = vcapCredentials; r = _serializer.TryDeserialize(data, obj.GetType(), ref obj); if (!r.Succeeded) { throw new WatsonException(r.FormattedMessages); } // Set credentials from imported credntials Credential credential = vcapCredentials.GetCredentialByname("compare-comply-sdk")[0].Credentials; _url = credential.Url.ToString(); // Create credential and instantiate service TokenOptions tokenOptions = new TokenOptions() { IamApiKey = credential.IamApikey }; #endregion Credentials credentials = new Credentials(tokenOptions, credential.Url); // Wait for tokendata while (!credentials.HasIamTokenData()) { yield return(null); } compareComply = new CompareComply(credentials); compareComply.VersionDate = versionDate; byte[] contractA = File.ReadAllBytes(contractAFilepath); byte[] contractB = File.ReadAllBytes(contractBFilepath); byte[] table = File.ReadAllBytes(tableFilepath); byte[] objectStorageCredentialsInputData = File.ReadAllBytes(objectStorageCredentialsInputFilepath); byte[] objectStorageCredentialsOutputData = File.ReadAllBytes(objectStorageCredentialsOutputFilepath); compareComply.ConvertToHtml(OnConvertToHtml, OnFail, contractA, fileContentType: "application/pdf"); while (!convertToHtmlTested) { yield return(null); } compareComply.ClassifyElements(OnClassifyElements, OnFail, contractA); while (!classifyElementsTested) { yield return(null); } compareComply.ExtractTables(OnExtractTables, OnFail, table); while (!extractTablesTested) { yield return(null); } compareComply.CompareDocuments(OnCompareDocuments, OnFail, contractA, contractB, file1ContentType: "application/pdf", file2ContentType: "application/pdf"); while (!compareDocumentsTested) { yield return(null); } DateTime before = new DateTime(2018, 11, 15); DateTime after = new DateTime(2018, 11, 14); compareComply.ListFeedback( successCallback: OnListFeedback, failCallback: OnFail, feedbackType: "element_classification", before: before, after: after, documentTitle: "unity-test-feedback-doc", modelId: "contracts", modelVersion: "2.0.0", categoryRemoved: "Responsibilities", categoryAdded: "Amendments", categoryNotChanged: "Audits", typeRemoved: "End User:Exclusion", typeAdded: "Disclaimer:Buyer", typeNotChanged: "Obligation:IBM", pageLimit: 1 ); while (!listFeedbackTested) { yield return(null); } #region Feedback Data FeedbackInput feedbackData = new FeedbackInput() { UserId = "user_id_123x", Comment = "Test feedback comment", FeedbackData = new FeedbackDataInput() { FeedbackType = "element_classification", Document = new ShortDoc() { Hash = "", Title = "doc title" }, ModelId = "contracts", ModelVersion = "11.00", Location = new Location() { Begin = 241, End = 237 }, Text = "1. IBM will provide a Senior Managing Consultant / expert resource, for up to 80 hours, to assist Florida Power & Light (FPL) with the creation of an IT infrastructure unit cost model for existing infrastructure.", OriginalLabels = new OriginalLabelsIn() { Types = new List <TypeLabel>() { new TypeLabel() { Label = new Label() { Nature = "Obligation", Party = "IBM" }, ProvenanceIds = new List <string>() { "85f5981a-ba91-44f5-9efa-0bd22e64b7bc", "ce0480a1-5ef1-4c3e-9861-3743b5610795" } }, new TypeLabel() { Label = new Label() { Nature = "End User", Party = "Exclusion" }, ProvenanceIds = new List <string>() { "85f5981a-ba91-44f5-9efa-0bd22e64b7bc", "ce0480a1-5ef1-4c3e-9861-3743b5610795" } } }, Categories = new List <Category>() { new Category() { Label = "Responsibilities", ProvenanceIds = new List <string>() { } }, new Category() { Label = "Amendments", ProvenanceIds = new List <string>() { } } } }, UpdatedLabels = new UpdatedLabelsIn() { Types = new List <TypeLabel>() { new TypeLabel() { Label = new Label() { Nature = "Obligation", Party = "IBM" } }, new TypeLabel() { Label = new Label() { Nature = "Disclaimer", Party = "buyer" } } }, Categories = new List <Category>() { new Category() { Label = "Responsibilities", }, new Category() { Label = "Audits" } } } } }; #endregion compareComply.AddFeedback( successCallback: OnAddFeedback, failCallback: OnFail, feedbackData: feedbackData ); while (!addFeedbackTested) { yield return(null); } // temporary fix for a bug requiring `x-watson-metadata` header Dictionary <string, object> customData = new Dictionary <string, object>(); Dictionary <string, string> customHeaders = new Dictionary <string, string>(); customHeaders.Add("x-watson-metadata", "customer_id=sdk-test-customer-id"); customData.Add(Constants.String.CUSTOM_REQUEST_HEADERS, customHeaders); compareComply.GetFeedback( successCallback: OnGetFeedback, failCallback: OnFail, feedbackId: feedbackId, modelId: "contracts", customData: customData ); while (!getFeedbackTested) { yield return(null); } compareComply.DeleteFeedback( successCallback: OnDeleteFeedback, failCallback: OnFail, feedbackId: feedbackId, modelId: "contracts" ); while (!deleteFeedbackTested) { yield return(null); } compareComply.ListBatches( successCallback: OnListBatches, failCallback: OnFail ); while (!listBatchesTested) { yield return(null); } compareComply.CreateBatch( successCallback: OnCreateBatch, failCallback: OnFail, function: "html_conversion", inputCredentialsFile: objectStorageCredentialsInputData, inputBucketLocation: "us-south", inputBucketName: "compare-comply-integration-test-bucket-input", outputCredentialsFile: objectStorageCredentialsOutputData, outputBucketLocation: "us-south", outputBucketName: "compare-comply-integration-test-bucket-output" ); while (!createBatchTested) { yield return(null); } compareComply.GetBatch( successCallback: OnGetBatch, failCallback: OnFail, batchId: batchId ); while (!getBatchTestsed) { yield return(null); } compareComply.UpdateBatch( successCallback: OnUpdateBatch, failCallback: OnFail, batchId: batchId, action: "rescan", modelId: "contracts" ); while (!updateBatchTested) { yield return(null); } Log.Debug("TestCompareComplyV1.RunTests()", "Compare and Comply integration tests complete!"); }
private IEnumerator Examples() { contractAFilepath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/compare-comply/contract_A.pdf"; contractBFilepath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/compare-comply/contract_B.pdf"; tableFilepath = Application.dataPath + "/Watson/Examples/ServiceExamples/TestData/compare-comply/TestTable.pdf"; string objectStorageCredentialsInputFilepath = "../sdk-credentials/cloud-object-storage-credentials-input.json"; string objectStorageCredentialsOutputFilepath = "../sdk-credentials/cloud-object-storage-credentials-output.json"; byte[] contractA = File.ReadAllBytes(contractAFilepath); byte[] contractB = File.ReadAllBytes(contractBFilepath); byte[] table = File.ReadAllBytes(tableFilepath); byte[] objectStorageCredentialsInputData = File.ReadAllBytes(objectStorageCredentialsInputFilepath); byte[] objectStorageCredentialsOutputData = File.ReadAllBytes(objectStorageCredentialsOutputFilepath); compareComply.ConvertToHtml(OnConvertToHtml, OnFail, contractA, fileContentType: "application/pdf"); while (!convertToHtmlTested) { yield return(null); } compareComply.ClassifyElements(OnClassifyElements, OnFail, contractA); while (!classifyElementsTested) { yield return(null); } compareComply.ExtractTables(OnExtractTables, OnFail, table); while (!extractTablesTested) { yield return(null); } compareComply.CompareDocuments(OnCompareDocuments, OnFail, contractA, contractB, file1ContentType: "application/pdf", file2ContentType: "application/pdf"); while (!compareDocumentsTested) { yield return(null); } DateTime before = new DateTime(2018, 11, 15); DateTime after = new DateTime(2018, 11, 14); compareComply.ListFeedback( successCallback: OnListFeedback, failCallback: OnFail, feedbackType: "element_classification", before: before, after: after, documentTitle: "unity-test-feedback-doc", modelId: "contracts", modelVersion: "2.0.0", categoryRemoved: "Responsibilities", categoryAdded: "Amendments", categoryNotChanged: "Audits", typeRemoved: "End User:Exclusion", typeAdded: "Disclaimer:Buyer", typeNotChanged: "Obligation:IBM", pageLimit: 1 ); while (!listFeedbackTested) { yield return(null); } #region Feedback Data FeedbackInput feedbackData = new FeedbackInput() { UserId = "user_id_123x", Comment = "Test feedback comment", FeedbackData = new FeedbackDataInput() { FeedbackType = "element_classification", Document = new ShortDoc() { Hash = "", Title = "doc title" }, ModelId = "contracts", ModelVersion = "11.00", Location = new Location() { Begin = 241, End = 237 }, Text = "1. IBM will provide a Senior Managing Consultant / expert resource, for up to 80 hours, to assist Florida Power & Light (FPL) with the creation of an IT infrastructure unit cost model for existing infrastructure.", OriginalLabels = new OriginalLabelsIn() { Types = new List <TypeLabel>() { new TypeLabel() { Label = new Label() { Nature = "Obligation", Party = "IBM" }, ProvenanceIds = new List <string>() { "85f5981a-ba91-44f5-9efa-0bd22e64b7bc", "ce0480a1-5ef1-4c3e-9861-3743b5610795" } }, new TypeLabel() { Label = new Label() { Nature = "End User", Party = "Exclusion" }, ProvenanceIds = new List <string>() { "85f5981a-ba91-44f5-9efa-0bd22e64b7bc", "ce0480a1-5ef1-4c3e-9861-3743b5610795" } } }, Categories = new List <Category>() { new Category() { Label = "Responsibilities", ProvenanceIds = new List <string>() { } }, new Category() { Label = "Amendments", ProvenanceIds = new List <string>() { } } } }, UpdatedLabels = new UpdatedLabelsIn() { Types = new List <TypeLabel>() { new TypeLabel() { Label = new Label() { Nature = "Obligation", Party = "IBM" } }, new TypeLabel() { Label = new Label() { Nature = "Disclaimer", Party = "buyer" } } }, Categories = new List <Category>() { new Category() { Label = "Responsibilities", }, new Category() { Label = "Audits" } } } } }; #endregion compareComply.AddFeedback( successCallback: OnAddFeedback, failCallback: OnFail, feedbackData: feedbackData ); while (!addFeedbackTested) { yield return(null); } // temporary fix for a bug requiring `x-watson-metadata` header Dictionary <string, object> customData = new Dictionary <string, object>(); Dictionary <string, string> customHeaders = new Dictionary <string, string>(); customHeaders.Add("x-watson-metadata", "customer_id=sdk-test-customer-id"); customData.Add(Constants.String.CUSTOM_REQUEST_HEADERS, customHeaders); compareComply.GetFeedback( successCallback: OnGetFeedback, failCallback: OnFail, feedbackId: feedbackId, modelId: "contracts", customData: customData ); while (!getFeedbackTested) { yield return(null); } compareComply.DeleteFeedback( successCallback: OnDeleteFeedback, failCallback: OnFail, feedbackId: feedbackId, modelId: "contracts" ); while (!deleteFeedbackTested) { yield return(null); } compareComply.ListBatches( successCallback: OnListBatches, failCallback: OnFail ); while (!listBatchesTested) { yield return(null); } compareComply.CreateBatch( successCallback: OnCreateBatch, failCallback: OnFail, function: "html_conversion", inputCredentialsFile: objectStorageCredentialsInputData, inputBucketLocation: "us-south", inputBucketName: "compare-comply-integration-test-bucket-input", outputCredentialsFile: objectStorageCredentialsOutputData, outputBucketLocation: "us-south", outputBucketName: "compare-comply-integration-test-bucket-output" ); while (!createBatchTested) { yield return(null); } compareComply.GetBatch( successCallback: OnGetBatch, failCallback: OnFail, batchId: batchId ); while (!getBatchTestsed) { yield return(null); } compareComply.UpdateBatch( successCallback: OnUpdateBatch, failCallback: OnFail, batchId: batchId, action: "rescan", modelId: "contracts" ); while (!updateBatchTested) { yield return(null); } Log.Debug("ExampleCompareComplyV1.RunTests()", "Compare and Comply examples complete!"); }