github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/state/impl_app_secrets_storage_test.go (about)

     1  /*
     2   * Copyright (c) 2022-present unTill Pro, Ltd.
     3   */
     4  
     5  package state
     6  
     7  import (
     8  	"context"
     9  	"io/fs"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/mock"
    13  	"github.com/stretchr/testify/require"
    14  	"github.com/voedger/voedger/pkg/appdef"
    15  	"github.com/voedger/voedger/pkg/isecrets"
    16  )
    17  
    18  func TestAppSecretsStorage_BasicUsage(t *testing.T) {
    19  	require := require.New(t)
    20  	secret := "secret.json"
    21  	secretBody := `{"secret":"key"}`
    22  	sr := &isecrets.SecretReaderMock{}
    23  	sr.On("ReadSecret", secret).Return([]byte(secretBody), nil)
    24  	s := ProvideAsyncActualizerStateFactory()(context.Background(), nilAppStructsFunc, nil, nil, nil, sr, nil, nil, nil, 0, 0)
    25  	kb, err := s.KeyBuilder(AppSecret, appdef.NullQName)
    26  	require.NoError(err)
    27  	kb.PutString(Field_Secret, secret)
    28  
    29  	sv, err := s.MustExist(kb)
    30  	require.NoError(err)
    31  
    32  	require.Equal(secretBody, sv.AsString(""))
    33  }
    34  func TestAppSecretsStorage(t *testing.T) {
    35  	t.Run("Should return error when key invalid", func(t *testing.T) {
    36  		s := ProvideAsyncActualizerStateFactory()(context.Background(), nilAppStructsFunc, nil, nil, nil, nil, nil, nil, nil, 0, 0)
    37  		kb, err := s.KeyBuilder(AppSecret, appdef.NullQName)
    38  		require.NoError(t, err)
    39  
    40  		_, err = s.MustExist(kb)
    41  
    42  		require.ErrorIs(t, err, ErrNotFound)
    43  	})
    44  	t.Run("Should return value that not exists when", func(t *testing.T) {
    45  		tests := []struct {
    46  			err error
    47  		}{
    48  			{
    49  				err: isecrets.ErrSecretNameIsBlank,
    50  			},
    51  			{
    52  				err: fs.ErrNotExist,
    53  			},
    54  		}
    55  		for _, test := range tests {
    56  			t.Run(test.err.Error(), func(t *testing.T) {
    57  				sr := &isecrets.SecretReaderMock{}
    58  				sr.On("ReadSecret", mock.Anything).Return(nil, test.err)
    59  				s := ProvideAsyncActualizerStateFactory()(context.Background(), nilAppStructsFunc, nil, nil, nil, sr, nil, nil, nil, 0, 0)
    60  				kb, err := s.KeyBuilder(AppSecret, appdef.NullQName)
    61  				require.NoError(t, err)
    62  				kb.PutString(Field_Secret, "")
    63  
    64  				_, ok, err := s.CanExist(kb)
    65  				require.NoError(t, err)
    66  
    67  				require.False(t, ok)
    68  			})
    69  		}
    70  	})
    71  }