hashi-vault-js
Version:
A node.js module to interact with the Hashicorp Vault API.
128 lines (120 loc) • 4.94 kB
JavaScript
//Simple smoke test
// LDAP secret engine
// This test will create a new LDAP group, create a new LDAP user, read the LDAP group, read the LDAP user, update the LDAP group, update the LDAP user, delete the LDAP group, and delete the LDAP user.
// source process.env
// node LDAP-smoke-test.js
import Vault from '../src/Vault.js';
import fs from 'fs';
const ClientCert = process.env.CLIENT_CERT;
const ClientKey = process.env.CLIENT_KEY;
const CACert = process.env.CA_CERT;
const VaultUrl = process.env.VAULT_URL;
const Username = process.env.LDAP_USERNAME;
const Password = process.env.LDAP_PASSWORD;
const Group = process.env.LDAP_GROUP;
const vault = new Vault( {
https: true,
cert: ClientCert,
key: ClientKey,
cacert: CACert,
baseUrl: VaultUrl,
timeout: 3000,
proxy: false
});
let token = null;
let ldapCABundle = null;
try {
ldapCABundle = fs.readFileSync('./ldap-server.pem', 'utf-8');
} catch(error){
console.error('FS error: ', error);
}
const LDAPConfigParams = {
deny_null_bind: true,
discoverdn: false,
groupattr: "cn",
groupdn: "ou=Groups,dc=chatopsknight,dc=com",
groupfilter: "",
insecure_tls: false,
starttls: false,
tls_max_version: "tls12",
tls_min_version: "tls12",
url: "ldaps://ldap.chatopsknight.com:636",
username_as_alias: true,
userattr: "uid",
userdn: "ou=Employees,dc=chatopsknight,dc=com",
certificate: ldapCABundle
};
vault.healthCheck().then(function(data) {
console.log('1> healthCheck output: \n',data);
if (!data.sealed) {
vault.loginWithLdap(Username, Password, null).then(function(data){
console.log('2> loginWithLdap output: \n',data);
token = data.client_token;
vault.setLdapConfig(token, LDAPConfigParams, null).then(function(data){
console.log('3a> setLdapConfig output: \n',data);
vault.readLdapConfig(token, null).then(function(data){
console.log('4> readLdapConfig output: \n',data);
}).catch(function(configError){
console.error('4> readLdapConfig error: \n',configError);
});
}).catch(function(configError){
console.error('3a> setLdapConfig error: \n',configError);
});
vault.readLdapGroup(token, Group).then(function(data){
console.log('3b> readLdapGroup output: \n',data);
}).catch(function(readError){
console.error('3b> readLdapGroup error: \n',readError);
});
vault.listLdapGroups(token).then(function(data){
console.log('3c> listLdapGroups output: \n',data);
}).catch(function(listError){
console.error('3c> listLdapGroups error: \n',listError);
});
vault.readLdapUser(token, Username).then(function(data){
console.log('3d> readLdapUser output: \n',data);
}).catch(function(readError){
console.error('3d> readLdapUser error: \n',readError);
});
vault.listLdapUsers(token).then(function(data){
console.log('3e> listLdapUsers output: \n',data);
}).catch(function(listError){
console.error('3e> listLdapUsers error: \n',listError);
});
vault.createLdapGroup(token, 'engineers', Group).then(function(data){
console.log('3f> createUpdateLdapGroup output: \n',data);
vault.updateLdapGroup(token, 'engineers', 'admins2').then(function(data){
console.log('4> updateLdapGroup output: \n',data);
vault.deleteLdapGroup(token, 'engineers').then(function(data){
console.log('5> deleteLdapGroup output: \n',data);
}).catch(function(deleteError){
console.error('5> deleteLdapGroup error: \n',deleteError);
});
}).catch(function(updateError){
console.error('4> updateLdapGroup error: \n',updateError);
});
}).catch(function(createError){
console.error('3f> createLdapGroup error: \n',createError);
});
vault.createLdapUser(token, 'rod.anami', null, Group).then(function(data){
console.log('3g> createLdapUser output: \n',data);
vault.updateLdapUser(token, 'rod.anami', 'fake-policy', 'admins2').then(function(data){
console.log('4> updateLdapUser output: \n',data);
vault.deleteLdapUser(token, 'rod.anami').then(function(data){
console.log('5> deleteLdapUser output: \n',data);
}).catch(function(deleteError){
console.error('5> deleteLdapUser error: \n',deleteError);
});
}).catch(function(updateError){
console.error('4> updateLdapUser error: \n',updateError);
});
}).catch(function(createError){
console.error('3g> createLdapUser error: \n',createError);
});
}).catch(function(loginError){
console.error('2> loginWithLdap error: \n',loginError);
console.error('2> loginWithLdap error: \n',loginError.response.data);
});
}
}).catch(function(healthError){
console.error('1> healthCheck error: \n',healthError);
});