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  }