mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-30 11:33:51 +00:00 
			
		
		
		
	This release is from 2018-08-22, a little over 100 days ago. It was the first release with the important fix so that when the server advises it to stop displaying a notification because the user has read the message (as the SEND_REMOVE_PUSH_NOTIFICATIONS server setting enables), the app doesn't instead replace the notification with a broken one reading "null". We have that setting running now on chat.zulip.org, and intend to roll it out more broadly soon. The `# take 0` thing is a slightly absurd workaround for the fact that our funky out-of-line way of marking lines to ignore doesn't work right if there are multiple such lines in a given file that are equal modulo leading and trailing whitespace.
		
			
				
	
	
		
			76 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| from django.http import HttpResponse
 | |
| 
 | |
| from zerver.lib.test_classes import ZulipTestCase
 | |
| from zerver.views.compatibility import find_mobile_os, version_lt
 | |
| 
 | |
| class VersionTest(ZulipTestCase):
 | |
|     data = [case.split() for case in '''
 | |
|         1.2.3    <  1.2.4
 | |
|         1.2.3    =  1.2.3
 | |
|         1.4.1    >  1.2.3
 | |
|         1.002a   =  1.2a
 | |
|         1.2      <  1.2.3
 | |
|         1.2.3    ?  1.2-dev
 | |
|         1.2-dev  ?  1.2a
 | |
|         1.2a     ?  1.2rc3
 | |
|         1.2rc3   ?  1.2
 | |
|         1.2      ?  1.2-g0f1e2d3c4
 | |
|         10.1     >  1.2
 | |
|         0.17.18  <  16.2.96
 | |
|         9.10.11  <  16.2.96
 | |
|         15.1.95  <  16.2.96
 | |
|         16.2.96  =  16.2.96
 | |
|         20.0.103 >  16.2.96
 | |
|     '''.strip().split('\n')] + [
 | |
|         ['', '?', '1'],
 | |
|         ['', '?', 'a'],
 | |
|     ]
 | |
| 
 | |
|     def test_version_lt(self) -> None:
 | |
|         for ver1, cmp, ver2 in self.data:
 | |
|             msg = 'expected {} {} {}'.format(ver1, cmp, ver2)
 | |
|             if cmp == '<':
 | |
|                 self.assertTrue(version_lt(ver1, ver2), msg=msg)
 | |
|                 self.assertFalse(version_lt(ver2, ver1), msg=msg)
 | |
|             elif cmp == '=':
 | |
|                 self.assertFalse(version_lt(ver1, ver2), msg=msg)
 | |
|                 self.assertFalse(version_lt(ver2, ver1), msg=msg)
 | |
|             elif cmp == '>':
 | |
|                 self.assertFalse(version_lt(ver1, ver2), msg=msg)
 | |
|                 self.assertTrue(version_lt(ver2, ver1), msg=msg)
 | |
|             elif cmp == '?':
 | |
|                 self.assertIsNone(version_lt(ver1, ver2), msg=msg)
 | |
|                 self.assertIsNone(version_lt(ver2, ver1), msg=msg)
 | |
|             else:
 | |
|                 assert False  # nocoverage
 | |
| 
 | |
|     mobile_os_data = [case.split(None, 1) for case in '''
 | |
|       android ZulipMobile/1.2.3 (Android 4.5)
 | |
|       ios     ZulipMobile/1.2.3 (iPhone OS 2.1)
 | |
|       ios     ZulipMobile/1.2.3 (iOS 6)
 | |
|       None    ZulipMobile/1.2.3 (Windows 8)
 | |
|     '''.strip().split('\n')]
 | |
| 
 | |
|     def test_find_mobile_os(self) -> None:
 | |
|         for expected_, user_agent in self.mobile_os_data:
 | |
|             expected = None if expected_ == 'None' else expected_
 | |
|             self.assertEqual(find_mobile_os(user_agent), expected,
 | |
|                              msg=user_agent)
 | |
| 
 | |
| 
 | |
| class CompatibilityTest(ZulipTestCase):
 | |
|     def test_compatibility(self) -> None:
 | |
|         def get(user_agent: str) -> HttpResponse:
 | |
|             return self.client_get("/compatibility", HTTP_USER_AGENT=user_agent)
 | |
| 
 | |
|         self.assert_json_error(get('ZulipInvalid/5.0'), "Client is too old")
 | |
|         self.assert_json_success(get('ZulipMobile/5.0'))
 | |
|         self.assert_json_success(get('ZulipMobile/5.0 (iOS 11)'))
 | |
|         self.assert_json_success(get('ZulipMobile/5.0 (Androidish 9)'))
 | |
|         self.assert_json_error(get('ZulipMobile/5.0 (Android 9)'), "Client is too old")
 | |
|         self.assert_json_error(get('ZulipMobile/15.1.95 (Android 9)'), "Client is too old")
 | |
|         self.assert_json_error(get('ZulipMobile/16.1.94 (Android 9)'), "Client is too old")
 | |
|         self.assert_json_success(get('ZulipMobile/16.2.96 (Android 9)'))
 | |
|         self.assert_json_success(get('ZulipMobile/20.0.103 (Android 9)'))
 |