| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Copyright (c) Tailscale Inc & contributors
- // SPDX-License-Identifier: BSD-3-Clause
- //go:build !ts_omit_aws
- package awsparamstore
- import (
- "testing"
- )
- func TestParseARN(t *testing.T) {
- tests := []struct {
- name string
- input string
- wantOk bool
- wantRegion string
- wantParamName string
- }{
- {
- name: "non-arn-passthrough",
- input: "tskey-abcd1234",
- wantOk: false,
- },
- {
- name: "file-prefix-passthrough",
- input: "file:/path/to/key",
- wantOk: false,
- },
- {
- name: "empty-passthrough",
- input: "",
- wantOk: false,
- },
- {
- name: "non-ssm-arn-passthrough",
- input: "arn:aws:s3:::my-bucket",
- wantOk: false,
- },
- {
- name: "invalid-arn-passthrough",
- input: "arn:invalid",
- wantOk: false,
- },
- {
- name: "arn-invalid-resource-passthrough",
- input: "arn:aws:ssm:us-east-1:123456789012:document/myDoc",
- wantOk: false,
- },
- {
- name: "valid-arn",
- input: "arn:aws:ssm:us-west-2:123456789012:parameter/my-secret",
- wantOk: true,
- wantRegion: "us-west-2",
- wantParamName: "/my-secret",
- },
- {
- name: "valid-arn-with-path",
- input: "arn:aws:ssm:eu-central-1:123456789012:parameter/path/to/secret",
- wantOk: true,
- wantRegion: "eu-central-1",
- wantParamName: "/path/to/secret",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- gotRegion, gotParamName, gotOk := parseARN(tt.input)
- if gotOk != tt.wantOk {
- t.Errorf("parseARN(%q) got ok=%v, want %v", tt.input, gotOk, tt.wantOk)
- }
- if !tt.wantOk {
- return
- }
- if gotRegion != tt.wantRegion {
- t.Errorf("parseARN(%q) got region=%q, want %q", tt.input, gotRegion, tt.wantRegion)
- }
- if gotParamName != tt.wantParamName {
- t.Errorf("parseARN(%q) got paramName=%q, want %q", tt.input, gotParamName, tt.wantParamName)
- }
- })
- }
- }
|