| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| package useragent |
| |
| import ( |
| "testing" |
| |
| "github.com/hashicorp/vault/sdk/logical" |
| ) |
| |
| func TestUserAgent(t *testing.T) { |
| projectURL = "https://vault-test.com" |
| rt = "go5.0" |
| |
| type args struct { |
| comments []string |
| } |
| tests := []struct { |
| name string |
| args args |
| want string |
| }{ |
| { |
| name: "User agent", |
| args: args{}, |
| want: "Vault (+https://vault-test.com; go5.0)", |
| }, |
| { |
| name: "User agent with additional comment", |
| args: args{ |
| comments: []string{"pid-abcdefg"}, |
| }, |
| want: "Vault (+https://vault-test.com; go5.0; pid-abcdefg)", |
| }, |
| { |
| name: "User agent with additional comments", |
| args: args{ |
| comments: []string{"pid-abcdefg", "cloud-provider"}, |
| }, |
| want: "Vault (+https://vault-test.com; go5.0; pid-abcdefg; cloud-provider)", |
| }, |
| } |
| for _, tt := range tests { |
| t.Run(tt.name, func(t *testing.T) { |
| if got := String(tt.args.comments...); got != tt.want { |
| t.Errorf("String() = %v, want %v", got, tt.want) |
| } |
| }) |
| } |
| } |
| |
| func TestUserAgentPlugin(t *testing.T) { |
| projectURL = "https://vault-test.com" |
| rt = "go5.0" |
| |
| type args struct { |
| pluginName string |
| pluginEnv *logical.PluginEnvironment |
| comments []string |
| } |
| tests := []struct { |
| name string |
| args args |
| want string |
| }{ |
| { |
| name: "Plugin user agent with nil plugin env", |
| args: args{ |
| pluginEnv: nil, |
| }, |
| want: "", |
| }, |
| { |
| name: "Plugin user agent without plugin name", |
| args: args{ |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| }, |
| }, |
| want: "Vault/1.2.3 (+https://vault-test.com; go5.0)", |
| }, |
| { |
| name: "Plugin user agent without plugin name", |
| args: args{ |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| }, |
| }, |
| want: "Vault/1.2.3 (+https://vault-test.com; go5.0)", |
| }, |
| { |
| name: "Plugin user agent with plugin name", |
| args: args{ |
| pluginName: "azure-auth", |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| }, |
| }, |
| want: "Vault/1.2.3 (+https://vault-test.com; azure-auth; go5.0)", |
| }, |
| { |
| name: "Plugin user agent with plugin name and additional comment", |
| args: args{ |
| pluginName: "azure-auth", |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| }, |
| comments: []string{"pid-abcdefg"}, |
| }, |
| want: "Vault/1.2.3 (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg)", |
| }, |
| { |
| name: "Plugin user agent with plugin name and additional comments", |
| args: args{ |
| pluginName: "azure-auth", |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| }, |
| comments: []string{"pid-abcdefg", "cloud-provider"}, |
| }, |
| want: "Vault/1.2.3 (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", |
| }, |
| { |
| name: "Plugin user agent with no plugin name and additional comments", |
| args: args{ |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| }, |
| comments: []string{"pid-abcdefg", "cloud-provider"}, |
| }, |
| want: "Vault/1.2.3 (+https://vault-test.com; go5.0; pid-abcdefg; cloud-provider)", |
| }, |
| { |
| name: "Plugin user agent with version prerelease", |
| args: args{ |
| pluginName: "azure-auth", |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| VaultVersionPrerelease: "dev", |
| }, |
| comments: []string{"pid-abcdefg", "cloud-provider"}, |
| }, |
| want: "Vault/1.2.3-dev (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", |
| }, |
| { |
| name: "Plugin user agent with version metadata", |
| args: args{ |
| pluginName: "azure-auth", |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| VaultVersionMetadata: "ent", |
| }, |
| comments: []string{"pid-abcdefg", "cloud-provider"}, |
| }, |
| want: "Vault/1.2.3+ent (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", |
| }, |
| { |
| name: "Plugin user agent with version prerelease and metadata", |
| args: args{ |
| pluginName: "azure-auth", |
| pluginEnv: &logical.PluginEnvironment{ |
| VaultVersion: "1.2.3", |
| VaultVersionPrerelease: "dev", |
| VaultVersionMetadata: "ent", |
| }, |
| comments: []string{"pid-abcdefg", "cloud-provider"}, |
| }, |
| want: "Vault/1.2.3-dev+ent (+https://vault-test.com; azure-auth; go5.0; pid-abcdefg; cloud-provider)", |
| }, |
| } |
| for _, tt := range tests { |
| t.Run(tt.name, func(t *testing.T) { |
| if got := PluginString(tt.args.pluginEnv, tt.args.pluginName, tt.args.comments...); got != tt.want { |
| t.Errorf("PluginString() = %v, want %v", got, tt.want) |
| } |
| }) |
| } |
| } |