@ -69,21 +69,6 @@ func TestSecretsService_EnvelopeEncryption(t *testing.T) {
assert . Equal ( t , len ( keys ) , 2 )
} )
t . Run ( "decrypting empty payload should return error" , func ( t * testing . T ) {
_ , err := svc . Decrypt ( context . Background ( ) , [ ] byte ( "" ) )
require . Error ( t , err )
assert . Equal ( t , "unable to decrypt empty payload" , err . Error ( ) )
} )
t . Run ( "decrypting legacy secret encrypted with secret key from settings" , func ( t * testing . T ) {
expected := "grafana"
encrypted := [ ] byte { 122 , 56 , 53 , 113 , 101 , 117 , 73 , 89 , 20 , 254 , 36 , 112 , 112 , 16 , 128 , 232 , 227 , 52 , 166 , 108 , 192 , 5 , 28 , 125 , 126 , 42 , 197 , 190 , 251 , 36 , 94 }
decrypted , err := svc . Decrypt ( context . Background ( ) , encrypted )
require . NoError ( t , err )
assert . Equal ( t , expected , string ( decrypted ) )
} )
t . Run ( "usage stats should be registered" , func ( t * testing . T ) {
reports , err := svc . usageStats . GetUsageReport ( context . Background ( ) )
require . NoError ( t , err )
@ -346,3 +331,65 @@ func TestSecretsService_ReEncryptDataKeys(t *testing.T) {
assert . Empty ( t , svc . dataKeyCache . byLabel )
} )
}
func TestSecretsService_Decrypt ( t * testing . T ) {
ctx := context . Background ( )
store := database . ProvideSecretsStore ( sqlstore . InitTestDB ( t ) )
t . Run ( "empty payload should fail" , func ( t * testing . T ) {
svc := SetupTestService ( t , store )
_ , err := svc . Decrypt ( context . Background ( ) , [ ] byte ( "" ) )
require . Error ( t , err )
assert . Equal ( t , "unable to decrypt empty payload" , err . Error ( ) )
} )
t . Run ( "ee encrypted payload with ee disabled should fail" , func ( t * testing . T ) {
svc := SetupTestService ( t , store )
ciphertext , err := svc . Encrypt ( ctx , [ ] byte ( "grafana" ) , secrets . WithoutScope ( ) )
require . NoError ( t , err )
svc = SetupDisabledTestService ( t , store )
_ , err = svc . Decrypt ( ctx , ciphertext )
assert . Error ( t , err )
} )
t . Run ( "ee encrypted payload with providers initialized should work" , func ( t * testing . T ) {
svc := SetupTestService ( t , store )
ciphertext , err := svc . Encrypt ( ctx , [ ] byte ( "grafana" ) , secrets . WithoutScope ( ) )
require . NoError ( t , err )
svc = SetupDisabledTestService ( t , store )
err = svc . InitProviders ( )
require . NoError ( t , err )
plaintext , err := svc . Decrypt ( ctx , ciphertext )
assert . NoError ( t , err )
assert . Equal ( t , [ ] byte ( "grafana" ) , plaintext )
} )
t . Run ( "ee encrypted payload with ee enabled should work" , func ( t * testing . T ) {
svc := SetupTestService ( t , store )
ciphertext , err := svc . Encrypt ( ctx , [ ] byte ( "grafana" ) , secrets . WithoutScope ( ) )
require . NoError ( t , err )
plaintext , err := svc . Decrypt ( ctx , ciphertext )
assert . NoError ( t , err )
assert . Equal ( t , [ ] byte ( "grafana" ) , plaintext )
} )
t . Run ( "legacy payload should always work" , func ( t * testing . T ) {
encrypted := [ ] byte { 122 , 56 , 53 , 113 , 101 , 117 , 73 , 89 , 20 , 254 , 36 , 112 , 112 , 16 , 128 , 232 , 227 , 52 , 166 , 108 , 192 , 5 , 28 , 125 , 126 , 42 , 197 , 190 , 251 , 36 , 94 }
svc := SetupTestService ( t , store )
decrypted , err := svc . Decrypt ( context . Background ( ) , encrypted )
require . NoError ( t , err )
assert . Equal ( t , [ ] byte ( "grafana" ) , decrypted )
svc = SetupDisabledTestService ( t , store )
decrypted , err = svc . Decrypt ( context . Background ( ) , encrypted )
require . NoError ( t , err )
assert . Equal ( t , [ ] byte ( "grafana" ) , decrypted )
} )
}