Skip to content

Commit

Permalink
Fixed bug where I forgot to store new refresh token
Browse files Browse the repository at this point in the history
  • Loading branch information
rmetcalf9 committed Nov 19, 2023
1 parent ec8490a commit 2c57458
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,8 @@ def requestMatches(self, jobData, urlid, request_headers, request_data, rawurlpa
return True

def fireTrigger(self, submitJobFunction, jobData, urlid, request_headers, request_data, rawurlpasscode, rawnonurlpasscode):
# Not public and private VARS are in jobData
## print("typeprivatevars", jobData.__dict__["PrivateExternalTrigger"]["typeprivatevars"])
## print("typepublicvars", jobData.__dict__["PrivateExternalTrigger"]["typepublicvars"])

typeprivatevars = jobData.__dict__["PrivateExternalTrigger"]["typeprivatevars"]
typepublicvars = jobData.__dict__["PrivateExternalTrigger"]["typepublicvars"]
typeprivatevars = jobData.PrivateExternalTrigger["typeprivatevars"]
typepublicvars = jobData.PrivateExternalTrigger["typepublicvars"]

google_client = GoogleClient(self.externalTriggerManager.appObj.DOCKJOB_APICLIENT_GOOGLE_CLIENT_SECRET_FILE)
google_client.setup_auth(
Expand Down
12 changes: 5 additions & 7 deletions app/src/ExternalTriggers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def processTriggerWithContext(self, store_connection, possible_jobs_that_could_m
def processMatchedTrigger(self, store_connection, PrivateExternalTrigger, triggerType, jobData, urlid, request_headers, request_data, rawurlpasscode,rawnonurlpasscode ):
def submitJobFunction(stdinData, executionName="Triggered by " + PrivateExternalTrigger["type"]):
self.appObj.jobExecutor.submitJobForExecution(
jobGUID=jobData.__dict__["guid"],
jobGUID=jobData.guid,
executionName=executionName,
manual=False,
stdinData=stdinData
Expand All @@ -90,12 +90,10 @@ def submitJobFunction(stdinData, executionName="Triggered by " + PrivateExternal
)
if updateJobNeeded:
# This code is going to look something like
# PrivateExternalTrigger["typeprivatevars"] = typeprivatevars
# PrivateExternalTrigger["typepublicvars"] = typepublicvars
# jobObj.setNewPrivateTriggerData(privateTriggerData)
# self.appObj.appData['jobsData']._saveJobToObjectStore(str(jobObj.guid), store_connection)

raise Exception("NI Update job with new private public vars")
PrivateExternalTrigger["typeprivatevars"] = typeprivatevars
PrivateExternalTrigger["typepublicvars"] = typepublicvars
jobData.setNewPrivateTriggerData(PrivateExternalTrigger)
self.appObj.appData['jobsData']._saveJobToObjectStore(str(jobData.guid), store_connection)

def getJobDictData(self, jobObj):
if not jobObj.PrivateExternalTrigger["triggerActive"]:
Expand Down
69 changes: 51 additions & 18 deletions app/test/test_externalTrigger_googleDriveNewFileWatchClass.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from appObj import appObj
from APIClients import GoogleNotFoundException
from unittest.mock import patch
from test_externalTrigger_endpoints import example_changes_recource_message, external_trigger_api_prefix

class helper(TestHelperWithAPIOperationsClass):
def setup(self):
Expand All @@ -17,6 +18,27 @@ def setup(self):
"setupJob": json.loads(result.text)
}

def triggerJob(self, jobguid):
get_job_response = self.getJob(guid=jobguid)

ExternalTrigger = get_job_response["ExternalTrigger"]
rawurlpasscode = ExternalTrigger["urlpasscode"]
rawnonurlpasscode = ExternalTrigger["nonurlpasscode"]

encoded_job_guid = appObj.externalTriggerManager.encodeJobGuid(get_job_response["guid"])
resource_message = copy.deepcopy(example_changes_recource_message)
resource_message["headers"]["X-Goog-Channel-Token"] = encoded_job_guid
resource_message["headers"]["X-Goog-Channel-ID"]=rawnonurlpasscode

result = self.testClient.post(
external_trigger_api_prefix + '/trigger/' + rawurlpasscode,
data=resource_message["data"],
headers=resource_message["headers"]
)
self.assertEqual(result.status_code, 200)
return json.loads(result.text)


@pytest.mark.externalTriggerSystemTest
class test_externalTrigger_googleDriveNewFileWatchClass(helper):

Expand Down Expand Up @@ -95,25 +117,36 @@ def test_activateapionjob_test_invalid_folder(self):
self.assertEqual(response_json["result"], "Fail")
self.assertEqual(response_json["message"], "Invalid Folder")

# def test_activateapionjob_test_valid(self):
# setup = self.setup()
#
# triggerOptions={
# "access_token": "dummy_google_access_token",
# "folder_path": "/a/b/invalidfolder"
# }
# dummy_file = { "id": "aaa" }
# with patch('APIClients.DriveApiHelpers.find_folder_from_path', result=dummy_file):
# activate_response = self.activateTriggerOnJob(
# jobGuid=setup["setupJob"]["guid"],
# triggerType="googleDriveNewFileWatchClass",
# triggerOptions=triggerOptions,
# check_and_parse_response=False
# )
# self.assertEqual(activate_response.status_code, 201)
# #response_json = json.loads(activate_response.text)
# #print("response_json", response_json)
def test_activateapionjob_and_trigger_job_no_new_files(self):
setup = self.setup()

triggerOptions={
"access_token": "dummy_google_access_token",
"folder_path": "/a/b/invalidfolder"
}
dummy_file = { "id": "aaa" }
with patch('APIClients.DriveApiHelpers.find_folder_from_path', result=dummy_file):
with patch('APIClients.DriveApiHelpers.setup_watch_on_files', result=None):
def a(a, b, c):
return ([], [])
with patch('APIClients.DriveApiHelpers.get_list_of_new_files', a):
activate_response = self.activateTriggerOnJob(
jobGuid=setup["setupJob"]["guid"],
triggerType="googleDriveNewFileWatchClass",
triggerOptions=triggerOptions,
check_and_parse_response=False
)
self.assertEqual(activate_response.status_code, 201)

def a(a, b, c):
return ([], [])
with patch('APIClients.DriveApiHelpers.get_list_of_new_files', a):
trigger_resp = self.triggerJob(
jobguid = setup["setupJob"]["guid"]
)
self.assertEqual(trigger_resp["result"],"Success")

#TODO Maybe test where we trigger an actual job based on file change

#New file list mock response:
# [{'mimeType': 'application/pdf', 'parents': ['1LhOLAK3AC3XYGm3mr2MpZ1uM0BJPcDwJ'], 'id': '1TjGK6F532IpG881Fu-f5JbYYvZOhoiWM', 'name': 'Scanned_20231118-2054.pdf'}]

0 comments on commit 2c57458

Please sign in to comment.