class TestContainer(postgres.PostgresqlContainer): image = docker.Image('image:tag') pg_conf = 'postgresql.conf' pg_hba = 'pg_hba.conf' pg_data = '/data'
def test_migrate(self): cases = dict( new_migrations=dict( expected_commands=[ mock.call('docker run --rm --tty --interactive image:tag python manage.py migrate --noinput', quiet=False), ], kwargs=dict(), container_class_vars=dict(name='name'), ), customized=dict( expected_commands=[ mock.call('docker run --rm --tty --interactive registry/image:foo python manage.py migrate --noinput', quiet=False), ], kwargs=dict(tag='foo', registry='registry'), container_class_vars=dict(name='name'), ), default_with_customized_container=dict( expected_commands=[ mock.call('docker run --user user --env env --volume volumes --link links --add-host hosts --net network --stop-signal stop_signal --rm --tty --interactive image:tag python manage.py migrate --noinput', quiet=False), ], kwargs=dict(), container_class_vars=dict( user='******', env='env', volumes='volumes', links='links', hosts='hosts', network='network', cmd='cmd', stop_signal='stop_signal', stop_timeout='stop_timeout', ports='ports', restart_policy='restart_policy', ), ), ) for case, data in cases.items(): with self.subTest(case=case): with mock.patch.object(fabricio, 'run') as run: TestContainer = type( 'TestContainer', (DjangoContainer, ), dict( dict(image=docker.Image('image:tag')), **data['container_class_vars'] ), ) container = TestContainer('test') with fab.settings(fab.hide('everything')): container.migrate(**data['kwargs']) self.assertListEqual( data['expected_commands'], run.mock_calls, )
def test_str_version(self): cases = dict( empty_options_list=dict( options=utils.OrderedDict(), expected_str_version='', ), with_underscore=dict( options=utils.OrderedDict(foo_baz='bar'), expected_str_version='--foo_baz=bar', ), multiword=dict( options=utils.OrderedDict(foo='bar baz'), expected_str_version="--foo='bar baz'", ), empty=dict( options=utils.OrderedDict(foo=''), expected_str_version="--foo=''", ), str=dict( options=utils.OrderedDict(foo='bar'), expected_str_version='--foo=bar', ), unicode=dict( options=utils.OrderedDict(foo=u'привет'), expected_str_version=u"--foo='привет'", ), integer=dict( options=utils.OrderedDict(foo=42), expected_str_version='--foo=42', ), integer_zero=dict( options=utils.OrderedDict(foo=0), expected_str_version='--foo=0', ), integer_one=dict( options=utils.OrderedDict(foo=1), expected_str_version='--foo=1', ), integer_minus_one=dict( options=utils.OrderedDict(foo=-1), expected_str_version='--foo=-1', ), image=dict( options=utils.OrderedDict(image=docker.Image('image:tag')), expected_str_version='--image=image:tag', ), triple_length=dict( options=utils.OrderedDict([ ('foo', 'foo'), ('bar', 'bar'), ('baz', 'baz'), ]), expected_str_version='--foo=foo --bar=bar --baz=baz', ), multi_value_empty=dict( options=utils.OrderedDict(foo=[]), expected_str_version='', ), multi_value=dict( options=utils.OrderedDict(foo=['bar', 'baz']), expected_str_version='--foo=bar --foo=baz', ), multi_value_integer=dict( options=utils.OrderedDict(foo=[42, 43]), expected_str_version='--foo=42 --foo=43', ), boolean_values=dict( options=utils.OrderedDict(foo=True, bar=False), expected_str_version='--foo', ), mix=dict( options=utils.OrderedDict([ ('foo', 'foo'), ('bar', True), ('baz', ['1', 'a']), ]), expected_str_version='--foo=foo --bar --baz=1 --baz=a', ), ) for case, params in cases.items(): with self.subTest(case=case): options = utils.Options(params['options']) expected_str_version = params['expected_str_version'] self.assertEqual(expected_str_version, six.text_type(options))
def test_str_version(self): cases = dict( empty_options_list=dict( options=utils.OrderedDict(), expected_str_version='', ), with_underscore=dict( options=utils.OrderedDict(foo_baz='bar'), expected_str_version='--foo_baz bar', ), multiword=dict( options=utils.OrderedDict(foo='bar baz'), expected_str_version='--foo "bar baz"', ), empty=dict( options=utils.OrderedDict(foo=''), expected_str_version='--foo ""', ), with_single_quotes=dict( options=utils.OrderedDict(foo="'bar'"), expected_str_version='--foo "\'bar\'"', ), with_double_quotes=dict( options=utils.OrderedDict(foo='"bar"'), expected_str_version='--foo "\\"bar\\""', ), with_quotes_and_spaces=dict( options=utils.OrderedDict(foo='"bar" \'baz\''), expected_str_version='--foo "\\"bar\\" \'baz\'"', ), str=dict( options=utils.OrderedDict(foo='bar'), expected_str_version='--foo bar', ), unicode=dict( options=utils.OrderedDict(foo=u'привет'), expected_str_version=u'--foo привет', ), integer=dict( options=utils.OrderedDict(foo=42), expected_str_version='--foo 42', ), image=dict( options=utils.OrderedDict(image=docker.Image('image:tag')), expected_str_version='--image image:tag', ), triple_length=dict( options=utils.OrderedDict([ ('foo', 'foo'), ('bar', 'bar'), ('baz', 'baz'), ]), expected_str_version='--foo foo --bar bar --baz baz', ), multi_value=dict( options=utils.OrderedDict(foo=['bar', 'baz']), expected_str_version='--foo bar --foo baz', ), multi_value_integer=dict( options=utils.OrderedDict(foo=[42, 43]), expected_str_version='--foo 42 --foo 43', ), boolean_values=dict( options=utils.OrderedDict(foo=True, bar=False), expected_str_version='--foo', ), mix=dict( options=utils.OrderedDict([ ('foo', 'foo'), ('bar', True), ('baz', ['1', 'a']), ]), expected_str_version='--foo foo --bar --baz 1 --baz a', ), ) for case, params in cases.items(): with self.subTest(case=case): options = utils.Options(params['options']) expected_str_version = params['expected_str_version'] self.assertEqual(expected_str_version, six.text_type(options))
class TestContainer(docker.Container): image = docker.Image('test')