const fetch = require("node-fetch"); const Client = require("./index"); let client; beforeAll(async () => { const pass = process.env.PASSWORD; const resp = await fetch("https://database-test-jwt.kochman.repl.co", { headers: { Authorization: "Basic " + btoa("test:" + pass), }, }); const url = await resp.text(); client = new Client(url); await client.empty(); }); afterEach(async () => { await client.empty(); }); test("create a client with a key", async () => { expect(client).toBeTruthy(); expect(typeof client.key).toBe("string"); }); test("sets a value", async () => { expect(await client.set("key", "value")).toEqual(client); expect(await client.setAll({ key: "value", second: "secondThing" })).toEqual( client ); }); test("list keys", async () => { await client.setAll({ key: "value", second: "secondThing", }); expect(await client.list()).toEqual(["key", "second"]); }); test("gets a value", async () => { await client.setAll({ key: "value", }); expect(await client.getAll()).toEqual({ key: "value" }); }); test("delete a value", async () => { await client.setAll({ key: "value", deleteThis: "please", somethingElse: "in delete multiple", andAnother: "again same thing", }); expect(await client.delete("deleteThis")).toEqual(client); expect(await client.deleteMultiple("somethingElse", "andAnother")).toEqual( client ); expect(await client.list()).toEqual(["key"]); expect(await client.empty()).toEqual(client); expect(await client.list()).toEqual([]); }); test("list keys with newline", async () => { await client.setAll({ "key\nwit": "first", keywidout: "second", }); expect(await client.list()).toEqual(["keywidout", "key\nwit"]); }); test("ensure that we escape values when setting", async () => { expect(await client.set("a", "1;b=2")).toEqual(client); expect(await client.list()).toEqual(["a"]) expect(await client.get("a")).toEqual("1;b=2") });