Passing struct by value essentially gives you a copy, so when modified within a function, the scope is then reduced to that function. Using pointers solves that you mutate the struct as many times as you want from anywhere. As a result, the auto-detection of the Vault KV backend was not working correctly. Also, added a ton of unit tests for Vault. Signed-off-by: Sébastien Han <seb@redhat.com>