Encryption: Fix tests

This commit is contained in:
Emil Tullstedt
2020-10-15 14:27:31 +02:00
parent 92c1b1e4c6
commit 3c152dc5bd
6 changed files with 50 additions and 38 deletions
+2 -2
View File
@@ -75,7 +75,7 @@ func TestDSRouteRule(t *testing.T) {
}
setting.SecretKey = "password" //nolint:goconst
key, _ := util.Encrypt([]byte("123"), "password")
key, _ := util.Encrypt([]byte("123"))
ds := &models.DataSource{
JsonData: simplejson.NewFromAny(map[string]interface{}{
@@ -189,7 +189,7 @@ func TestDSRouteRule(t *testing.T) {
}
setting.SecretKey = "password"
key, _ := util.Encrypt([]byte("123"), "password")
key, _ := util.Encrypt([]byte("123"))
ds := &models.DataSource{
JsonData: simplejson.NewFromAny(map[string]interface{}{
+1 -1
View File
@@ -23,7 +23,7 @@ func TestPluginProxy(t *testing.T) {
setting.SecretKey = "password"
bus.AddHandler("test", func(query *models.GetPluginSettingByIdQuery) error {
key, err := util.Encrypt([]byte("123"), "password")
key, err := util.Encrypt([]byte("123"))
if err != nil {
return err
}
+5 -5
View File
@@ -54,7 +54,7 @@ func TestDataSourceProxyCache(t *testing.T) {
json := simplejson.New()
json.Set("tlsAuthWithCACert", true)
tlsCaCert, err := util.Encrypt([]byte(caCert), "password")
tlsCaCert, err := util.Encrypt([]byte(caCert))
So(err, ShouldBeNil)
ds := DataSource{
Id: 1,
@@ -96,9 +96,9 @@ func TestDataSourceProxyCache(t *testing.T) {
json := simplejson.New()
json.Set("tlsAuth", true)
tlsClientCert, err := util.Encrypt([]byte(clientCert), "password")
tlsClientCert, err := util.Encrypt([]byte(clientCert))
So(err, ShouldBeNil)
tlsClientKey, err := util.Encrypt([]byte(clientKey), "password")
tlsClientKey, err := util.Encrypt([]byte(clientKey))
So(err, ShouldBeNil)
ds := DataSource{
@@ -130,7 +130,7 @@ func TestDataSourceProxyCache(t *testing.T) {
json := simplejson.New()
json.Set("tlsAuthWithCACert", true)
tlsCaCert, err := util.Encrypt([]byte(caCert), "password")
tlsCaCert, err := util.Encrypt([]byte(caCert))
So(err, ShouldBeNil)
ds := DataSource{
@@ -179,7 +179,7 @@ func TestDataSourceProxyCache(t *testing.T) {
json := simplejson.NewFromAny(map[string]interface{}{
"httpHeaderName1": "Authorization",
})
encryptedData, err := util.Encrypt([]byte(`Bearer xf5yhfkpsnmgo`), setting.SecretKey)
encryptedData, err := util.Encrypt([]byte(`Bearer xf5yhfkpsnmgo`))
if err != nil {
log.Fatal(err.Error())
}
+40
View File
@@ -0,0 +1,40 @@
package secrets
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestEncryption_keyDerivationLength(t *testing.T) {
salt := []byte("salt")
tests := []struct {
secret []byte
salt []byte
}{
{[]byte("secret"), salt},
{[]byte("a very long secret key that is larger then 32bytes"), salt},
}
for i, tc := range tests {
tc := tc
t.Run(fmt.Sprintf("deriving key #%d", i), func(t *testing.T) {
key, err := encryptionKeyToBytes(tc.secret, tc.salt)
require.NoError(t, err)
assert.Len(t, key, 32)
})
}
}
func TestEncryption_basic(t *testing.T) {
encrypted, err := encrypt([]byte("grafana"), []byte("1234"))
require.NoError(t, err)
decrypted, err := decrypt(encrypted, []byte("1234"))
require.NoError(t, err)
assert.Equal(t, []byte("grafana"), decrypted)
}
+2
View File
@@ -7,11 +7,13 @@ import (
var ErrNotInitialized = errors.New("function is not initialized")
// Decrypt decrypts a payload with a given secret.
// Real implementation in github.com/grafana/grafana/pkg/services/secrets
var Decrypt = func(_ []byte) ([]byte, error) {
return nil, ErrNotInitialized
}
// Encrypt encrypts a payload with a given secret.
// Real implementation in github.com/grafana/grafana/pkg/services/secrets
var Encrypt = func(_ []byte) ([]byte, error) {
return nil, ErrNotInitialized
}
-30
View File
@@ -1,30 +0,0 @@
package util
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestEncryption(t *testing.T) {
t.Run("getting encryption key", func(t *testing.T) {
key, err := encryptionKeyToBytes("secret", "salt")
require.NoError(t, err)
assert.Len(t, key, 32)
key, err = encryptionKeyToBytes("a very long secret key that is larger then 32bytes", "salt")
require.NoError(t, err)
assert.Len(t, key, 32)
})
t.Run("decrypting basic payload", func(t *testing.T) {
encrypted, err := Encrypt([]byte("grafana"), "1234")
require.NoError(t, err)
decrypted, err := Decrypt(encrypted, "1234")
require.NoError(t, err)
assert.Equal(t, []byte("grafana"), decrypted)
})
}