import cockpit from "cockpit";
import QUnit from "qunit-tests";
QUnit.test("load user info", async assert => {
const dbus = cockpit.dbus(null, { bus: "internal" });
const [user] = await dbus.call("/user", "org.freedesktop.DBus.Properties",
"GetAll", ["cockpit.User"], { type: "s" });
assert.ok(user.Name !== undefined, "has Name");
assert.equal(user.Name.t, "s", "string Name");
assert.ok(user.Full !== undefined, "has Full name");
assert.equal(user.Full.t, "s", "string Full");
assert.ok(user.Shell !== undefined, "has Shell");
assert.equal(user.Home.t, "s", "type Home");
assert.equal(user.Home.v.indexOf("/"), 0, "Home starts with slash");
assert.equal(user.Groups.t, "as", "type Groups");
});
QUnit.test("user object", async assert => {
const user = await cockpit.user();
assert.equal(typeof user.name, "string", "user name");
assert.equal(typeof user.full_name, "string", "user full name");
assert.equal(typeof user.shell, "string", "user shell");
assert.equal(typeof user.home, "string", "user home");
assert.equal(typeof user.id, "number", "user id");
assert.equal(typeof user.gid, "number", "group id");
assert.ok(Array.isArray(user.groups), "user groups");
});
QUnit.test("user environment", async assert => {
const data = await cockpit.spawn(["/bin/sh", "-c", "echo $USER~$SHELL~$HOME"]);
const parts = data.split("~");
assert.ok(parts[0].length > 0, "valid $USER");
assert.ok(parts[1].length > 0, "valid $HOME");
assert.equal(parts[1].indexOf("/"), 0, "$HOME starts with slash");
assert.ok(parts[2].length > 0, "valid $SHELL");
assert.equal(parts[1].indexOf("/"), 0, "$SHELL starts with slash");
});
QUnit.start();