class_docstr: Tests the S3Driver
  
  This was largely ported over from test_lookup_tables.py from the old implementation.
class_docstr_tok: ["Tests","the","S3Driver","This","was","largely","ported","over","from","test_lookup_tables.py","from","the","old","implementation","."]
docstr: LookupTables - Setup S3 bucket mocking
docstr_tok: ["LookupTables","-","Setup","S3","bucket","mocking"]
code: def setup(self):
      """LookupTables - Setup S3 bucket mocking"""
      self.buckets_info = {"bucket_name": ["foo.json", "bar.json"]}
      self.config = load_config("tests/unit/conf")
      self.s3_mock = mock_s3()
      self.s3_mock.start()
  
      self._foo_driver = construct_persistence_driver(
          self.config["lookup_tables"]["tables"]["foo"]
      )
      self._bar_driver = construct_persistence_driver(
          self.config["lookup_tables"]["tables"]["bar"]
      )
      self._bad_driver = construct_persistence_driver(
          {
              "driver": "s3",
              "bucket": "bucket_name",
              "key": "invalid-key",
          }
      )
  
      self._put_mock_tables()
  
imports: from datetime import datetime
  import json
  import zlib
  import botocore
  from botocore.exceptions import ReadTimeoutError
  from mock import patch, ANY, MagicMock
  from moto import mock_s3
  from nose.tools import assert_equal, assert_raises
  from streamalert.shared.config import load_config
  from streamalert.shared.lookup_tables.driver_s3 import S3Driver, Compression, S3Adapter
  from streamalert.shared.lookup_tables.drivers_factory import construct_persistence_driver
  from streamalert.shared.lookup_tables.errors import LookupTablesCommitError, LookupTablesInitializationError
  from tests.unit.helpers.aws_mocks import put_mock_s3_object
label_desc: Use image node_id 1 for calling the TestS3Driver obj's underlying member method code with example usage: obj.setup() without return types