2025-01-21 16:33:39 +01:00
|
|
|
# This test starts mongodb and runs a query using mongo shell
|
|
|
|
{ config, lib, ... }:
|
2025-01-21 16:28:54 +01:00
|
|
|
let
|
2025-01-21 16:33:39 +01:00
|
|
|
# required for test execution on darwin
|
|
|
|
pkgs = config.node.pkgs;
|
2025-01-21 16:28:54 +01:00
|
|
|
testQuery = pkgs.writeScript "nixtest.js" ''
|
2025-01-21 16:33:39 +01:00
|
|
|
db.greetings.insertOne({ "greeting": "hello" });
|
2025-01-21 16:28:54 +01:00
|
|
|
print(db.greetings.findOne().greeting);
|
|
|
|
'';
|
2025-01-21 16:33:39 +01:00
|
|
|
mongoshExe = lib.getExe pkgs.mongosh;
|
2025-01-21 16:28:54 +01:00
|
|
|
in
|
|
|
|
{
|
|
|
|
name = "mongodb";
|
2025-01-21 16:33:39 +01:00
|
|
|
meta.maintainers = with pkgs.lib.maintainers; [
|
|
|
|
bluescreen303
|
|
|
|
offline
|
|
|
|
phile314
|
|
|
|
niklaskorz
|
|
|
|
];
|
2019-08-04 16:25:56 +10:00
|
|
|
|
2025-01-21 16:33:39 +01:00
|
|
|
nodes.mongodb = {
|
|
|
|
services.mongodb.enable = true;
|
2025-01-21 16:28:54 +01:00
|
|
|
};
|
2016-09-13 16:38:45 +01:00
|
|
|
|
2025-01-21 16:33:39 +01:00
|
|
|
testScript = ''
|
|
|
|
start_all()
|
|
|
|
|
|
|
|
with subtest("start mongodb"):
|
|
|
|
mongodb.wait_for_unit("mongodb.service")
|
|
|
|
mongodb.wait_for_open_port(27017)
|
|
|
|
|
|
|
|
with subtest("insert and find a document"):
|
|
|
|
result = mongodb.succeed("${mongoshExe} ${testQuery}")
|
|
|
|
print("Test output:", result)
|
|
|
|
assert result.strip() == "hello"
|
|
|
|
'';
|
2025-01-21 16:28:54 +01:00
|
|
|
}
|