diff --git a/docs/databases/mongo.md b/docs/databases/mongo.md index 8cb8b31fa..7f6423fed 100644 --- a/docs/databases/mongo.md +++ b/docs/databases/mongo.md @@ -11,9 +11,11 @@ None. ```yaml databases: mongo: - host: "my host" # (optional) default "localhost" + host: "my_host" # (optional) default "localhost" port: "12345" # (optional) default "27017" - database: "mydatabase" # (optional) default "opsdroid" + database: "my_database" # (optional) default "opsdroid" + user: "my_user" # (optional) + password: "pwd123!" # (optional) ``` ## Usage diff --git a/opsdroid/database/mongo/__init__.py b/opsdroid/database/mongo/__init__.py index e9012e294..b7b1a92e1 100644 --- a/opsdroid/database/mongo/__init__.py +++ b/opsdroid/database/mongo/__init__.py @@ -7,7 +7,13 @@ from opsdroid.database import Database _LOGGER = logging.getLogger(__name__) -CONFIG_SCHEMA = {"host": str, "port": Any(int, str), "database": str} +CONFIG_SCHEMA = { + "host": str, + "port": Any(int, str), + "database": str, + "user": str, + "password": str, +} class DatabaseMongo(Database): @@ -37,7 +43,14 @@ async def connect(self): host = self.config.get("host", "localhost") port = self.config.get("port", "27017") database = self.config.get("database", "opsdroid") - path = "mongodb://{host}:{port}".format(host=host, port=port) + user = self.config.get("user") + pwd = self.config.get("password") + if user and pwd: + path = "mongodb://{user}:{pwd}@{host}:{port}".format( + user=user, pwd=pwd, host=host, port=port + ) + else: + path = "mongodb://{host}:{port}".format(host=host, port=port) self.client = AsyncIOMotorClient(path) self.database = self.client[database] _LOGGER.info("Connected to MongoDB.") diff --git a/opsdroid/database/mongo/tests/test_mongo.py b/opsdroid/database/mongo/tests/test_mongo.py index a8942aeb9..15c9e62b6 100644 --- a/opsdroid/database/mongo/tests/test_mongo.py +++ b/opsdroid/database/mongo/tests/test_mongo.py @@ -17,7 +17,13 @@ def test_init(database): @pytest.mark.asyncio -@pytest.mark.parametrize("config", [{}]) +@pytest.mark.parametrize( + "config", + [ + {}, + {"database": "test_db", "user": "root", "password": "mongo"}, + ], +) async def test_connect(database): """Test that the mongo database has implemented connect function properly""" try: