github.com/zntrio/harp/v2@v2.0.9/pkg/sdk/value/encryption/jwe/builders_test.go (about) 1 // Licensed to Elasticsearch B.V. under one or more contributor 2 // license agreements. See the NOTICE file distributed with 3 // this work for additional information regarding copyright 4 // ownership. Elasticsearch B.V. licenses this file to you under 5 // the Apache License, Version 2.0 (the "License"); you may 6 // not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, 12 // software distributed under the License is distributed on an 13 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 // KIND, either express or implied. See the License for the 15 // specific language governing permissions and limitations 16 // under the License. 17 18 package jwe 19 20 import ( 21 "context" 22 "fmt" 23 "testing" 24 25 "github.com/stretchr/testify/assert" 26 ) 27 28 func Test_Transformer_JWE_InvalidKey(t *testing.T) { 29 keys := []string{ 30 "", 31 "foo", 32 "123456", 33 "a128kw:abSOB6OHnFKCHIm60OXsA==", 34 "a192kw:b4JtOwQLOk1-RWxXUh5eG54nbdBihLT", 35 "a256kw:TkxS6qSV6DBjn29JmU2ieMPnuCZNn3JelI1CDNqAQ8=", 36 "a128kw:", 37 "a192kw:", 38 "a256kw:", 39 "a512kw:TkxS6qSV6DBjn29JmU2ieMPnuCZNn3JelI1CDNqAQ8=", 40 } 41 for _, k := range keys { 42 key := k 43 t.Run(fmt.Sprintf("key `%s`", key), func(t *testing.T) { 44 underTest, err := FromKey(key) 45 if err == nil { 46 t.Fatalf("Transformer should raise an error with key `%s`", key) 47 } 48 if underTest != nil { 49 t.Fatalf("Transformer instance should be nil") 50 } 51 }) 52 } 53 } 54 55 func Test_FromKey(t *testing.T) { 56 keys := []string{ 57 "a128kw:abSOB6OHnFK1CHIm60OXsA==", 58 "a192kw:b4JtOwQLOks1-RWxXUh5eG54nbdBihLT", 59 "a256kw:TkxS6qSV6eDBjn29JmU2ieMPnuCZNn3JelI1CDNqAQ8=", 60 "pbes2-hs256-a128kw:stalemate-parkway-hardened-jeep-shrink-dimmer-platter-pretense", 61 "pbes2-hs384-a192kw:stalemate-parkway-hardened-jeep-shrink-dimmer-platter-pretense", 62 "pbes2-hs512-a256kw:stalemate-parkway-hardened-jeep-shrink-dimmer-platter-pretense", 63 } 64 for _, k := range keys { 65 key := k 66 t.Run(fmt.Sprintf("key `%s`", key), func(t *testing.T) { 67 underTest, err := FromKey(key) 68 assert.NoError(t, err) 69 assert.NotNil(t, underTest) 70 71 // Try to encrypt 72 ctx := context.Background() 73 encrypted, err := underTest.To(ctx, []byte("cleartext")) 74 assert.NoError(t, err) 75 assert.NotEmpty(t, encrypted) 76 77 // Try to decrypt 78 out, err := underTest.From(ctx, encrypted) 79 assert.NoError(t, err) 80 assert.Equal(t, []byte("cleartext"), out) 81 }) 82 } 83 } 84 85 func Test_TransformerKey(t *testing.T) { 86 k := TransformerKey(AES128_KW, "abSOB6OHnFK1CHIm60OXsA==") 87 assert.Equal(t, "a128kw:abSOB6OHnFK1CHIm60OXsA==", k) 88 } 89 90 func Test_Transformer_InvalidAlgorithm(t *testing.T) { 91 tr, err := Transformer(KeyAlgorithm("a512kw"), "abSOB6OHnFK1CHIm60OXsA==") 92 assert.Error(t, err) 93 assert.Nil(t, tr) 94 }