format = 1

# This is an original, data-only description of observable behavior. It is not
# copied upstream source or test code. Dynamic values are fixed through the
# clock and random-stream fields so Rust implementations can execute the same
# cases without invoking pass, gpg, git, oathtool, or qrencode.

[[case]]
id = "init-root"
area = "init"
argv = ["init", "ALICE"]
stdin = "none"
tty = false
status = 0
outcome = "write:.gpg-id"
recipients = ["alice"]
commit = "Set GPG id to ALICE."

[[case]]
id = "init-path-short-multiple"
area = "init"
argv = ["init", "-p", "team", "ALICE", "BOB"]
stdin = "none"
tty = false
status = 0
outcome = "write:team/.gpg-id-and-selectively-reencrypt"
recipients = ["alice", "bob"]
commit = "Set GPG id to ALICE, BOB (team)."

[[case]]
id = "init-path-long"
area = "init"
argv = ["init", "--path", "team", "BOB"]
stdin = "none"
tty = false
status = 0
outcome = "write:team/.gpg-id-and-selectively-reencrypt"
recipients = ["bob"]
commit = "Set GPG id to BOB (team)."

[[case]]
id = "init-remove"
area = "init"
argv = ["init", "--path", "team", ""]
stdin = "none"
tty = false
status = 0
outcome = "remove:team/.gpg-id-and-selectively-reencrypt"
recipients = ["alice"]
commit = "Deinitialize team recipient policy."

[[case]]
id = "init-traversal"
area = "init"
argv = ["init", "-p", "../escape", "ALICE"]
stdin = "none"
tty = false
status = 1
outcome = "reject:sneaky-path"
recipients = []
commit = ""

[[case]]
id = "default-list"
area = "show"
argv = []
stdin = "none"
tty = false
status = 0
outcome = "tree:root"
recipients = []
commit = ""

