github.com/hashicorp/vault/sdk@v0.11.0/helper/useragent/useragent_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package useragent 5 6 import ( 7 "testing" 8 9 "github.com/hashicorp/vault/sdk/logical" 10 ) 11 12 func TestUserAgent(t *testing.T) { 13 projectURL = "https://vault-test.com" 14 rt = "go5.0" 15 16 type args struct { 17 comments []string 18 } 19 tests := []struct { 20 name string 21 args args 22 want string 23 }{ 24 { 25 name: "User agent", 26 args: args{}, 27 want: "Vault (+https://vault-test.com; go5.0)", 28 }, 29 { 30 name: "User agent with additional comment", 31 args: args{ 32 comments: []string{"pid-abcdefg"}, 33 }, 34 want: "Vault (+https://vault-test.com; go5.0; pid-abcdefg)", 35 }, 36 { 37 name: "User agent with additional comments", 38 args: args{ 39 comments: []string{"pid-abcdefg", "cloud-provider"}, 40 }, 41 want: "Vault (+https://vault-test.com; go5.0; pid-abcdefg; cloud-provider)", 42 }, 43 } 44 for _, tt := range tests { 45 t.Run(tt.name, func(t *testing.T) { 46 if got := String(tt.args.comments...); got != tt.want { 47 t.Errorf("String() = %v, want %v", got, tt.want) 48 } 49 }) 50 } 51 } 52 53 func TestUserAgentPlugin(t *testing.T) { 54 projectURL = "https://vault-test.com" 55 rt = "go5.0" 56 57 type args struct { 58 pluginName string 59 pluginEnv *logical.PluginEnvironment 60 comments []string 61 } 62 tests := []struct { 63 name string 64 args args 65 want string 66 }{ 67 { 68 name: "Plugin user agent with nil plugin env", 69 args: args{ 70 pluginEnv: nil, 71 }, 72 want: "", 73 }, 74 { 75 name: "Plugin user agent without plugin name", 76 args: args{ 77 pluginEnv: &logical.PluginEnvironment{ 78 VaultVersion: "1.2.3", 79 }, 80 }, 81 want: "Vault/1.2.3 (+https://vault-test.com; go5.0)", 82 }, 83 { 84 name: "Plugin user agent without plugin name", 85 args: args{ 86 pluginEnv: &logical.PluginEnvironment{ 87 VaultVersion: "1.2.3", 88 }, 89 }, 90 want: "Vault/1.2.3 (+https://vault-test.com; go5.0)", 91 }, 92 { 93 name: "Plugin user agent with plugin name", 94 args: args{ 95 pluginName: "azure-auth", 96 pluginEnv: &logical.PluginEnvironment{ 97 VaultVersion: "1.2.3", 98 }, 99 }, 100 want: "Vault/1.2.3 (+https://vault-test.com; azure-auth; go5.0)", 101 }, 102 { 103 name: "Plugin user agent with plugin name and additional comment", 104 args: args{ 105 pluginName: "azure-auth", 106 pluginEnv: &logical.PluginEnvironment{ 107 VaultVersion: "1.2.3", 108 }, 109 comments: []string{"pid-abcdefg"}, 110 }, 111 want: "Vault/1.2.3 (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg)", 112 }, 113 { 114 name: "Plugin user agent with plugin name and additional comments", 115 args: args{ 116 pluginName: "azure-auth", 117 pluginEnv: &logical.PluginEnvironment{ 118 VaultVersion: "1.2.3", 119 }, 120 comments: []string{"pid-abcdefg", "cloud-provider"}, 121 }, 122 want: "Vault/1.2.3 (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", 123 }, 124 { 125 name: "Plugin user agent with no plugin name and additional comments", 126 args: args{ 127 pluginEnv: &logical.PluginEnvironment{ 128 VaultVersion: "1.2.3", 129 }, 130 comments: []string{"pid-abcdefg", "cloud-provider"}, 131 }, 132 want: "Vault/1.2.3 (+https://vault-test.com; go5.0; pid-abcdefg; cloud-provider)", 133 }, 134 { 135 name: "Plugin user agent with version prerelease", 136 args: args{ 137 pluginName: "azure-auth", 138 pluginEnv: &logical.PluginEnvironment{ 139 VaultVersion: "1.2.3", 140 VaultVersionPrerelease: "dev", 141 }, 142 comments: []string{"pid-abcdefg", "cloud-provider"}, 143 }, 144 want: "Vault/1.2.3-dev (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", 145 }, 146 { 147 name: "Plugin user agent with version metadata", 148 args: args{ 149 pluginName: "azure-auth", 150 pluginEnv: &logical.PluginEnvironment{ 151 VaultVersion: "1.2.3", 152 VaultVersionMetadata: "ent", 153 }, 154 comments: []string{"pid-abcdefg", "cloud-provider"}, 155 }, 156 want: "Vault/1.2.3+ent (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", 157 }, 158 { 159 name: "Plugin user agent with version prerelease and metadata", 160 args: args{ 161 pluginName: "azure-auth", 162 pluginEnv: &logical.PluginEnvironment{ 163 VaultVersion: "1.2.3", 164 VaultVersionPrerelease: "dev", 165 VaultVersionMetadata: "ent", 166 }, 167 comments: []string{"pid-abcdefg", "cloud-provider"}, 168 }, 169 want: "Vault/1.2.3-dev+ent (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", 170 }, 171 } 172 for _, tt := range tests { 173 t.Run(tt.name, func(t *testing.T) { 174 if got := PluginString(tt.args.pluginEnv, tt.args.pluginName, tt.args.comments...); got != tt.want { 175 t.Errorf("PluginString() = %v, want %v", got, tt.want) 176 } 177 }) 178 } 179 }