Hacked By AnonymousFox
import pytest
from datetime import datetime, timedelta
from hw_cpbackup.s3_util import InteractS3
from test.mock.common import S3Session, S3_MOCKDATA
@pytest.fixture()
def s3_mock(mocker):
_s3_mock = mocker.Mock(spec_set=InteractS3)
_s3_mock.return_value = InteractS3(s3_data=S3_MOCKDATA)
return _s3_mock
@pytest.fixture()
def s3_session():
_s3_session = S3Session
return _s3_session
@pytest.mark.s3_util
def test_s3_bucket_name(s3_mock, s3_session, mocker):
"""Test whether S3 bucket name returns expected value"""
s3_mock.return_value._s3_session = s3_session(exclude='new')
assert s3_mock.return_value.bucket_name == 'shared_backups'
s3_mock.return_value._s3_session = s3_session(exclude='old')
assert s3_mock.return_value.bucket_name == 'shared-backups'
@pytest.mark.s3_util
def test_s3_bucket_exists(s3_mock, s3_session, mocker):
"""Test whether the S3 bucket exists"""
s3_mock.return_value._s3_session = s3_session(exists=True)
assert s3_mock.return_value.bucket_exists
s3_mock.return_value._s3_session = s3_session(exists=True, boto_exception=True)
assert s3_mock.return_value.bucket_exists
s3_mock.return_value._s3_session = s3_session(exists=False)
assert not s3_mock.return_value.bucket_exists
@pytest.mark.s3_util
def test_s3_create_bucket(s3_mock, s3_session, mocker):
"""Test whether S3 bucket is created when expected"""
s3_mock.return_value._s3_session = s3_session(exclude='all', exists=False)
assert not s3_mock.return_value.s3_session.created_bucket
s3_mock.return_value.create_bucket()
assert s3_mock.return_value.s3_session.created_bucket
@pytest.mark.s3_util
def test_storage_disabled(s3_mock, s3_session, mocker):
"""Test whether object storage is disabled"""
s3_mock.return_value._s3_session = s3_session(exists=True, boto_exception=True)
assert s3_mock.return_value.storage_disabled
s3_mock.return_value._s3_session = s3_session(exists=True)
assert not s3_mock.return_value.storage_disabled
@pytest.mark.s3_util
def test_s3_latest_backup(s3_mock, s3_session, mocker):
"""Test whether latest backup returns expected value"""
s3_mock.return_value._s3_session = s3_session(exists=True)
assert max(s3_mock.return_value.timestamps.values()) == datetime.today().replace(
hour=0, minute=0, second=0, microsecond=0)
@pytest.mark.s3_util
def test_s3_oldest_backup(s3_mock, s3_session, mocker):
"""Test whether oldest backup returns expected value"""
s3_mock.return_value._s3_session = s3_session(exists=True)
assert min(s3_mock.return_value.timestamps.values()) == datetime.today().replace(
hour=0, minute=0, second=0, microsecond=0) - timedelta(days=9)
@pytest.mark.s3_util
def test_s3_exceeded_timestamp(s3_mock, s3_session, mocker):
"""Test whether retention is properly enforced"""
s3_mock.return_value._s3_session = s3_session(exists=True)
assert not s3_mock.return_value.exceeded_timestamp
s3_mock.return_value._s3_session = s3_session(exists=True, start_date=4)
assert s3_mock.return_value.exceeded_timestamp
@pytest.mark.s3_util
def test_s3_dates_absent(s3_mock, s3_session, mocker):
"""Test whether retention is properly enforced"""
s3_mock.return_value._s3_session = s3_session(exists=True)
assert not s3_mock.return_value.dates_absent
s3_mock.return_value._s3_session = s3_session(exists=True, start_date=3)
assert s3_mock.return_value.dates_absent
assert len(s3_mock.return_value.dates_absent) == 3
@pytest.mark.s3_util
def test_s3_backup_zero(s3_mock, s3_session, mocker):
"""Test whether zero size backups is properly detected"""
s3_mock.return_value._s3_session = s3_session()
assert not s3_mock.return_value.backup_zero
s3_mock.return_value._s3_session = s3_session(key_size=0)
assert s3_mock.return_value.backup_zero
@pytest.mark.s3_util
def test_s3_backup_today(s3_mock, s3_session, mocker):
"""Test whether todays backup is properly detected"""
s3_mock.return_value._s3_session = s3_session()
assert s3_mock.return_value.backup_today
s3_mock.return_value._s3_session = s3_session(start_date=2)
assert not s3_mock.return_value.backup_today
@pytest.mark.s3_util
def test_s3_enforce_retention(s3_mock, s3_session, mocker):
"""Test whether retention is properly enforced"""
s3 = InteractS3(s3_data=S3_MOCKDATA)
s3._s3_session = s3_session(key_count=50)
assert s3._s3_retention == S3_MOCKDATA['retention']
assert s3.backup_count > s3._s3_retention
# FIXME: update test to supoort testing retention enforcement
Hacked By AnonymousFox1.0, Coded By AnonymousFox