[[case]]
id = "show-entry"
area = "show"
argv = ["show", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:entire-plaintext"
recipients = []
commit = ""

[[case]]
id = "show-implicit"
area = "show"
argv = ["email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:entire-plaintext"
recipients = []
commit = ""

[[case]]
id = "show-clip-short-default-line"
area = "show"
argv = ["show", "-c", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "clipboard:line-1-no-secret-stdout"
recipients = []
commit = ""

[[case]]
id = "show-clip-long-line"
area = "show"
argv = ["show", "--clip=2", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "clipboard:line-2-no-secret-stdout"
recipients = []
commit = ""

[[case]]
id = "show-qrcode-short-line"
area = "show"
argv = ["show", "-q2", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "qrcode:line-2-no-secret-stdout"
recipients = []
commit = ""

[[case]]
id = "show-qrcode-long-default-line"
area = "show"
argv = ["show", "--qrcode", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "qrcode:line-1-no-secret-stdout"
recipients = []
commit = ""

[[case]]
id = "show-mutually-exclusive"
area = "show"
argv = ["show", "--clip", "--qrcode", "email/personal"]
stdin = "none"
tty = false
status = 1
outcome = "usage-error:no-change"
recipients = []
commit = ""

[[case]]
id = "show-invalid-line"
area = "show"
argv = ["show", "--clip=99", "email/personal"]
stdin = "none"
tty = false
status = 1
outcome = "not-found:line-no-change"
recipients = []
commit = ""

[[case]]
id = "ls-alias"
area = "list"
argv = ["ls", "team"]
stdin = "none"
tty = false
status = 0
outcome = "tree:team"
recipients = []
commit = ""

[[case]]
id = "list-alias"
area = "list"
argv = ["list", "team"]
stdin = "none"
tty = false
status = 0
outcome = "tree:team"
recipients = []
commit = ""

[[case]]
id = "find"
area = "find"
argv = ["find", "service", "咖啡"]
stdin = "none"
tty = false
status = 0
outcome = "tree:case-insensitive-matches"
recipients = []
commit = ""

[[case]]
id = "search-alias"
area = "find"
argv = ["search", "PERSONAL"]
stdin = "none"
tty = false
status = 0
outcome = "tree:case-insensitive-matches"
recipients = []
commit = ""

[[case]]
id = "grep-basic"
area = "grep"
argv = ["grep", "alice@example\\.test"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:matching-entry-and-line"
recipients = []
commit = ""

[[case]]
id = "grep-ignore-case"
area = "grep"
argv = ["grep", "-i", "FIXTURE"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:matching-entries-and-lines"
recipients = []
commit = ""

[[case]]
id = "grep-invert-match"
area = "grep"
argv = ["grep", "-v", "fixture"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:nonmatching-lines"
recipients = []
commit = ""

[[case]]
id = "grep-unsupported-option"
area = "grep"
argv = ["grep", "--binary-files=text", "fixture"]
stdin = "none"
tty = false
status = 1
outcome = "unsupported-option:no-change"
recipients = []
commit = ""

[[case]]
id = "insert-hidden-confirmed"
area = "insert"
argv = ["insert", "new/entry"]
stdin = "secret-confirmed:fixture-secret"
tty = true
status = 0
outcome = "write:new/entry.gpg"
recipients = ["alice"]
commit = "Add given password for new/entry to store."

[[case]]
id = "insert-echo-short"
area = "insert"
argv = ["insert", "-e", "new/entry"]
stdin = "line:fixture-secret"
tty = true
status = 0
outcome = "write:new/entry.gpg"
recipients = ["alice"]
commit = "Add given password for new/entry to store."

[[case]]
id = "insert-echo-long-force"
area = "insert"
argv = ["insert", "--echo", "--force", "email/personal"]
stdin = "line:replacement"
tty = true
status = 0
outcome = "overwrite:email/personal.gpg"
recipients = ["alice"]
commit = "Add given password for email/personal to store."

[[case]]
id = "insert-multiline-short"
area = "insert"
argv = ["insert", "-m", "new/multiline"]
stdin = "bytes:first\\nsecond\\n"
tty = false
status = 0
outcome = "write:new/multiline.gpg-exact-bytes"
recipients = ["alice"]
commit = "Add given password for new/multiline to store."

[[case]]
id = "insert-multiline-long"
area = "insert"
argv = ["insert", "--multiline", "new/multiline"]
stdin = "bytes:first\\nsecond\\n"
tty = false
status = 0
outcome = "write:new/multiline.gpg-exact-bytes"
recipients = ["alice"]
commit = "Add given password for new/multiline to store."

[[case]]
id = "insert-confirmation-mismatch"
area = "insert"
argv = ["insert", "new/entry"]
stdin = "secret-mismatch:first,second"
tty = true
status = 1
outcome = "reject:mismatch-no-change"
recipients = []
commit = ""

[[case]]
id = "insert-overwrite-decline"
area = "insert"
argv = ["insert", "email/personal"]
stdin = "decision:no"
tty = true
status = 1
outcome = "cancel:no-change"
recipients = []
commit = ""

[[case]]
id = "add-alias"
area = "insert"
argv = ["add", "-f", "new/entry"]
stdin = "line:fixture-secret"
tty = false
status = 0
outcome = "write:new/entry.gpg"
recipients = ["alice"]
commit = "Add given password for new/entry to store."

[[case]]
id = "edit-existing"
area = "edit"
argv = ["edit", "email/personal"]
stdin = "editor-replacement:expected/basic/email/personal-edited.txt"
tty = true
status = 0
outcome = "atomic-overwrite:email/personal.gpg"
recipients = ["alice"]
commit = "Edit password for email/personal using fixture-editor."

[[case]]
id = "edit-unchanged"
area = "edit"
argv = ["edit", "email/personal"]
stdin = "editor-unchanged"
tty = true
status = 1
outcome = "unchanged:no-change"
recipients = []
commit = ""

[[case]]
id = "edit-editor-failure"
area = "edit"
argv = ["edit", "email/personal"]
stdin = "editor-exit:42"
tty = true
status = 1
outcome = "editor-failed:no-change-and-cleanup"
recipients = []
commit = ""

[[case]]
id = "generate-default"
area = "generate"
argv = ["generate", "generated/default"]
stdin = "none"
tty = false
status = 0
outcome = "write:generated/default.gpg-and-stdout-password"
recipients = ["alice"]
commit = "Add generated password for generated/default."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-length"
area = "generate"
argv = ["generate", "generated/length", "32"]
stdin = "none"
tty = false
status = 0
outcome = "write:generated/length.gpg-length-32"
recipients = ["alice"]
commit = "Add generated password for generated/length."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-no-symbols-short"
area = "generate"
argv = ["generate", "-n", "generated/alnum", "16"]
stdin = "none"
tty = false
status = 0
outcome = "write:generated/alnum.gpg-alphanumeric"
recipients = ["alice"]
commit = "Add generated password for generated/alnum."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-no-symbols-long-clip"
area = "generate"
argv = ["generate", "--no-symbols", "--clip", "generated/clip", "16"]
stdin = "none"
tty = false
status = 0
outcome = "write-and-clipboard:no-secret-stdout"
recipients = ["alice"]
commit = "Add generated password for generated/clip."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-qrcode-short"
area = "generate"
argv = ["generate", "-q", "generated/qr", "16"]
stdin = "none"
tty = false
status = 0
outcome = "write-and-qrcode:no-secret-stdout"
recipients = ["alice"]
commit = "Add generated password for generated/qr."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-in-place-short"
area = "generate"
argv = ["generate", "-i", "email/personal", "20"]
stdin = "none"
tty = false
status = 0
outcome = "replace-first-line-preserve-tail-exactly"
recipients = ["alice"]
commit = "Replace generated password for email/personal."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-in-place-long"
area = "generate"
argv = ["generate", "--in-place", "email/personal", "20"]
stdin = "none"
tty = false
status = 0
outcome = "replace-first-line-preserve-tail-exactly"
recipients = ["alice"]
commit = "Replace generated password for email/personal."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-force-long"
area = "generate"
argv = ["generate", "--force", "email/personal", "20"]
stdin = "none"
tty = false
status = 0
outcome = "overwrite:email/personal.gpg"
recipients = ["alice"]
commit = "Add generated password for email/personal."
random_stream = "00..ff-repeating"

[[case]]
id = "generate-zero"
area = "generate"
argv = ["generate", "new/entry", "0"]
stdin = "none"
tty = false
status = 1
outcome = "reject:zero-length-no-change"
recipients = []
commit = ""

[[case]]
id = "generate-decline-overwrite"
area = "generate"
argv = ["generate", "email/personal"]
stdin = "decision:no"
tty = true
status = 1
outcome = "cancel:no-change"
recipients = []
commit = ""

[[case]]
id = "rm-entry"
area = "remove"
argv = ["rm", "email/personal"]
stdin = "decision:yes"
tty = true
status = 0
outcome = "remove:email/personal.gpg-and-empty-directories"
recipients = []
commit = "Remove email/personal from store."

[[case]]
id = "remove-alias-force"
area = "remove"
argv = ["remove", "--force", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "remove:email/personal.gpg-and-empty-directories"
recipients = []
commit = "Remove email/personal from store."

[[case]]
id = "delete-alias"
area = "remove"
argv = ["delete", "-f", "email/personal"]
stdin = "none"
tty = false
status = 0
outcome = "remove:email/personal.gpg-and-empty-directories"
recipients = []
commit = "Remove email/personal from store."

[[case]]
id = "rm-directory-requires-recursive"
area = "remove"
argv = ["rm", "team/"]
stdin = "decision:yes"
tty = true
status = 1
outcome = "reject:recursive-required-no-change"
recipients = []
commit = ""

[[case]]
id = "rm-directory-recursive-short"
area = "remove"
argv = ["rm", "-r", "team/"]
stdin = "decision:yes"
tty = true
status = 0
outcome = "remove-tree:team"
recipients = []
commit = "Remove team/ from store."

[[case]]
id = "rm-directory-recursive-long"
area = "remove"
argv = ["rm", "--recursive", "--force", "team/"]
stdin = "none"
tty = false
status = 0
outcome = "remove-tree:team"
recipients = []
commit = "Remove team/ from store."

[[case]]
id = "rm-decline"
area = "remove"
argv = ["rm", "email/personal"]
stdin = "decision:no"
tty = true
status = 1
outcome = "cancel:no-change"
recipients = []
commit = ""

[[case]]
id = "mv-entry"
area = "move"
argv = ["mv", "email/personal", "archive/personal"]
stdin = "none"
tty = false
status = 0
outcome = "move-atomic-and-reencrypt-if-needed"
recipients = ["alice"]
commit = "Rename email/personal to archive/personal."

[[case]]
id = "rename-alias-force"
area = "move"
argv = ["rename", "--force", "email/personal", "team/personal"]
stdin = "none"
tty = false
status = 0
outcome = "move-atomic-and-reencrypt"
recipients = ["bob"]
commit = "Rename email/personal to team/personal."

[[case]]
id = "mv-collision-decline"
area = "move"
argv = ["mv", "email/personal", "team/service"]
stdin = "decision:no"
tty = true
status = 1
outcome = "cancel:no-partial-move"
recipients = []
commit = ""

[[case]]
id = "cp-entry"
area = "copy"
argv = ["cp", "email/personal", "archive/personal"]
stdin = "none"
tty = false
status = 0
outcome = "copy-source-preserved"
recipients = ["alice"]
commit = "Copy email/personal to archive/personal."

[[case]]
id = "copy-alias-force"
area = "copy"
argv = ["copy", "-f", "email/personal", "team/personal"]
stdin = "none"
tty = false
status = 0
outcome = "copy-source-preserved-and-reencrypt"
recipients = ["bob"]
commit = "Copy email/personal to team/personal."

[[case]]
id = "git-init"
area = "git"
argv = ["git", "init"]
stdin = "none"
tty = false
status = 0
outcome = "repository:init-with-gitattributes"
recipients = []
commit = "Add current contents of password store."

[[case]]
id = "git-status"
area = "git"
argv = ["git", "status"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:working-tree-status"
recipients = []
commit = ""

[[case]]
id = "git-log"
area = "git"
argv = ["git", "log"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:ordered-commit-log"
recipients = []
commit = ""

[[case]]
id = "git-diff"
area = "git"
argv = ["git", "diff"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:working-tree-diff"
recipients = []
commit = ""

[[case]]
id = "git-add"
area = "git"
argv = ["git", "add", ".gpg-id"]
stdin = "none"
tty = false
status = 0
outcome = "index:stage-supported-path"
recipients = []
commit = ""

[[case]]
id = "git-commit"
area = "git"
argv = ["git", "commit", "-m", "fixture explicit commit"]
stdin = "none"
tty = false
status = 0
outcome = "repository:new-commit"
recipients = []
commit = "fixture explicit commit"

[[case]]
id = "git-remote-list"
area = "git"
argv = ["git", "remote"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:configured-remotes"
recipients = []
commit = ""

[[case]]
id = "git-remote-add-https"
area = "git"
argv = ["git", "remote", "add", "origin", "https://example.test/store.git"]
stdin = "none"
tty = false
status = 0
outcome = "configure:https-remote"
recipients = []
commit = ""

[[case]]
id = "git-config-get"
area = "git"
argv = ["git", "config", "--get", "remote.origin.url"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:https-remote"
recipients = []
commit = ""

[[case]]
id = "git-config-set"
area = "git"
argv = ["git", "config", "remote.origin.url", "https://example.test/other.git"]
stdin = "none"
tty = false
status = 0
outcome = "configure:https-remote"
recipients = []
commit = ""

[[case]]
id = "git-fetch"
area = "git"
argv = ["git", "fetch", "origin"]
stdin = "credential-ref:fixture-server/fixture-app"
tty = false
status = 0
outcome = "embedded-https-fetch"
recipients = []
commit = ""

[[case]]
id = "git-pull"
area = "git"
argv = ["git", "pull", "origin", "main"]
stdin = "credential-ref:fixture-server/fixture-app"
tty = false
status = 0
outcome = "embedded-https-fetch-and-merge"
recipients = []
commit = ""

[[case]]
id = "git-push"
area = "git"
argv = ["git", "push", "origin", "main"]
stdin = "credential-ref:fixture-server/fixture-app"
tty = false
status = 0
outcome = "embedded-https-push"
recipients = []
commit = ""

[[case]]
id = "git-forbidden-ssh-scheme"
area = "git"
argv = ["git", "remote", "add", "origin", "ssh://example.test/store.git"]
stdin = "none"
tty = false
status = 1
outcome = "reject-before-transport:no-change"
recipients = []
commit = ""

[[case]]
id = "git-forbidden-scp-syntax"
area = "git"
argv = ["git", "remote", "add", "origin", "git@example.test:store.git"]
stdin = "none"
tty = false
status = 1
outcome = "reject-before-transport:no-change"
recipients = []
commit = ""

[[case]]
id = "git-forbidden-git-scheme"
area = "git"
argv = ["git", "remote", "add", "origin", "git://example.test/store.git"]
stdin = "none"
tty = false
status = 1
outcome = "reject-before-transport:no-change"
recipients = []
commit = ""

[[case]]
id = "git-forbidden-file-scheme"
area = "git"
argv = ["git", "remote", "add", "origin", "file:///tmp/store.git"]
stdin = "none"
tty = false
status = 1
outcome = "reject-before-transport:no-change"
recipients = []
commit = ""

[[case]]
id = "git-forbidden-local-path"
area = "git"
argv = ["git", "remote", "add", "origin", "../store.git"]
stdin = "none"
tty = false
status = 1
outcome = "reject-before-transport:no-change"
recipients = []
commit = ""

[[case]]
id = "git-forbidden-helper-scheme"
area = "git"
argv = ["git", "remote", "add", "origin", "ext::helper command"]
stdin = "none"
tty = false
status = 1
outcome = "reject-before-transport:no-change"
recipients = []
commit = ""

[[case]]
id = "git-unsupported-passthrough"
area = "git"
argv = ["git", "rebase", "main"]
stdin = "none"
tty = false
status = 1
outcome = "unsupported-workflow:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-code-default"
area = "otp"
argv = ["otp", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:totp-code"
recipients = []
commit = ""
clock = "1970-01-01T00:00:59Z"

[[case]]
id = "otp-code-explicit-clip"
area = "otp"
argv = ["otp", "code", "--clip", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "clipboard:totp-code-no-secret-stdout"
recipients = []
commit = ""
clock = "1970-01-01T00:00:59Z"

[[case]]
id = "otp-show-alias-short-clip"
area = "otp"
argv = ["otp", "show", "-c", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "clipboard:totp-code-no-secret-stdout"
recipients = []
commit = ""
clock = "1970-01-01T00:00:59Z"

[[case]]
id = "otp-hotp-increment"
area = "otp"
argv = ["otp", "code", "otp/hotp"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:hotp-code-and-atomic-counter-increment"
recipients = ["alice"]
commit = "Increment HOTP counter for otp/hotp."

[[case]]
id = "otp-insert-uri"
area = "otp"
argv = ["otp", "insert", "otp/new"]
stdin = "secret-confirmed:otpauth-uri"
tty = true
status = 0
outcome = "write:otp/new.gpg"
recipients = ["alice"]
commit = "Add OTP secret for otp/new to store."

[[case]]
id = "otp-add-alias-force-echo"
area = "otp"
argv = ["otp", "add", "--force", "--echo", "otp/new"]
stdin = "line:otpauth-uri"
tty = true
status = 0
outcome = "overwrite:otp/new.gpg"
recipients = ["alice"]
commit = "Add OTP secret for otp/new to store."

[[case]]
id = "otp-add-alias-short-options"
area = "otp"
argv = ["otp", "add", "-f", "-e", "otp/new"]
stdin = "line:otpauth-uri"
tty = true
status = 0
outcome = "overwrite:otp/new.gpg"
recipients = ["alice"]
commit = "Add OTP secret for otp/new to store."

[[case]]
id = "otp-insert-derived-path-secret-short-options"
area = "otp"
argv = ["otp", "insert", "-s", "-i", "Issuer", "-a", "account"]
stdin = "secret-confirmed:JBSWY3DPEHPK3PXP;decision:yes"
tty = true
status = 0
outcome = "write:Issuer/account.gpg-derived-uri"
recipients = ["alice"]
commit = "Add OTP secret for Issuer/account to store."

[[case]]
id = "otp-insert-derived-path-decline"
area = "otp"
argv = ["otp", "insert", "--secret", "--issuer", "Issuer"]
stdin = "line:JBSWY3DPEHPK3PXP;decision:no"
tty = true
status = 1
outcome = "cancel:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-insert-secret-long-options"
area = "otp"
argv = ["otp", "insert", "--secret", "--issuer", "Issuer", "--account", "account", "otp/new"]
stdin = "line:JBSWY3DPEHPK3PXP"
tty = false
status = 0
outcome = "write:otp/new.gpg-derived-uri"
recipients = ["alice"]
commit = "Add OTP secret for otp/new to store."

[[case]]
id = "otp-append"
area = "otp"
argv = ["otp", "append", "email/personal"]
stdin = "line:otpauth-uri"
tty = false
status = 0
outcome = "append-uri-preserve-existing-bytes"
recipients = ["alice"]
commit = "Append OTP secret for email/personal."

[[case]]
id = "otp-append-replace-decline"
area = "otp"
argv = ["otp", "append", "otp/totp"]
stdin = "decision:no"
tty = true
status = 1
outcome = "cancel:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-append-replace-force"
area = "otp"
argv = ["otp", "append", "-f", "otp/totp"]
stdin = "line:otpauth-uri"
tty = false
status = 0
outcome = "replace-first-uri-preserve-other-lines"
recipients = ["alice"]
commit = "Replace OTP secret for otp/totp."

[[case]]
id = "otp-append-secret-long-options"
area = "otp"
argv = ["otp", "append", "--force", "--echo", "--secret", "--issuer", "Issuer", "--account", "account", "otp/totp"]
stdin = "line:JBSWY3DPEHPK3PXP"
tty = true
status = 0
outcome = "replace-first-uri-preserve-other-lines"
recipients = ["alice"]
commit = "Replace OTP secret for otp/totp."

[[case]]
id = "otp-uri"
area = "otp"
argv = ["otp", "uri", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:uri"
recipients = []
commit = ""

[[case]]
id = "otp-uri-clip"
area = "otp"
argv = ["otp", "uri", "--clip", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "clipboard:uri-no-secret-stdout"
recipients = []
commit = ""

[[case]]
id = "otp-uri-qrcode-short"
area = "otp"
argv = ["otp", "uri", "-q", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "qrcode:uri"
recipients = []
commit = ""

[[case]]
id = "otp-uri-qrcode-long"
area = "otp"
argv = ["otp", "uri", "--qrcode", "otp/totp"]
stdin = "none"
tty = false
status = 0
outcome = "qrcode:uri"
recipients = []
commit = ""

[[case]]
id = "otp-uri-mutually-exclusive"
area = "otp"
argv = ["otp", "uri", "--clip", "--qrcode", "otp/totp"]
stdin = "none"
tty = false
status = 1
outcome = "usage-error:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-validate-valid"
area = "otp"
argv = ["otp", "validate", "otpauth://totp/account?secret=JBSWY3DPEHPK3PXP"]
stdin = "none"
tty = false
status = 0
outcome = "valid:no-output"
recipients = []
commit = ""

[[case]]
id = "otp-validate-missing-secret"
area = "otp"
argv = ["otp", "validate", "otpauth://totp/account?issuer=Fixture"]
stdin = "none"
tty = false
status = 1
outcome = "invalid:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-validate-missing-hotp-counter"
area = "otp"
argv = ["otp", "validate", "otpauth://hotp/account?secret=JBSWY3DPEHPK3PXP"]
stdin = "none"
tty = false
status = 1
outcome = "invalid:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-validate-malformed"
area = "otp"
argv = ["otp", "validate", "https://example.test/not-otp"]
stdin = "none"
tty = false
status = 1
outcome = "invalid:no-change"
recipients = []
commit = ""

[[case]]
id = "otp-help"
area = "otp"
argv = ["otp", "help"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:otp-help"
recipients = []
commit = ""

[[case]]
id = "otp-help-long"
area = "otp"
argv = ["otp", "--help"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:otp-help"
recipients = []
commit = ""

[[case]]
id = "otp-help-short"
area = "otp"
argv = ["otp", "-h"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:otp-help"
recipients = []
commit = ""

[[case]]
id = "otp-version"
area = "otp"
argv = ["otp", "version"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:1.1.1"
recipients = []
commit = ""

[[case]]
id = "otp-version-long"
area = "otp"
argv = ["otp", "--version"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:1.1.1"
recipients = []
commit = ""

[[case]]
id = "help"
area = "meta"
argv = ["help"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:help"
recipients = []
commit = ""

[[case]]
id = "help-long"
area = "meta"
argv = ["--help"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:help"
recipients = []
commit = ""

[[case]]
id = "version"
area = "meta"
argv = ["version"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:version"
recipients = []
commit = ""

[[case]]
id = "version-long"
area = "meta"
argv = ["--version"]
stdin = "none"
tty = false
status = 0
outcome = "stdout:version"
recipients = []
commit = ""

[[case]]
id = "unknown-command-as-show"
area = "show"
argv = ["does-not-exist"]
stdin = "none"
tty = false
status = 1
outcome = "not-found:no-change"
recipients = []
commit = ""
