예제 #1
0
    def setup_server(cls):
        cls.old_os_env = remove_os_env_temporarily()
        setup_mock_web_api_server(cls)

        signing_secret = "secret"
        valid_token = "xoxb-valid"
        mock_api_server_base_url = "http://localhost:8888"
        web_client = WebClient(token=valid_token, base_url=mock_api_server_base_url,)
        app = App(client=web_client, signing_secret=signing_secret,)

        def event_handler():
            pass

        def shortcut_handler(ack):
            ack()

        def command_handler(ack):
            ack()

        app.event("app_mention")(event_handler)
        app.shortcut("test-shortcut")(shortcut_handler)
        app.command("/hello-world")(command_handler)

        handler = SlackRequestHandler(app)

        class SlackApp(object):
            @cherrypy.expose
            @cherrypy.tools.slack_in()
            def events(self, **kwargs):
                return handler.handle()

        cherrypy.tree.mount(SlackApp(), "/slack")
예제 #2
0
    def setup_server(cls):
        cls.old_os_env = remove_os_env_temporarily()

        signing_secret = "secret"
        valid_token = "xoxb-valid"
        mock_api_server_base_url = "http://localhost:8888"
        web_client = WebClient(token=valid_token, base_url=mock_api_server_base_url,)
        app = App(
            client=web_client,
            signing_secret=signing_secret,
            oauth_settings=OAuthSettings(
                client_id="111.111",
                client_secret="xxx",
                scopes=["chat:write", "commands"],
            ),
        )
        handler = SlackRequestHandler(app)

        class SlackApp(object):
            @cherrypy.expose
            @cherrypy.tools.slack_in()
            def install(self, **kwargs):
                return handler.handle()

        cherrypy.tree.mount(SlackApp(), "/slack")
예제 #3
0
 def event_loop(self):
     old_os_env = remove_os_env_temporarily()
     try:
         setup_mock_web_api_server(self)
         loop = asyncio.get_event_loop()
         yield loop
         loop.close()
         cleanup_mock_web_api_server(self)
     finally:
         restore_os_env(old_os_env)
예제 #4
0
    def setUp(self):
        self.old_os_env = remove_os_env_temporarily()
        setup_mock_web_api_server(self)

        web_client = WebClient(token=valid_token, base_url=mock_api_server_base_url,)
        self.app = App(client=web_client, signing_secret=signing_secret,)
        self.app.event("app_mention")(event_handler)
        self.app.shortcut("test-shortcut")(shortcut_handler)
        self.app.command("/hello-world")(command_handler)

        AsyncHTTPTestCase.setUp(self)
예제 #5
0
    def event_loop(self):
        old_os_env = remove_os_env_temporarily()
        try:
            setup_mock_web_api_server(self)
            self.app = AsyncApp(
                client=self.web_client, signing_secret=self.signing_secret
            )
            self.app.step(copy_review_step)

            loop = asyncio.get_event_loop()
            yield loop
            loop.close()
            cleanup_mock_web_api_server(self)
        finally:
            restore_os_env(old_os_env)
예제 #6
0
    def setup_method(self):
        self.old_os_env = remove_os_env_temporarily()
        setup_mock_web_api_server(self)

        web_client = WebClient(
            token=valid_token,
            base_url=mock_api_server_base_url,
        )
        app = App(
            client=web_client,
            signing_secret=signing_secret,
        )
        TestBottle.handler = SlackRequestHandler(app)
        app.event("app_mention")(event_handler)
        app.shortcut("test-shortcut")(shortcut_handler)
        app.command("/hello-world")(command_handler)
예제 #7
0
 def setup_method(self):
     self.old_os_env = remove_os_env_temporarily()
     setup_mock_web_api_server(self)
예제 #8
0
 def setUp(self):
     AsyncHTTPTestCase.setUp(self)
     self.old_os_env = remove_os_env_temporarily()
예제 #9
0
 def setup_method(self):
     self.old_os_env = remove_os_env_temporarily()
예제 #10
0
    async def test_decorators(self):
        try:
            self.old_os_env = remove_os_env_temporarily()
            setup_mock_web_api_server(self)

            app = AsyncApp(signing_secret=self.signing_secret,
                           client=self.web_client)
            ack = NoopAsyncAck()

            @app.event("app_home_opened")
            async def handle_events(body: dict):
                assert body is not None

            await handle_events({})
            assert isinstance(handle_events, Callable)

            @app.message("hi")
            async def handle_message_events(body: dict):
                assert body is not None

            await handle_message_events({})
            assert isinstance(handle_message_events, Callable)

            @app.command("/hello")
            async def handle_commands(ack: AsyncAck, body: dict):
                assert body is not None
                await ack()

            await handle_commands(ack, {})
            assert isinstance(handle_commands, Callable)

            @app.shortcut("test-shortcut")
            async def handle_shortcuts(ack: AsyncAck, body: dict):
                assert body is not None
                await ack()

            await handle_shortcuts(ack, {})
            assert isinstance(handle_shortcuts, Callable)

            @app.action("some-action-id")
            async def handle_actions(ack: AsyncAck, body: dict):
                assert body is not None
                await ack()

            await handle_actions(ack, {})
            assert isinstance(handle_actions, Callable)

            @app.view("some-callback-id")
            async def handle_views(ack: AsyncAck, body: dict):
                assert body is not None
                await ack()

            await handle_views(ack, {})
            assert isinstance(handle_views, Callable)

            @app.options("some-id")
            async def handle_views(ack: AsyncAck, body: dict):
                assert body is not None
                await ack()

            await handle_views(ack, {})
            assert isinstance(handle_views, Callable)

            @app.error
            async def handle_errors(body: dict):
                assert body is not None

            await handle_errors({})
            assert isinstance(handle_errors, Callable)

            @app.use
            async def middleware(body, next):
                assert body is not None
                await next()

            async def next_func():
                pass

            await middleware({}, next_func)
            assert isinstance(middleware, Callable)

        finally:
            cleanup_mock_web_api_server(self)
            restore_os_env(self.old_os_env)
예제 #11
0
 def setUp(self):
     self.config = testing.setUp()
     self.old_os_env = remove_os_env_temporarily()
     setup_mock_web_api_server(self)
예제 #12
0
 def setup_method(self):
     self.old_os_env = remove_os_env_temporarily()
     setup_mock_web_api_server(self)
     self.app = App(client=self.web_client,
                    signing_secret=self.signing_secret)
     self.app.step(copy_review_step)