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  }