diff --git a/src/main/java/org/rundeck/client/api/model/KeyStorageItem.java b/src/main/java/org/rundeck/client/api/model/KeyStorageItem.java index d02e9405..5a6b2183 100644 --- a/src/main/java/org/rundeck/client/api/model/KeyStorageItem.java +++ b/src/main/java/org/rundeck/client/api/model/KeyStorageItem.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -80,6 +81,9 @@ public void setMeta(Map meta) { } public List getResources() { + if(resources == null){ + return new ArrayList<>(); + } return resources; } diff --git a/src/main/java/org/rundeck/client/tool/commands/Keys.java b/src/main/java/org/rundeck/client/tool/commands/Keys.java index a055dfa3..97593292 100644 --- a/src/main/java/org/rundeck/client/tool/commands/Keys.java +++ b/src/main/java/org/rundeck/client/tool/commands/Keys.java @@ -77,7 +77,7 @@ interface PathArgs { @Option(shortName = "p", longName = "path", description = "Storage path in the form 'path/to/file', or 'keys/path/to/file'.", - defaultToNull = true) + defaultValue = "") Path getPath(); } diff --git a/src/test/groovy/org/rundeck/client/tool/commands/KeysSpec.groovy b/src/test/groovy/org/rundeck/client/tool/commands/KeysSpec.groovy index 10a3cdab..7bf3b496 100644 --- a/src/test/groovy/org/rundeck/client/tool/commands/KeysSpec.groovy +++ b/src/test/groovy/org/rundeck/client/tool/commands/KeysSpec.groovy @@ -259,4 +259,33 @@ class KeysSpec extends Specification { 'asdf😀\r\n' | 'asdf😀' } + + @Unroll + def "list all"() { + given: + def api = Mock(RundeckApi) + def opts = Mock(Keys.ListArg) { + getPath() >> new Keys.Path(input?:"") + + } + + def retrofit = new Retrofit.Builder().baseUrl('http://example.com/fake/').build() + def client = new Client(api, retrofit, null, null, 18, true, null) + def hasclient = Mock(RdApp) { + getClient() >> client + } + Keys keys = new Keys(hasclient) + def out = Mock(CommandOutput) + when: + keys.list(opts, out) + + then: + 1 * api.listKeyStorage(_) >> Calls.response(new KeyStorageItem()) + 0 * api._(*_) + + where: + input | _ + null | _ + 'keys/' | _ + } }