@@ -3,6 +3,7 @@ package schema
33import (
44 "context"
55 "fmt"
6+ "os"
67 "reflect"
78 "strings"
89 "testing"
@@ -14,6 +15,7 @@ import (
1415 "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1516 "github.com/hashicorp/terraform-plugin-sdk/v2/internal/configs/configschema"
1617 "github.com/hashicorp/terraform-plugin-sdk/v2/internal/diagutils"
18+ "github.com/hashicorp/terraform-plugin-sdk/v2/meta"
1719 "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1820)
1921
@@ -780,3 +782,48 @@ func TestProvider_InternalValidate(t *testing.T) {
780782 }
781783 }
782784}
785+
786+ func TestProviderUserAgentAppendViaEnvVar (t * testing.T ) {
787+ if oldenv , isSet := os .LookupEnv (uaEnvVar ); isSet {
788+ defer os .Setenv (uaEnvVar , oldenv )
789+ } else {
790+ defer os .Unsetenv (uaEnvVar )
791+ }
792+
793+ expectedBase := "Terraform/4.5.6 (+https://www.terraform.io) Terraform-Plugin-SDK/" + meta .SDKVersionString ()
794+
795+ testCases := []struct {
796+ providerName string
797+ providerVersion string
798+ envVarValue string
799+ expected string
800+ }{
801+ {"" , "" , "" , expectedBase },
802+ {"" , "" , " " , expectedBase },
803+ {"" , "" , " \n " , expectedBase },
804+ {"" , "" , "test/1" , expectedBase + " test/1" },
805+ {"" , "" , "test/1 (comment)" , expectedBase + " test/1 (comment)" },
806+ {"My-Provider" , "" , "" , expectedBase + " My-Provider" },
807+ {"My-Provider" , "" , " " , expectedBase + " My-Provider" },
808+ {"My-Provider" , "" , " \n " , expectedBase + " My-Provider" },
809+ {"My-Provider" , "" , "test/1" , expectedBase + " My-Provider test/1" },
810+ {"My-Provider" , "" , "test/1 (comment)" , expectedBase + " My-Provider test/1 (comment)" },
811+ {"My-Provider" , "1.2.3" , "" , expectedBase + " My-Provider/1.2.3" },
812+ {"My-Provider" , "1.2.3" , " " , expectedBase + " My-Provider/1.2.3" },
813+ {"My-Provider" , "1.2.3" , " \n " , expectedBase + " My-Provider/1.2.3" },
814+ {"My-Provider" , "1.2.3" , "test/1" , expectedBase + " My-Provider/1.2.3 test/1" },
815+ {"My-Provider" , "1.2.3" , "test/1 (comment)" , expectedBase + " My-Provider/1.2.3 test/1 (comment)" },
816+ }
817+
818+ for i , tc := range testCases {
819+ t .Run (fmt .Sprintf ("%d" , i ), func (t * testing.T ) {
820+ os .Unsetenv (uaEnvVar )
821+ os .Setenv (uaEnvVar , tc .envVarValue )
822+ p := & Provider {TerraformVersion : "4.5.6" }
823+ givenUA := p .UserAgent (tc .providerName , tc .providerVersion )
824+ if givenUA != tc .expected {
825+ t .Fatalf ("Expected User-Agent '%s' does not match '%s'" , tc .expected , givenUA )
826+ }
827+ })
828+ }
829+ }
0 commit comments