from zerver.lib.test_classes import ZulipTestCase class CamoURLTest(ZulipTestCase): def test_legacy_camo_url(self) -> None: # Test with valid hex and URL pair result = self.client_get( "/external_content/0f50f0bda30b6e65e9442c83ddb4076c74e75f96/687474703a2f2f7777772e72616e646f6d2e736974652f696d616765732f666f6f6261722e6a706567" ) self.assertEqual(result.status_code, 302, result) self.assertIn( "/filters:no_upscale():quality(100)/aHR0cDovL3d3dy5yYW5kb20uc2l0ZS9pbWFnZXMvZm9vYmFyLmpwZWc=/source_type/external", result.url, ) # Test with invalid hex and URL pair result = self.client_get( "/external_content/074c5e6c9c6d4ce97db1c740d79dc561cf7eb379/687474703a2f2f7777772e72616e646f6d2e736974652f696d616765732f666f6f6261722e6a706567" ) self.assertEqual(result.status_code, 403, result) self.assert_in_response("Not a valid URL.", result) def test_with_thumbor_disabled(self) -> None: with self.settings(THUMBOR_SERVES_CAMO=False): result = self.client_get( "/external_content/074c5e6c9c6d4ce97db1c740d79dc561cf7eb379/687474703a2f2f7777772e72616e646f6d2e736974652f696d616765732f666f6f6261722e6a706567" ) self.assertEqual(result.status_code, 404, result)