@@ -16,6 +16,7 @@ package manifests
1616
1717import (
1818 "context"
19+ "crypto/sha256"
1920 "errors"
2021 "fmt"
2122 "net/url"
@@ -628,7 +629,7 @@ func TestUnconfiguredManifests(t *testing.T) {
628629 t .Fatal (err )
629630 }
630631
631- _ , err = f .TelemeterClientDeployment (nil )
632+ _ , err = f .TelemeterClientDeployment (nil , nil )
632633 if err != nil {
633634 t .Fatal (err )
634635 }
@@ -3125,7 +3126,7 @@ func TestTelemeterConfiguration(t *testing.T) {
31253126 t .Fatal (err )
31263127 }
31273128 f := NewFactory ("openshift-monitoring" , "openshift-user-workload-monitoring" , c , defaultInfrastructureReader (), & fakeProxyReader {}, NewAssets (assetsPath ), & APIServerConfig {}, & configv1.Console {})
3128- d , err := f .TelemeterClientDeployment (& v1.ConfigMap {ObjectMeta : metav1.ObjectMeta {Name : "foo" }})
3129+ d , err := f .TelemeterClientDeployment (& v1.ConfigMap {ObjectMeta : metav1.ObjectMeta {Name : "foo" }}, & v1. Secret { Data : map [ string ][] byte { "token" : [] byte ( "test" )}} )
31293130 if err != nil {
31303131 t .Fatal (err )
31313132 }
@@ -3148,6 +3149,15 @@ func TestTelemeterConfiguration(t *testing.T) {
31483149 }
31493150 }
31503151
3152+ hash := sha256 .New ()
3153+ expectedTokenHash := string (hash .Sum ([]byte ("test" )))
3154+
3155+ if tokenHash , ok := d .Spec .Template .Annotations ["telemeter-token-hash" ]; ! ok {
3156+ t .Fatalf ("telemeter-token-hash annotation not set in telemeter-client deployment" )
3157+ } else if expectedTokenHash != tokenHash {
3158+ t .Fatalf ("incorrect token hash on telemeter-token-hash annotation, \n got %s, \n want %s" , tokenHash , expectedTokenHash )
3159+ }
3160+
31513161 expectedKubeRbacProxyTLSCipherSuitesArg := fmt .Sprintf ("%s%s" ,
31523162 KubeRbacProxyTLSCipherSuitesFlag ,
31533163 strings .Join (crypto .OpenSSLToIANACipherSuites (APIServerDefaultTLSCiphers ), "," ))
@@ -3163,6 +3173,87 @@ func TestTelemeterConfiguration(t *testing.T) {
31633173 }
31643174}
31653175
3176+ func TestTelemeterClientSecret (t * testing.T ) {
3177+ for _ , tc := range []struct {
3178+ name string
3179+ config string
3180+ existingData map [string ][]byte
3181+ expectedData map [string ][]byte
3182+ updateToSaltExpected bool
3183+ }{
3184+ {
3185+ name : "No existing secret" ,
3186+ config : `telemeterClient:
3187+ token: mySecretToken
3188+ ` ,
3189+ existingData : map [string ][]byte {},
3190+ expectedData : map [string ][]byte {
3191+ "token" : []byte ("mySecretToken" ),
3192+ },
3193+ updateToSaltExpected : true ,
3194+ },
3195+ {
3196+ name : "Existing secret, salt gets deleted" ,
3197+ config : `telemeterClient:
3198+ token: mySecretToken
3199+ ` ,
3200+ existingData : map [string ][]byte {
3201+ "token" : []byte ("mySecretToken" ),
3202+ },
3203+ expectedData : map [string ][]byte {
3204+ "token" : []byte ("mySecretToken" ),
3205+ },
3206+ updateToSaltExpected : true ,
3207+ },
3208+ {
3209+ name : "Existing secret, secret changes" ,
3210+ config : `telemeterClient:
3211+ token: myNewSecretToken
3212+ ` ,
3213+ existingData : map [string ][]byte {
3214+ "token" : []byte ("mySecretToken" ),
3215+ "salt" : []byte ("1234456789ABCDEF" ),
3216+ },
3217+ expectedData : map [string ][]byte {
3218+ "token" : []byte ("myNewSecretToken" ),
3219+ },
3220+ updateToSaltExpected : true ,
3221+ },
3222+ } {
3223+ t .Run (tc .name , func (t * testing.T ) {
3224+ c , err := NewConfigFromString (tc .config )
3225+ if err != nil {
3226+ t .Fatal (err )
3227+ }
3228+ c .UserWorkloadConfiguration = NewDefaultUserWorkloadMonitoringConfig ()
3229+ f := NewFactory ("openshift-monitoring" , "openshift-user-workload-monitoring" , c , defaultInfrastructureReader (), & fakeProxyReader {}, NewAssets (assetsPath ), & APIServerConfig {}, & configv1.Console {})
3230+ generatedS , err := f .TelemeterClientSecret ()
3231+ if err != nil {
3232+ t .Fatal (err )
3233+ }
3234+ byteT , exists := generatedS .Data ["token" ]
3235+ newToken := string (byteT )
3236+ if ! exists {
3237+ t .Fatalf ("generated TelemeterClientSecret does not contain a token" )
3238+ }
3239+ byteS , exists := generatedS .Data ["salt" ]
3240+ newSalt := string (byteS )
3241+ if ! exists {
3242+ t .Fatalf ("generated TelemeterClientSecret does not contain a salt" )
3243+ }
3244+ if string (tc .expectedData ["token" ]) != newToken {
3245+ t .Fatalf ("generated token is different from expected, expected %s, got %s" , tc .expectedData ["token" ], newToken )
3246+ }
3247+ if tc .updateToSaltExpected && string (tc .existingData ["salt" ]) == newSalt {
3248+ t .Fatalf ("generated salt remain the same expected it to be different, got %s" , newSalt )
3249+ } else if ! tc .updateToSaltExpected && string (tc .expectedData ["salt" ]) != newSalt {
3250+ t .Fatalf ("generated salt is different from expected, expected %s, got %s" , tc .expectedData ["salt" ], newSalt )
3251+ }
3252+ })
3253+ }
3254+
3255+ }
3256+
31663257func TestThanosRulerConfiguration (t * testing.T ) {
31673258 c , err := NewConfigFromString (`` )
31683259 uwc , err := NewUserConfigFromString (`thanosRuler:
0 commit comments