awsparamstore_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright (c) Tailscale Inc & contributors
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. //go:build !ts_omit_aws
  4. package awsparamstore
  5. import (
  6. "testing"
  7. )
  8. func TestParseARN(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. input string
  12. wantOk bool
  13. wantRegion string
  14. wantParamName string
  15. }{
  16. {
  17. name: "non-arn-passthrough",
  18. input: "tskey-abcd1234",
  19. wantOk: false,
  20. },
  21. {
  22. name: "file-prefix-passthrough",
  23. input: "file:/path/to/key",
  24. wantOk: false,
  25. },
  26. {
  27. name: "empty-passthrough",
  28. input: "",
  29. wantOk: false,
  30. },
  31. {
  32. name: "non-ssm-arn-passthrough",
  33. input: "arn:aws:s3:::my-bucket",
  34. wantOk: false,
  35. },
  36. {
  37. name: "invalid-arn-passthrough",
  38. input: "arn:invalid",
  39. wantOk: false,
  40. },
  41. {
  42. name: "arn-invalid-resource-passthrough",
  43. input: "arn:aws:ssm:us-east-1:123456789012:document/myDoc",
  44. wantOk: false,
  45. },
  46. {
  47. name: "valid-arn",
  48. input: "arn:aws:ssm:us-west-2:123456789012:parameter/my-secret",
  49. wantOk: true,
  50. wantRegion: "us-west-2",
  51. wantParamName: "/my-secret",
  52. },
  53. {
  54. name: "valid-arn-with-path",
  55. input: "arn:aws:ssm:eu-central-1:123456789012:parameter/path/to/secret",
  56. wantOk: true,
  57. wantRegion: "eu-central-1",
  58. wantParamName: "/path/to/secret",
  59. },
  60. }
  61. for _, tt := range tests {
  62. t.Run(tt.name, func(t *testing.T) {
  63. gotRegion, gotParamName, gotOk := parseARN(tt.input)
  64. if gotOk != tt.wantOk {
  65. t.Errorf("parseARN(%q) got ok=%v, want %v", tt.input, gotOk, tt.wantOk)
  66. }
  67. if !tt.wantOk {
  68. return
  69. }
  70. if gotRegion != tt.wantRegion {
  71. t.Errorf("parseARN(%q) got region=%q, want %q", tt.input, gotRegion, tt.wantRegion)
  72. }
  73. if gotParamName != tt.wantParamName {
  74. t.Errorf("parseARN(%q) got paramName=%q, want %q", tt.input, gotParamName, tt.wantParamName)
  75. }
  76. })
  77. }
  78. }