+ remove deprecated stuff
This commit is contained in:
parent
ee8f6d8e65
commit
3ea5189ad8
2 changed files with 0 additions and 181 deletions
|
|
@ -1,14 +0,0 @@
|
||||||
# Testing module proposals
|
|
||||||
|
|
||||||
- Basic API calls
|
|
||||||
- Login/logout
|
|
||||||
- kv IO test module
|
|
||||||
- Token
|
|
||||||
- Lookup
|
|
||||||
- Generation
|
|
||||||
|
|
||||||
(- TLS module)
|
|
||||||
(- Auth module)
|
|
||||||
|
|
||||||
|
|
||||||
==> Nur KvV2 testen
|
|
||||||
|
|
@ -1,167 +0,0 @@
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
use base::create_mock_meta;
|
|
||||||
#[test]
|
|
||||||
fn test_update_secret() {
|
|
||||||
let db: sled::Db = sled::open("sled_db").unwrap();
|
|
||||||
update_secret(&db, "foo", TempSecret{version: -99, content: "cool".to_string()});
|
|
||||||
}
|
|
||||||
#[test]
|
|
||||||
fn test_get_secret() {
|
|
||||||
let db: sled::Db = sled::open("sled_db").unwrap();
|
|
||||||
get_secret(&db, "foo");
|
|
||||||
}
|
|
||||||
#[test]
|
|
||||||
fn test_delete_secret(){
|
|
||||||
let db: sled::Db = sled::open("sled_db").unwrap();
|
|
||||||
delete_secret(&db, "foo");
|
|
||||||
}
|
|
||||||
#[test]
|
|
||||||
fn test_meta(){
|
|
||||||
let db: sled::Db = sled::open("sled_db").unwrap();
|
|
||||||
println!("writing metadata:");
|
|
||||||
update_secret_meta(&db, "metatest", create_mock_meta());
|
|
||||||
println!("getting metadata:");
|
|
||||||
get_secretmeta(&db, "metatest");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
use sled::Db;
|
|
||||||
use base::{deserialize_metadata_struct, deserialize_secret_struct, serialize_metadata_json, serialize_secret_json, SecretMeta, TempSecret};
|
|
||||||
|
|
||||||
/// [TODO] Currently no proper versioning
|
|
||||||
/// inserts a secret. If there was already a secret in the given path, the version is incremented
|
|
||||||
fn update_secret(db: &Db, path: &str, mut secret: TempSecret) {
|
|
||||||
match get_secret(db, path) {
|
|
||||||
Some(old_secret) => {
|
|
||||||
// case secret found. TODO save it somewhere for versioning
|
|
||||||
secret.version = old_secret.version + 1;
|
|
||||||
#[cfg(test)]
|
|
||||||
print!("something was found. new version {} \n", secret.version)
|
|
||||||
}
|
|
||||||
None => {
|
|
||||||
// case new secret
|
|
||||||
secret.version = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if let secret_json = serialize_secret_json(&secret) {
|
|
||||||
// let _res = db.insert(path, secret_json); // maybe this can be handled cleaner
|
|
||||||
match serialize_secret_json(&secret) {
|
|
||||||
Ok(secret_json) => {
|
|
||||||
#[cfg(test)]
|
|
||||||
println!("String: {:?}", secret_json.clone());
|
|
||||||
let as_ivec = sled::IVec::from(secret_json.into_bytes()); // maybe outsource this in a fn later
|
|
||||||
#[cfg(test)]
|
|
||||||
println!("ivec: {:?}", as_ivec);
|
|
||||||
match db.insert(path, as_ivec) {
|
|
||||||
Ok(_) => println!("Secret inserted"),
|
|
||||||
Err(e) => eprintln!("Failed to insert secret: {}", e),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Err(e) => eprintln!("Failed to serialize secret: {}", e),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// !TODO eliminate redundancy: refactor get and update functions to accept generic types!
|
|
||||||
|
|
||||||
// read and return a secret from the DB
|
|
||||||
//if there is no secret, return None
|
|
||||||
fn get_secret(db: &Db, path: &str) -> Option<TempSecret>{
|
|
||||||
let raw_secret;
|
|
||||||
match db.get(path) {
|
|
||||||
Ok(Some(ivec)) => {
|
|
||||||
raw_secret = ivec;
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
eprintln!("Error on retrieving secret: {}", e);
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
Ok(None) => {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// outsource this in a fn later. TODO maybe deal with unwrap
|
|
||||||
let as_str = String::from_utf8(raw_secret.to_vec()).unwrap();
|
|
||||||
match deserialize_secret_struct(&as_str) {
|
|
||||||
Ok(secret) => {
|
|
||||||
#[cfg(test)]
|
|
||||||
println!("got some secret: {:?}", secret);
|
|
||||||
return Some(secret);
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
eprintln!("error on secret deserialization: {}", e);
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TODO write abstract get_something fn
|
|
||||||
// https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2#read-secret-metadata
|
|
||||||
fn get_secretmeta(db: &Db, path: &str) -> Option<SecretMeta>{
|
|
||||||
let raw_metadata;
|
|
||||||
match db.get(path) {
|
|
||||||
Ok(Some(ivec)) => {
|
|
||||||
raw_metadata = ivec;
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
eprintln!("Error on retrieving metadata: {}", e);
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
Ok(None) => {
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let as_str = String::from_utf8(raw_metadata.to_vec()).unwrap();
|
|
||||||
match deserialize_metadata_struct(&as_str) {
|
|
||||||
Ok(meta) => {
|
|
||||||
#[cfg(test)]
|
|
||||||
println!("got some metadata: {:?}", meta);
|
|
||||||
return Some(meta);
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
eprintln!("error on secret deserialization: {}", e);
|
|
||||||
return None;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// currently early version (copied from update_secret)
|
|
||||||
fn update_secret_meta(db: &Db, path: &str, mut meta: SecretMeta) {
|
|
||||||
match get_secretmeta(db, path) {
|
|
||||||
Some(meta) => {
|
|
||||||
// case secret found. TODO save it somewhere for versioning
|
|
||||||
#[cfg(test)]
|
|
||||||
print!("something was found. new version {:?} \n", meta)
|
|
||||||
}
|
|
||||||
None => {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
match serialize_metadata_json(&meta) {
|
|
||||||
Ok(meta_json) => {
|
|
||||||
#[cfg(test)]
|
|
||||||
println!("String: {:?}", meta_json.clone());
|
|
||||||
let as_ivec = sled::IVec::from(meta_json.into_bytes()); // maybe outsource this in a fn later
|
|
||||||
#[cfg(test)]
|
|
||||||
println!("ivec: {:?}", as_ivec);
|
|
||||||
match db.insert(path, as_ivec) {
|
|
||||||
Ok(_) => println!("Metadata inserted"),
|
|
||||||
Err(e) => eprintln!("Failed to insert meta: {}", e),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Err(e) => eprintln!("Failed to serialize meta: {}", e),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// TODO soft delete the secret version at path. can be undone with undelete_secret
|
|
||||||
// https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2#delete-latest-version-of-secret
|
|
||||||
// https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2#delete-secret-versions
|
|
||||||
|
|
||||||
/// hard delete secret at path
|
|
||||||
fn delete_secret(db: &Db, path: &str) {
|
|
||||||
let rem = db.remove(path);
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue