text: import io
  import requests
  import pytest
  
  from notifications_utils.clients.antivirus.antivirus_client import AntivirusClient, AntivirusError
  
  
  @pytest.fixture(scope='function')
  def antivirus(app, mocker):
      client = AntivirusClient()
      app.config['ANTIVIRUS_API_HOST'] = 'https://antivirus'
      app.config['ANTIVIRUS_API_KEY'] = 'test-antivirus-key'
      client.init_app(app)
      return client
  
  
  def test_scan_document(antivirus, rmock):
      document = io.BytesIO(b'filecontents')
      rmock.request('POST', 'https://antivirus/scan', json={
          'ok': True
      }, request_headers={
          'Authorization': 'Bearer test-antivirus-key',
      }, status_code=200)
  
      resp = antivirus.scan(document)
  
      assert resp
      assert 'filecontents' in rmock.last_request.text
      assert document.tell() == 0
  
  
  def test_should_raise_for_status(antivirus, rmock):
      with pytest.raises(AntivirusError) as excinfo:
          rmock.request('POST', 'https://antivirus/scan', json={
              'error': 'Antivirus error'
          }, status_code=400)
  
          antivirus.scan(io.BytesIO(b'document'))
  
      assert excinfo.value.message == 'Antivirus error'
      assert excinfo.value.status_code == 400
  
  
  def test_should_raise_for_connection_errors(antivirus, rmock):
      with pytest.raises(AntivirusError) as excinfo:
          rmock.request('POST', 'https://antivirus/scan', exc=requests.exceptions.ConnectTimeout)
          antivirus.scan(io.BytesIO(b'document'))
  
      assert excinfo.value.message == 'connection error'
      assert excinfo.value.status_code == 503
  