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))
Example #3
0
 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)
Example #4
0
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()
Example #7
0
    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'
Example #8
0
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'
Example #9
0
    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)
Example #10
0
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')
Example #11
0
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'))
Example #12
0
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)
Example #14
0
    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'])
Example #20
0
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)
Example #21
0
    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)
Example #22
0
 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)
Example #23
0
    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)
Example #25
0
    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'
        }
Example #26
0
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)
Example #28
0
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
Example #29
0
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
Example #30
0
    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