mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	We now have this API...
If you really just need to log in
and not do anything with the actual
user:
    self.login('hamlet')
If you're gonna use the user in the
rest of the test:
    hamlet = self.example_user('hamlet')
    self.login_user(hamlet)
If you are specifically testing
email/password logins (used only in 4 places):
    self.login_by_email(email, password)
And for failures uses this (used twice):
    self.assert_login_failure(email)
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import json
 | 
						|
import mock
 | 
						|
from zerver.lib.test_classes import ZulipTestCase
 | 
						|
from typing import Dict
 | 
						|
 | 
						|
class TestVideoCall(ZulipTestCase):
 | 
						|
    def setUp(self) -> None:
 | 
						|
        super().setUp()
 | 
						|
        user_profile = self.example_user('hamlet')
 | 
						|
        self.login_user(user_profile)
 | 
						|
 | 
						|
    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)
 |