ordigi/old_tests/plugins/googlephotos/googlephotos_test.py

190 lines
6.1 KiB
Python

# Project imports
import mock
import os
import sys
from tempfile import gettempdir
sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
import helper
from elodie.config import load_config
from elodie.plugins.googlephotos.googlephotos import GooglePhotos
from elodie.media.audio import Audio
from elodie.media.photo import Photo
# Globals to simplify mocking configs
auth_file = helper.get_file('plugins/googlephotos/auth_file.json')
secrets_file = helper.get_file('plugins/googlephotos/secrets_file.json')
config_string = """
[Plugins]
plugins=GooglePhotos
[PluginGooglePhotos]
auth_file={}
secrets_file={}
"""
config_string_fmt = config_string.format(
auth_file,
secrets_file
)
setup_module = helper.setup_module
teardown_module = helper.teardown_module
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-set-session' % gettempdir())
def test_googlephotos_set_session():
with open('%s/config.ini-googlephotos-set-session' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
gp = GooglePhotos()
if hasattr(load_config, 'config'):
del load_config.config
assert gp.session is None, gp.session
gp.set_session()
assert gp.session is not None, gp.session
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-after-supported' % gettempdir())
def test_googlephotos_after_supported():
with open('%s/config.ini-googlephotos-after-supported' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
sample_photo = Photo(helper.get_file('plain.jpg'))
sample_metadata = sample_photo.get_metadata()
sample_metadata['original_name'] = 'foobar'
final_file_path = helper.get_file('plain.jpg')
gp = GooglePhotos()
gp.after('', '', final_file_path, sample_metadata)
db_row = gp.db.get(final_file_path)
if hasattr(load_config, 'config'):
del load_config.config
assert db_row == 'foobar', db_row
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-after-unsupported' % gettempdir())
def test_googlephotos_after_unsupported():
with open('%s/config.ini-googlephotos-after-unsupported' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
final_file_path = helper.get_file('audio.m4a')
sample_photo = Audio(final_file_path)
sample_metadata = sample_photo.get_metadata()
sample_metadata['original_name'] = 'foobar'
gp = GooglePhotos()
gp.after('', '', final_file_path, sample_metadata)
db_row = gp.db.get(final_file_path)
if hasattr(load_config, 'config'):
del load_config.config
assert db_row == None, db_row
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-upload' % gettempdir())
def test_googlephotos_upload():
with open('%s/config.ini-googlephotos-upload' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
gp = GooglePhotos()
if hasattr(load_config, 'config'):
del load_config.config
gp.set_session()
status = gp.upload(helper.get_file('plain.jpg'))
assert status is not None, status
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-upload-session-fail' % gettempdir())
def test_googlephotos_upload_session_fail():
with open('%s/config.ini-googlephotos-upload-session-fail' % gettempdir(), 'w') as f:
f.write(config_string)
if hasattr(load_config, 'config'):
del load_config.config
gp = GooglePhotos()
if hasattr(load_config, 'config'):
del load_config.config
gp.set_session()
status = gp.upload(helper.get_file('plain.jpg'))
assert status is None, status
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-upload-invalid-empty' % gettempdir())
def test_googlephotos_upload_invalid_empty():
with open('%s/config.ini-googlephotos-upload-invalid-empty' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
gp = GooglePhotos()
if hasattr(load_config, 'config'):
del load_config.config
gp.set_session()
status = gp.upload(helper.get_file('invalid.jpg'))
assert status is None, status
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-upload-dne' % gettempdir())
def test_googlephotos_upload_dne():
with open('%s/config.ini-googlephotos-upload-dne' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
gp = GooglePhotos()
if hasattr(load_config, 'config'):
del load_config.config
gp.set_session()
status = gp.upload('/file/does/not/exist')
assert status is None, status
@mock.patch('elodie.constants.CONFIG_FILE', '%s/config.ini-googlephotos-batch' % gettempdir())
def test_googlephotos_batch():
with open('%s/config.ini-googlephotos-batch' % gettempdir(), 'w') as f:
f.write(config_string_fmt)
if hasattr(load_config, 'config'):
del load_config.config
sample_photo = Photo(helper.get_file('plain.jpg'))
sample_metadata = sample_photo.get_metadata()
sample_metadata['original_name'] = 'foobar'
final_file_path = helper.get_file('plain.jpg')
gp = GooglePhotos()
gp.after('', '', final_file_path, sample_metadata)
db_row = gp.db.get(final_file_path)
assert db_row == 'foobar', db_row
status, count = gp.batch()
db_row_after = gp.db.get(final_file_path)
assert status == True, status
assert count == 1, count
assert db_row_after is None, db_row_after
if hasattr(load_config, 'config'):
del load_config.config
gp.set_session()
status = gp.upload(helper.get_file('invalid.jpg'))
assert status is None, status