def test_file_context(self): response = None with open("threats/test_data/boss.gif", "rb") as boss_reader: file_data = boss_reader.read() boss_reader.seek(0) response = self.client.post('/', { 'artifact': '{"type": "file.content"}', 'file': boss_reader }, format="multipart") upload_file_args = { "name": "boss.gif", "content_type": "application/octet-stream", "size": 29927, "charset": None, } self.assertEqual(response.status_code, 200) temp_file = TemporaryUploadedFile(**upload_file_args) temp_file.write(file_data) temp_file.flush() context = SearchContext({"type": "file.content", "value": temp_file}) context.save() self.assertEqual(context.file_data_len, len(file_data)) loaded_context = SearchContext.load(context.id) self.assertEqual(loaded_context.base64_file_data_len, context.base64_file_data_len) self.assertEqual(loaded_context.file_data_len, context.file_data_len) with open(loaded_context.value.temporary_file_path(), "rb") as temp_file: loaded_file_data = temp_file.read() for counter in range(0, len(loaded_file_data) // 100): begin = counter * 100 end = begin + 100 self.assertEqual(file_data[begin:end], loaded_file_data[begin:end]) self.assertEqual(len(file_data), len(loaded_file_data))