class Test_lambda_api_gateway_simple_test(unittest.TestCase): def setUp(self): self.simple_test = Lambda('api_gateway.trigger_sync_jira_sheets') def test_update_and_invoke(self): file_id = '1yDxu5YxL9FxY5wQ1EEQlAYGt3flIsm2VTyWwPny5RLA' result = self.simple_test.invoke( {'queryStringParameters': { 'file_id': file_id }}) message = Misc.json_load(result.get('body')) Dev.pprint(message) #assert result == 'API Gateway test' def test_update_and_invoke__action_diff(self): file_id = '1yDxu5YxL9FxY5wQ1EEQlAYGt3flIsm2VTyWwPny5RLA' result = self.simple_test.invoke( {'queryStringParameters': { 'file_id': file_id, 'action': 'diff' }}) message = Misc.json_load(result.get('body')) Dev.pprint(message) def test_update_and_invoke__action_sync(self): file_id = '1yDxu5YxL9FxY5wQ1EEQlAYGt3flIsm2VTyWwPny5RLA' result = self.simple_test.invoke( {'queryStringParameters': { 'file_id': file_id, 'action': 'sync' }}) message = Misc.json_load(result.get('body')) Dev.pprint(message)
class test_Check_Main_Commands(TestCase): def setUp(self): self.osbot = Lambda('osbot.lambdas.osbot') self.api_gw_payload = { 'token': 'abc', 'team_id': 'T7F3AUXGV', 'api_app_id': 'ADKLUAF3M', 'event': { 'client_msg_id': '9a85fa78-24be-4701-8ff0-5b50dd12738f', 'type': 'message', 'text': 'help', 'user': '******', 'ts': '1554811005.000200', 'channel': 'DDKUZTK6X', 'event_ts': '1554811005.000200', 'channel_type': 'im' }, 'type': 'event_callback', 'event_id': 'EvHT1YNVU5', 'event_time': 1554811005, 'authed_users': ['UDK5W7W3T'] } def test_invoke(self): assert self.osbot.invoke( ) == '500 Error' # todo: find out the why the error def test_send_API_GW_command(self): Dev.pprint(self.osbot.invoke(Test_Data.api_gw_payload_help))
def show(params, height=200): browser = Lambda('osbot_browser.lambdas.lambda_browser') payload = {"params": params, 'data': {}} browser.invoke(payload) png_data = browser.invoke(payload) # print(png_data) show_png(png_data, height)
class GSBot_Execution: def __init__(self): self.osbot_lambda = Lambda('osbot.lambdas.osbot') self.jira_lambda = Lambda('osbot_jira.lambdas.jira') def invoke(self, command): params = command.split(' ') if len(params) > 0: if params[0] == 'jira': return self.invoke_jira(params[1:]) return self.invoke_osbot(command) def invoke_osbot(self, command): payload = { 'event': { 'type': 'message', 'text': command, 'user': '******' } } result = self.osbot_lambda.invoke(payload) text = result.get('text') attachments = result.get('attachments') return text, attachments def invoke_jira(self, params): payload = {'params': params} return "[*]: {0}".format(self.jira_lambda.invoke(payload)), []
class test_lambda_wardley_maps(Test_Helper): def setUp(self): self.lambda_name = 'osbot_browser.lambdas.lambda_browser' self.lambda_browser = Lambda( self.lambda_name) #lambdas.browser.lambda_browser') self.result = None self.png_data = None def tearDown(self): if self.result is not None: Dev.pprint(self.result) if self.png_data: png_file = '/tmp/lambda_png_file.png' with open(png_file, "wb") as fh: fh.write(base64.decodebytes(self.png_data.encode())) def test_update_lambda(self): Deploy().setup().deploy_lambda__browser() def test_render__simple(self): payload = {"params": ['render', 'examples/wardley_map/simple.html']} self.png_data = self.lambda_browser.invoke(payload) def test_render__cup_of_tea(self): payload = { "params": ['render', 'examples/wardley_map/cup-of-tea.html'] } #self.png_data = self.lambda_browser.invoke(payload) self.result = self.lambda_browser.invoke(payload)
class test_jira_web(unittest.TestCase): def setUp(self): self.png_data = None self.result = None self._lambda = Lambda('osbot_browser.lambdas.slack_web') def tearDown(self): if self.png_data: if type(self.png_data) is str: png_file = '/tmp/tmp-jira-screenshot.png' with open(png_file, "wb") as fh: fh.write(base64.decodebytes(self.png_data.encode())) Dev.pprint("Png data with size {0} saved to {1}".format( len(self.png_data), png_file)) else: Dev.print(self.result) if self.result: Dev.print(self.result) #def test_invoke_directly(self): # result = run({},{}) # assert result == '*Here are the `Browser_Commands` commands available:*' def test_invoke(self): self.test_update_lambda() target = '/messages/random/' payload = { 'target': target, 'channel': 'DDKUZTK6X', # gsbot 'team_id': 'T7F3AUXGV', # GS-CST 'width': 800, 'height': 1000 } self.result = self._lambda.invoke(payload) #self.png_data = self.result# self._lambda.invoke(payload) self.png_data = self.result def test_invoke_oss(self): self.test_update_lambda() #target = '/messages/oss-helpdesk' #target = '/messages/oss-general' target = '/messages/t-wardley-maps' payload = { 'target': target, 'channel': 'DJ8UA0RFT', # OSS - gsbot 'team_id': 'TAULHPATC', # OSS 'width': 1000, 'height': 6000, 'delay': 3, 'scroll_by': 15000 } self.result = self._lambda.invoke(payload) #self.png_data = self._lambda.invoke(payload) def test_update_lambda(self): Deploy().setup().deploy_lambda__slack_web()
def test_invoke(self): self.deploy.update() assert self.deploy.invoke({"name": "world"}) == "hello world" #invoke directly aws_lambda = Lambda(name=self.deploy.lambda_name()) assert aws_lambda.invoke() == 'hello None' assert aws_lambda.invoke({'name': 'world'}) == 'hello world'
class test_lambda_gs_bot(unittest.TestCase): def setUp(self): self.step_lambda = Lambda('osbot.lambdas.osbot') #def test_lambda_update(self): # self.step_lambda.update_with_lib() def test_invoke_directly(self): response = run({}, {}) assert response == '500 Error' def _send_command_message(self, command): payload = { 'team_id': 'T7F3AUXGV', 'event': { 'type': 'message', 'text': command, 'channel': 'GDL2EC3EE', 'user': '******' } } return self.step_lambda.invoke( payload ) # see answer in slack (add method to hook send_message method) def test_hello(self): response = self._send_command_message('hello') assert response == '200 OK' def test_version(self): response = self._send_command_message('version') assert response == '200 OK'
def slack(team_id=None, channel=None, params=None): target = Misc.array_pop(params,0) height = Misc.to_int(Misc.array_pop(params, 0)) width = Misc.to_int(Misc.array_pop(params, 0)) if target is None: target = 'general' if width is None: width = 800 if height is None: height = 1000 target_url = '/messages/{0}'.format(target) slack_message(":point_right: taking screenshot of slack channel: `{0}` with height `{1}` and width `{2}`".format(target, height,width), [], channel, team_id) payload = {'target' : target_url, 'channel': channel, 'team_id': team_id, 'width' : width, 'height' : height} aws_lambda = Lambda('osbot_browser.lambdas.slack_web') png_data = aws_lambda.invoke(payload) browser_helper = Browser_Lamdba_Helper() return browser_helper.send_png_data_to_slack(team_id, channel, target, png_data)
class test_lambda_gs_bot(TestCase): def setUp(self): self.lambda_name = 'osbot.lambdas.slack_callback' self.aws_lambda = Lambda(self.lambda_name) self.response = None def tearDown(self): if self.response is not None: Dev.pprint(self.response) def test_lambda_update(self): Lambda_Package(self.lambda_name).update_code() def test_invoke_directly(self): self.response = run({}, {}) def test_invoke_lambda(self): self.test_lambda_update() self.response = self.aws_lambda.invoke() #assert response == '500 Error' def test__create_button_to_test_dialog(self): self.test_lambda_update() from pbx_gs_python_utils.utils.Lambdas_Helpers import slack_message from pbx_gs_python_utils.utils.slack.API_Slack_Attachment import API_Slack_Attachment self.api_attach = API_Slack_Attachment() self.api_attach.set_text ('Click on button below to test dialog' ) \ .set_callback_id("button-dialog-test" ) \ .add_button ("button 1", "click-me-1", "open 1", "primary" ) \ .add_button ("button 2", "click-me-2", "open 2", "primary" ) attachments = self.api_attach.render() slack_message("one message", attachments, 'DDKUZTK6X')
def jira_links(start, direction, depth): view = None lambda_graph = Lambda('osbot_jira.lambdas.jira') payload = {"params": ['links', start, direction, depth, view]} result = lambda_graph.invoke(payload) return json.loads(result.get('text'))
class test_lambda_gs_bot(unittest.TestCase): def setUp(self): self.step_lambda = Lambda( 'pbx_gs_python_utils.lambdas.gsbot.gsbot_slack') #def test_lambda_update(self): # self.step_lambda.update_with_src() def test_invoke_directly(self): payload = {'params': [], 'data': {}} text, attachments = run(payload, {}) assert text == '*Here are the `Slack_Commands` commands available:*' def _send_command_message(self, command): payload = {'params': [command], 'data': {}} return self.step_lambda.invoke( payload ) # see answer in slack, or add a return to line 17 (in lambda_gs_bot) def test_bad_command(self): response = self._send_command_message('test') assert response == [ ':red_circle: command not found `test`\n' '\n' '*Here are the `Slack_Commands` commands available:*', [{ 'actions': [], 'callback_id': '', 'color': 'good', 'fallback': None, 'text': ' • stats\n • user_info\n • username_to_id\n' }] ]
class test_run_command(Test_Helper): def setUp(self): self.oss_setup = super().setUp() self.aws_lambda = Lambda('osbot_browser.lambdas.lambda_browser') self.result = None self.png_data = None def tearDown(self): if self.result is not None: Dev.pprint(self.result) if self.png_data: png_file = '/tmp/lambda_png_file.png' with open(png_file, "wb") as fh: fh.write(base64.decodebytes(self.png_data.encode())) def test__invoke__directly(self): from osbot_browser.lambdas.lambda_browser import run self.result = run({}, {}) def test__invoke__no_params(self): assert self.aws_lambda.invoke( ) == '*Here are the `Browser_Commands` commands available:*' def test__invoke__version(self): payload = {"params": ["version"]} self.result = self.aws_lambda.invoke(payload) def test__invoke__screenshot(self): deploy = Deploy() deploy.oss_setup.setup_test_environment() deploy.deploy_lambda__browser() payload = { "params": ["screenshot", "https://www.google.com/images", "1200"], 'data': { 'channel': 'DJ8UA0RFT' } } self.result = self.aws_lambda.invoke(payload) #self.png_data = self.aws_lambda.invoke(payload) def test__invoke__screenshot__no_channel(self): deploy = Deploy() deploy.oss_setup.setup_test_environment() deploy.deploy_lambda__browser() payload = {"params": ["screenshot", "https://www.google.com/images"]} self.result = self.aws_lambda.invoke(payload)
def maps_create(self, code, height=300): aws_lambda = Lambda('osbot_browser.lambdas.lambda_browser') params = ["maps", "exec_js"] params.extend(code.split(' ')) payload = {"params": params, 'data': {}} png_data = aws_lambda.invoke(payload) self.show_png(png_data, height)
class test_icap_client_lambda(TestCase): def setUp(self) -> None: load_dotenv() # todo: refactor into helper class self.target_ip = os.environ.get('TEST_ICAP_SERVER') self.aws_lambda = Lambda('icap-client-lambda') print() def test_invoke_function(self): payload = { "command": "/usr/local/c-icap/bin/c-icap-client", "params": ["-i", self.target_ip, "-s", "gw_rebuild"] } result = self.aws_lambda.invoke(payload) icap_data = result.get('stderr') icap_headers = Icap_Client().extract_icap_headers(icap_data) assert icap_headers.get('status_code') == '200' assert icap_headers.get( 'Service') == 'C-ICAP/0.5.7 server - Glasswall Rebuild service' def test_invoke_function_ssh(self): payload = { "command": "ssh", "params": ["-i", "asf", f"ubuntu@{self.target_ip }"] } result = self.aws_lambda.invoke(payload) assert result.get( 'stderr') == 'PRIV_END: seteuid: Operation not permitted\r\n' def check_icap_server(self, address): payload = { "command": "/usr/local/c-icap/bin/c-icap-client", "params": ["-i", address, "-s", "gw_rebuild"] } result = self.aws_lambda.invoke(payload) pprint(result) icap_data = result.get('stderr') icap_headers = Icap_Client().extract_icap_headers(icap_data) return icap_headers def test_check_icap_server(self): icap_headers = self.check_icap_server(self.target_ip) assert icap_headers.get('status_code') == '200' assert icap_headers.get( 'Service') == 'C-ICAP/0.5.7 server - Glasswall Rebuild service'
class Test_Lambda_log_to_elk(unittest.TestCase): def setUp(self): self.log_to_elk = Lambda( 'pbx_gs_python_utils.lambdas.utils.log_to_elk') def test_invoke_directly(self): assert run({}, {}) is None # def test_update_invoke(self): # payload = {'message' : 'an message'} # response = self.log_to_elk.update_with_lib().invoke(payload) # # Dev.pprint(response) # #assert response.get('elastic_response').get('result') == 'created' # # #assert self.log_to_elk.update_with_lib().invoke({}) is None def test_invoke___check_multiple_log_options(self): response = self.log_to_elk.invoke({ 'level': 'info', 'category': 'category info', 'message': 'message info', 'data': { 'answer': 42 } }) assert response.get('elastic_response').get('result') == 'created' response = self.log_to_elk.invoke({ 'level': 'debug', 'category': 'category debug', 'message': 'message debug', 'data': { 'answer': 42 } }) assert response.get('elastic_response').get('result') == 'created' response = self.log_to_elk.invoke({ 'level': 'error', 'category': 'category error', 'message': 'message error', 'data': { 'answer': 42 } }) assert response.get('elastic_response').get('result') == 'created'
def test_screenshot_via_lambda(self): #Deploy().deploy_lambda__browser() url = 'https://www.google.com/asd' lambda_name = 'osbot_browser.lambdas.lambda_browser' lambda_browser = Lambda(lambda_name) payload = {"params": ['screenshot', url]} self.png_data = lambda_browser.invoke(payload) from osbot_aws.apis.shell.Lambda_Shell import Lambda_Shell auth_key = Lambda_Shell().get_lambda_shell_auth() payload = { 'lambda_shell': { 'method_name': 'list_processes', 'method_kwargs': None, 'auth_key': auth_key } } print(lambda_browser.invoke(payload))
def maps_create(code): display(Javascript("$('.container').width('95%')")) aws_lambda = Lambda('osbot_browser.lambdas.lambda_browser') params = ["maps", "exec_js"] params.extend(code.split(' ')) payload = {"params": params, 'data': {}} png_data = aws_lambda.invoke(payload) show_png(png_data, 600)
class Test_Lambda_dot_to_png(unittest.TestCase): def setUp(self): self.plant_to_png = Lambda('utils.puml_to_png') deploy = Deploy() deploy.oss_setup.setup_test_environment() deploy.deploy_lambda_puml_to_png() def test_update_invoke(self): puml = "@startuml \n aaa30->bbb12 \n @enduml" result = self.plant_to_png.invoke({"puml": puml}) Dev.pprint(result) #Show_Img.from_svg_string(result['png_base64']) def test_just_invoke___more_complex_diagram(self): puml = """ @startuml /'skinparam dpi 500 '/ :Main aaa Admin: as Admin (Use the application) as (Use) User -> (Start) User --> (Use) (Use) --> (b50011) Admin ---> (Use) note right of admin : This is an example. note right of (Use) A note can also be on several lines very cool end note note "This note is connected\\nto several objects." as N2 (Start) .. N2 N2 .. (Use) @enduml """ result = self.plant_to_png.invoke({"puml": puml}) from pbx_gs_python_utils.utils.Show_Img import Show_Img Show_Img.from_svg_string(result['png_base64'])
class Test_Full_Calendar_Views(TestCase): def setUp(self): self.calendar_views = Full_Calendar_Views() self.png_data = None def tearDown(self): Browser_Lamdba_Helper().save_png_data(self.png_data) def test_default(self): self.png_data = self.calendar_views.gs_team(headless=False) self.png_data = self.png_data def test_default__via_lambda(self): self.lambda_browser = Lambda('browser.lambda_browser') self.lambda_browser.update_with_src() payload = {"params": ['calendar','gs_team'],'data': {'team_id':'T7F3AUXGV', 'channel':'DDKUZTK6X'}} self.lambda_browser.invoke(payload)
def issue(self,issue_id): #print('getting screenshot of issue {0} from jira'.format(issue_id)) from IPython.display import display_html jira_web = Lambda('osbot_browser.lambdas.jira_web') payload = {'issue_id': issue_id} png_data = jira_web.invoke(payload) html = '<img style="border:1px solid black" align="left" src="data:image/png;base64,{}"/>'.format(png_data) display_html(html, raw=True)
def test_via_lambda_execution(self): self.test_update_lambda() view = 'default' code = '' aws_lambda = Lambda('osbot_browser.lambdas.lambda_browser') payload = { "params": ["maps", view, code], 'data': { 'channel': 'DJ8UA0RFT' } } self.result = aws_lambda.invoke(payload)
def create_dashboard_for_jira_key(self, jira_key): lambda_graph = Lambda('lambdas.gsbot.gsbot_graph') payload = { 'data': {}, "params": ['expand', jira_key, 9, 'delivered by,risks_up'] } result = lambda_graph.invoke(payload) graph_data = json.loads(result) graph_name = graph_data.get('graph_name') sleep(1.0) # to give time for ELK to index return self.create_dashboard_for_graph(graph_name, jira_key)
def view(team_id=None, channel=None, params=None): name = " ".join(params) aws_lambda = Lambda('oss_bot.lambdas.git_lambda') payload = {'action': 'participant_url', 'name' : name, 'commit': False} result = aws_lambda.invoke(payload) if result.get('status') == 'ok': path = result.get('data') send_screenshot_to_slack(path,channel,[1200]) else: slack_message(":red_circle: Sorry, couldn't find url for `{0}`".format(name),[],channel) return ":red_circle: Sorry, couldn't find url for `{0}`".format(name)
def test__cmd_server__via_lambda(self): elastic_jira = Lambda('osbot_jira.lambdas.jira') payload = { "params": ["server", "status"], "channel": "DDKUZTK6X", 'team_id': 'T7F3AUXGV' } result = elastic_jira.invoke(payload) assert result == { 'attachments': [], 'text': '{\n "status": "OK 12345"\n}\n' }
class test_sow(Test_Helper): def setUp(self): super().setUp() self.lambda_name = 'osbot_browser.lambdas.gw.sow' self.aws_lambda = Lambda(self.lambda_name) self.result = None self.png_data = None def tearDown(self): super().print(self.result) super().save_png(self.png_data, '/tmp/lambda_png_file.png') def test_update_lambda(self): Deploy().setup().deploy_lambda__browser(self.lambda_name) def test_get_issue_data(self): issue_id = 'SOW-135' self.result = get_issue_data(issue_id) def test__invoke_in_lambda(self): self.test_update_lambda() issue_id = 'SOW-121' payload = {"issue_id": issue_id} self.result = self.aws_lambda.invoke(payload) def test_invoke_lambda(self): issue_id = 'SOW-135' lambda_name = 'osbot_browser.lambdas.gw.sow' png_data = Lambda(lambda_name).invoke({'issue_id': issue_id}) def test_invoke_directly(self): issue_id = 'SOW-129' payload = {"headless": False, "issue_id": issue_id} self.png_data = run(payload, None) def render_and_save(self, issue_id, title, target_folder): png_data = run({"issue_id": issue_id}, {}) target_file = f'{target_folder}/{issue_id} - {title}.png' super().save_png(png_data, target_file) def test_create_report_files(self): target = '/tmp/SOW_Items' issues_id = { #'SOW-119': 'A. Enable the ability to validate file type ' , #'SOW-122': 'B. Develop a content-based dirty word tagging' , #'SOW-126': 'C. Enable the ability to encode, insert, extract, and decode security features ', 'SOW-129': 'D. Enable support of other file types', #'SOW-135': 'E. Develop support for multi-threaded execution.', } for issue_id, title in issues_id.items(): self.render_and_save(issue_id, title, target)
class Test_Sow_Views(Test_Helper): def setUp(self): super().setUp() self.lambda_name = 'osbot_browser.lambdas.lambda_browser' self.lambda_browser = Lambda(self.lambda_name) self.sow_views = Sow_Views() self.png_data = None self.result = None def tearDown(self): if self.result: Dev.pprint(self.result) if self.png_data: Browser_Lamdba_Helper().save_png_data(self.png_data) def test_directly_default(self): self.png_data = self.sow_views.default(headless=False) def test_directly_view(self): self.png_data = self.sow_views.view(headless=False, params=['SOW-121']) def test_using_lambda_view(self): #self.test_update_lambda() payload = {"params": ['sow', 'view', 'SOW-119']} self.png_data = self.lambda_browser.invoke(payload) def test_using_lambda(self): payload = {"params": ['sow', 'default']} self.lambda_name = 'osbot_browser.lambdas.lambda_browser' self.lambda_browser = Lambda(self.lambda_name) self.result = self.lambda_browser.invoke(payload) #self.png_data = self.lambda_browser.invoke(payload) def test_update_lambda(self): Deploy().setup().deploy_lambda__browser() payload = {"params": ['sow', 'default']} self.result = self.lambda_browser.invoke(payload)
class test_run_command(Test_Helper): def setUp(self): super().setUp() self.lambda_name = 'osbot_jupyter.lambdas.start_server' self.aws_lambda = Lambda(self.lambda_name) self.result = None self.png_data = None #self.aws_lambda.add_module('osbot_browser') #self.aws_lambda.update_code() # use when wanting to update lambda function def tearDown(self): if self.result: Dev.pprint(self.result) if self.png_data: png_file = '/tmp/lambda_png_file.png' with open(png_file, "wb") as fh: fh.write(base64.decodebytes(self.png_data.encode())) Dev.pprint("Png data with size {0} saved to {1}".format( len(self.png_data), png_file)) # def test_invoke_lambda(self):w # #payload = { 'repo_name': 'gs-notebook-gscs', "channel": "GDL2EC3EE", "team_id": "T7F3AUXGV"} # payload = { 'repo_name': 'gs-notebook-risks', 'channel': 'GDL2EC3EE', 'team_id': 'T7F3AUXGV', 'user': '******'} # self.result = self.aws_lambda.invoke(payload) #def test_invoke_directly(self): def test_invoke_lambda_bad_repo(self): payload = { 'repo_name': 'gs-notebook-AAAAA', "team_id": "T7F3AUXGV", "channel": "GDL2EC3EE" } self.result = self.aws_lambda.invoke(payload) def test_just_update(self): Deploy().deploy_lambda__jupyter('osbot_jupyter.lambdas.osbot') Deploy().deploy_lambda__jupyter('osbot_jupyter.lambdas.start_server') def test_invoke(self): self.test_just_update() payload = { 'repo_name': 'gwbot-jupyter-notebooks', 'channel': 'DRE51D4EM', 'user': '******', 'server_size': 'medium' } result = Lambda(self.lambda_name).invoke(payload) self.result = result
class Temp_Lambda: def __init__(self): self.lambda_name = "temp_lambda_{0}".format( Misc.random_string_and_numbers()) self.aws_lambda = Lambda(self.lambda_name) self.tmp_folder = Temp_Folder_Code(self.lambda_name) self.role_arn = Temp_Aws_Roles().for_lambda_invocation() self.create_log = None self.delete_on_exit = True self.s3_bucket = Globals.lambda_s3_bucket self.s3_key = 'unit_tests/lambdas/{0}.zip'.format(self.lambda_name) self.s3 = self.aws_lambda.s3() def __enter__(self): (self.aws_lambda.set_role(self.role_arn).set_s3_bucket( self.s3_bucket).set_s3_key(self.s3_key).set_folder_code( self.tmp_folder.folder)) self.aws_lambda.upload() self.create_log = self.aws_lambda.create() assert self.aws_lambda.exists() == True return self def __exit__(self, type, value, traceback): if self.delete_on_exit: assert self.aws_lambda.delete() is True self.delete_s3_file() def arn(self): return self.aws_lambda.function_Arn() def info(self): return self.aws_lambda.info() def invoke(self, params=None): return self.aws_lambda.invoke(params) def invoke_raw(self, params=None): return self.aws_lambda.invoke_raw(params) def set_s3_bucket(self, value): self.s3_bucket = value def s3_file_exists(self): return self.s3.file_exists(self.s3_bucket, self.s3_key) def delete_s3_file(self): self.s3.file_delete(self.s3_bucket, self.s3_key) assert self.s3_file_exists() is False return self
def test__cmd_links__via_lambda(self): elastic_jira = Lambda('osbot_jira.lambdas.jira') payload = { "params": ["links", "FACT-47", "up", "3"], "channel": "GDL2EC3EE" } result = elastic_jira.invoke(payload) text = result['text'] attachments = result['attachments'] channel = 'GDL2EC3EE' slack_message(text, attachments, channel) assert ":point_right: Rendering graph for `FACT-47` in the direction `up`, with depth `3`, with plantuml size:" in text