mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	MigrationsTestCase is intentionally omitted from this, since migrations tests are different in their nature and so whatever setUp() ZulipTestCase may do in the future, MigrationsTestCase may not necessarily want to replicate.
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import json
 | 
						|
import mock
 | 
						|
from zerver.lib.test_classes import ZulipTestCase
 | 
						|
from typing import Dict
 | 
						|
 | 
						|
class TestFeedbackBot(ZulipTestCase):
 | 
						|
    def setUp(self) -> None:
 | 
						|
        super().setUp()
 | 
						|
        user_profile = self.example_user('hamlet')
 | 
						|
        self.login(user_profile.email, realm=user_profile.realm)
 | 
						|
 | 
						|
    def test_create_video_call_success(self) -> None:
 | 
						|
        with mock.patch('zerver.lib.actions.request_zoom_video_call_url', return_value={'join_url': 'example.com'}):
 | 
						|
            result = self.client_get("/json/calls/create")
 | 
						|
            self.assert_json_success(result)
 | 
						|
            self.assertEqual(200, result.status_code)
 | 
						|
            content = result.json()
 | 
						|
            self.assertEqual(content['zoom_url'], 'example.com')
 | 
						|
 | 
						|
    def test_create_video_call_failure(self) -> None:
 | 
						|
        with mock.patch('zerver.lib.actions.request_zoom_video_call_url', return_value=None):
 | 
						|
            result = self.client_get("/json/calls/create")
 | 
						|
            self.assert_json_success(result)
 | 
						|
            self.assertEqual(200, result.status_code)
 | 
						|
            content = result.json()
 | 
						|
            self.assertEqual(content['zoom_url'], '')
 | 
						|
 | 
						|
    def test_create_video_request_success(self) -> None:
 | 
						|
        class MockResponse:
 | 
						|
            def __init__(self) -> None:
 | 
						|
                self.status_code = 200
 | 
						|
 | 
						|
            def json(self) -> Dict[str, str]:
 | 
						|
                return {"join_url": "example.com"}
 | 
						|
 | 
						|
            def raise_for_status(self) -> None:
 | 
						|
                return None
 | 
						|
 | 
						|
        with mock.patch('requests.post', return_value=MockResponse()):
 | 
						|
            result = self.client_get("/json/calls/create")
 | 
						|
            self.assert_json_success(result)
 | 
						|
 | 
						|
    def test_create_video_request_http_error(self) -> None:
 | 
						|
        class MockResponse:
 | 
						|
            def __init__(self) -> None:
 | 
						|
                self.status_code = 401
 | 
						|
 | 
						|
            def raise_for_status(self) -> None:
 | 
						|
                raise Exception("Invalid request!")
 | 
						|
 | 
						|
        with mock.patch('requests.post', return_value=MockResponse()):
 | 
						|
            result = self.client_get("/json/calls/create")
 | 
						|
            self.assert_json_success(result)
 | 
						|
            result_dict = json.loads(result.content.decode('utf-8'))
 | 
						|
 | 
						|
            # TODO: Arguably this is the wrong result for errors, but
 | 
						|
            # in any case we should test it.
 | 
						|
            self.assertEqual(result_dict['zoom_url'], '')
 | 
						|
 | 
						|
    def test_create_video_request(self) -> None:
 | 
						|
        with mock.patch('requests.post'):
 | 
						|
            result = self.client_get("/json/calls/create")
 | 
						|
            self.assert_json_success(result)
 |