def test_database_merge_with_same_database_configured(self): """test with same database version already configured""" base = { "postgresql": [{ "release": "9.6", "databases": [{ "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", }], }] } database = {"engine": "postgresql", "release": "9.6"} expected = { "postgresql": [{ "release": "9.6", "databases": [{ "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", }], }] } self.assertEqual( merge_with_database(base, database, "edxapp", "eugene", { "name": "development", "code": "d" }), expected, )
def test_database_merge_with_no_existing_databases(self, random_password_mock): """Test when no database is already configured""" base = {} database = {"engine": "mongodb", "release": "3.2"} expected = { "mongodb": [{ "release": "3.2", "databases": [{ "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", }], }] } self.assertEqual( merge_with_database(base, database, "edxapp", "eugene", { "name": "development", "code": "d" }), expected, )
def test_database_merge_with_existing_databases_different( self, random_password_mock ): """Test with databases already configured but not the same one""" base = { "postgresql": [ { "release": "9.6", "databases": [ { "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", } ], } ] } database = {"engine": "mongodb", "release": "3.2"} expected = { "postgresql": [ { "release": "9.6", "databases": [ { "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", } ], } ], "mongodb": [ { "release": "3.2", "databases": [ { "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", } ], } ], } self.assertEqual( merge_with_database( base, database, "edxapp", "eugene", {"name": "development", "code": "d"} ), expected, )
def test_database_merge_with_same_database_and_different_release( self, random_password_mock ): """Test with an existing engine configured but not the same release""" base = { "postgresql": [ { "release": "9.6", "databases": [ { "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", } ], } ] } database = {"engine": "postgresql", "release": "10.0"} expected = { "postgresql": [ { "release": "9.6", "databases": [ { "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", } ], }, { "release": "10.0", "databases": [ { "application": "edxapp", "name": "d_eugene_edxapp", "password": "******", "user": "******", } ], }, ] } self.assertEqual( merge_with_database( base, database, "edxapp", "eugene", {"name": "development", "code": "d"} ), expected, )
def test_database_merge_with_other_environments(self, random_password_mock): """Merge database in production various environments""" environments = ( # (environment, env_code) environment and its first letter as environment code ("production", "p"), ("staging", "s"), ("development", "d"), ("preprod", "t"), ("ci", "c"), ("feature", "f"), ("random", "a"), ) for environment, env_code in environments: base = {} database = {"engine": "postgresql", "release": "10.0"} expected = { "postgresql": [{ "release": "10.0", "databases": [{ "application": "edxapp", "name": env_code + "_eugene_edxapp", "password": "******", "user": env_code + "_eugene_edxapp", }], }] } self.assertEqual( merge_with_database( base, database, "edxapp", "eugene", { "name": environment, "code": env_code }, ), expected, )