Skip to content

Commit

Permalink
Implemented basic Test Specs and Vault
Browse files Browse the repository at this point in the history
  • Loading branch information
muddykat-tech committed Apr 28, 2024
1 parent 9ab5766 commit 5ff6808
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 28 deletions.
11 changes: 0 additions & 11 deletions .project

This file was deleted.

31 changes: 14 additions & 17 deletions source/importers/KeeperSecurityImporter.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,25 +57,22 @@ class KeeperSecurityImporter {
folders[folderIndex]
);

// Section untested due to an odd issue with createEntry not instancing correctly?
const entry = currentGroup.createEntry(
record.title
);
entry.setProperty(
"username",
record.login == null ? "" : record.login
);
entry.setProperty(
"password",
record.password == null ? "" : record.password
);
entry.setProperty(
"URL",
record.login_url == null ? "" : record.login_url
);

groups[folders[folderIndex]] = currentGroup;
}
// Section untested due to an odd issue with createEntry not instancing correctly?
const entry = currentGroup.createEntry(record.title);
entry.setProperty(
"username",
record.login == null ? "" : record.login
);
entry.setProperty(
"password",
record.password == null ? "" : record.password
);
entry.setProperty(
"URL",
record.login_url == null ? "" : record.login_url
);
}
}
});
Expand Down
57 changes: 57 additions & 0 deletions test/resources/keeper.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"shared_folders": [],
"records": [
{
"title": "Username Test",
"$type": "login",
"schema": [
"$login::1",
"$password::1",
"$url::1",
"$fileRef::1",
"$oneTimeCode::1"
],
"login": "username2",
"password": "password2",
"login_url": "https://example.org/"
},
{
"title": "Folder Test",
"$type": "login",
"schema": [
"$login::1",
"$password::1",
"$url::1",
"$fileRef::1",
"$oneTimeCode::1"
],
"login": "username1",
"password": "password1",
"login_url": "https://example.org/",
"folders": [
{
"folder": "Foo \\Bar "
}
]
},
{
"title": "Sub Folder Entry Test",
"$type": "login",
"schema": [
"$login::1",
"$password::1",
"$url::1",
"$fileRef::1",
"$oneTimeCode::1"
],
"login": "username3",
"password": "password3",
"login_url": "https://example.org/",
"folders": [
{
"folder": "Foo \\Bar "
}
]
}
]
}
47 changes: 47 additions & 0 deletions test/specs/importers/KeeperSecurityImporter.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const path = require("path");
const KeeperSecurityImporter = require("../../../dist/importers/KeeperSecurityImporter.js");
const { Entry, Group, Vault } = require("buttercup");

const EXAMPLE_VAULT = path.resolve(__dirname, "../../resources/keeper.json");

describe("KeeperSecurityImporter", function () {
beforeEach(function () {
return KeeperSecurityImporter.loadFromFile(EXAMPLE_VAULT)
.then((importer) => importer.export())
.then((vault) => {
this.vault = vault;
});
});

it("creates a vault instance", function () {
expect(this.vault).to.be.an.instanceOf(Vault);
});

it("contains expected groups", function () {
// I'd prefer to use the function 'getGroups' however, this seems to be missing groups in the _groups structure?
const groups = this.vault._groups.map((g) => g.getTitle());
expect(groups).to.have.lengthOf(3);
expect(groups).to.contain("Foo");
expect(groups).to.contain("Bar");
});

it("imports login properties", function () {
const [entry] = this.vault.findEntriesByProperty(
"title",
"Item with login"
);
expect(entry).to.be.an.instanceOf(Entry);
expect(entry.getProperty("username")).to.equal("username1");
expect(entry.getProperty("password")).to.equal("password1");
});

it("imports URLs", function () {
const [entry] = this.vault.findEntriesByProperty(
"title",
"Item with login uri"
);
expect(entry).to.be.an.instanceOf(Entry);
expect(entry.getProperty("URL")).to.equal("https://example.org/");
// @todo should be a website
});
});

0 comments on commit 5ff6808

Please sign in to comment.