Esempio n. 1
0
  test('version 1: nested paths creation maintains ability to navigate the tree', async function(assert) {
    let enginePath = `kv-${new Date().getTime()}`;
    let secretPath = '1/2/3/4';
    // mount version 1 engine
    await mountSecrets.visit();
    await mountSecrets.selectType('kv');
    await mountSecrets
      .next()
      .path(enginePath)
      .version(1)
      .submit();
    await listPage.create();
    await editPage.createSecret(secretPath, 'foo', 'bar');

    // setup an ancestor for when we delete
    await listPage.visitRoot({ backend: enginePath });
    await listPage.secrets.filterBy('text', '1/')[0].click();
    await listPage.create();
    await editPage.createSecret('1/2', 'foo', 'bar');

    // lol we have to do this because ember-cli-page-object doesn't like *'s in visitable
    await listPage.visitRoot({ backend: enginePath });
    await listPage.secrets.filterBy('text', '1/')[0].click();
    await listPage.secrets.filterBy('text', '2/')[0].click();
    await listPage.secrets.filterBy('text', '3/')[0].click();
    await listPage.create();

    await editPage.createSecret(secretPath + 'a', 'foo', 'bar');
    await listPage.visitRoot({ backend: enginePath });
    await listPage.secrets.filterBy('text', '1/')[0].click();
    await listPage.secrets.filterBy('text', '2/')[0].click();
    let secretLink = listPage.secrets.filterBy('text', '3/')[0];
    assert.ok(secretLink, 'link to the 3/ branch displays properly');

    await listPage.secrets.filterBy('text', '3/')[0].click();
    await listPage.secrets.objectAt(0).menuToggle();
    await settled();
    await listPage.delete();
    await listPage.confirmDelete();
    await settled();
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list');
    assert.equal(currentURL(), `/vault/secrets/${enginePath}/list/1/2/3/`, 'remains on the page');

    await listPage.secrets.objectAt(0).menuToggle();
    await listPage.delete();
    await listPage.confirmDelete();
    await settled();
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list');
    assert.equal(
      currentURL(),
      `/vault/secrets/${enginePath}/list/1/`,
      'navigates to the ancestor created earlier'
    );
  });
Esempio n. 2
0
  test('it creates a role and redirects', async function(assert) {
    const path = await mountAndNav(assert);
    await editPage.createRole('role', 'example.com');
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.show', 'redirects to the show page');
    assert.ok(showPage.editIsPresent, 'shows the edit button');
    assert.ok(showPage.generateCertIsPresent, 'shows the generate button');
    assert.ok(showPage.signCertIsPresent, 'shows the sign button');

    await showPage.visit({ backend: path, id: 'role' });
    await showPage.generateCert();
    assert.equal(
      currentRouteName(),
      'vault.cluster.secrets.backend.credentials',
      'navs to the credentials page'
    );

    await showPage.visit({ backend: path, id: 'role' });
    await showPage.signCert();
    assert.equal(
      currentRouteName(),
      'vault.cluster.secrets.backend.credentials',
      'navs to the credentials page'
    );

    await listPage.visitRoot({ backend: path });
    assert.equal(listPage.secrets.length, 1, 'shows role in the list');
    let secret = listPage.secrets.objectAt(0);
    await secret.menuToggle();
    assert.ok(listPage.menuItems.length > 0, 'shows links in the menu');
  });
Esempio n. 3
0
 test('it redirects to the path ending in / for list pages', async function(assert) {
   const path = `foo/bar/kv-path-${new Date().getTime()}`;
   await listPage.visitRoot({ backend: 'secret' });
   await listPage.create();
   await editPage.createSecret(path, 'foo', 'bar');
   // use visit helper here because ids with / in them get encoded
   await visit('/vault/secrets/secret/list/foo/bar');
   assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list');
   assert.ok(currentURL().endsWith('/'), 'redirects to the path ending in a slash');
 });
Esempio n. 4
0
  test('it creates and can view a secret with the cubbyhole backend', async function(assert) {
    const kvPath = `cubbyhole-kv-${new Date().getTime()}`;
    await listPage.visitRoot({ backend: 'cubbyhole' });
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list-root', 'navigates to the list page');

    await listPage.create();
    await editPage.createSecret(kvPath, 'foo', 'bar');
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.show', 'redirects to the show page');
    assert.ok(showPage.editIsPresent, 'shows the edit button');
  });
Esempio n. 5
0
  test('it views a cert', async function(assert) {
    const path = await setup(assert);
    await generatePage.issueCert('foo');
    await listPage.visitRoot({ backend: path, tab: 'certs' });
    assert.ok(listPage.secrets.length > 0, 'lists certs');

    await listPage.secrets.objectAt(0).click();
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.show', 'navigates to the show page');
    assert.ok(showPage.hasCert, 'shows the cert');
  });
Esempio n. 6
0
  test('it creates a secret and redirects', async function(assert) {
    const path = `kv-path-${new Date().getTime()}`;
    await listPage.visitRoot({ backend: 'secret' });
    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list-root', 'navigates to the list page');

    await listPage.create();
    assert.ok(editPage.hasMetadataFields, 'shows the metadata form');
    await editPage.createSecret(path, 'foo', 'bar');

    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.show', 'redirects to the show page');
    assert.ok(showPage.editIsPresent, 'shows the edit button');
  });
Esempio n. 7
0
 test('creating a secret with a single or double quote works properly', async function(assert) {
   await consoleComponent.runCommands('write sys/mounts/kv type=kv');
   let paths = ["'some", '"some'];
   for (let path of paths) {
     await listPage.visitRoot({ backend: 'kv' });
     await listPage.create();
     await editPage.createSecret(`${path}/2`, 'foo', 'bar');
     await listPage.visit({ backend: 'kv', id: path });
     assert.ok(listPage.secrets.filterBy('text', '2')[0], `${path}: secret is displayed properly`);
     await listPage.secrets.filterBy('text', '2')[0].click();
     assert.equal(
       currentRouteName(),
       'vault.cluster.secrets.backend.show',
       `${path}: show page renders correctly`
     );
   }
 });
Esempio n. 8
0
  test('it can edit via the JSON input', async function(assert) {
    let content = JSON.stringify({ foo: 'fa', bar: 'boo' });
    const path = `kv-path-${new Date().getTime()}`;
    await listPage.visitRoot({ backend: 'secret' });
    await listPage.create();
    await editPage.path(path).toggleJSON();
    await editPage.editor.fillIn(this, content);
    await editPage.save();

    assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.show', 'redirects to the show page');
    assert.ok(showPage.editIsPresent, 'shows the edit button');
    assert.equal(
      showPage.editor.content(this),
      JSON.stringify({ bar: 'boo', foo: 'fa' }, null, 2),
      'saves the content'
    );
  });
Esempio n. 9
0
let writeSecret = async function(backend, path, key, val) {
  await listPage.visitRoot({ backend });
  await listPage.create();
  return editPage.createSecret(path, key, val);
};