omni/internal/pkg/cache/cache_test.go
Artem Chernyshev ed946b30a6
feat: display OMNI_ENDPOINT in the service account creation UI
Fixes: https://github.com/siderolabs/omni/issues/858

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2025-01-29 15:27:36 +03:00

43 lines
970 B
Go

// Copyright (c) 2025 Sidero Labs, Inc.
//
// Use of this software is governed by the Business Source License
// included in the LICENSE file.
package cache_test
import (
"errors"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/siderolabs/omni/internal/pkg/cache"
)
func TestResultCacher_GetOrUpdate(t *testing.T) {
cacher := cache.Value[int]{Duration: time.Second}
result, err := cacher.GetOrUpdate(func() (int, error) { return 42, errors.New("test") })
require.EqualError(t, err, "test")
require.Zero(t, result)
result, err = cacher.GetOrUpdate(func() (int, error) { return 42, nil })
require.NoError(t, err)
require.Equal(t, 42, result)
result, err = cacher.GetOrUpdate(func() (int, error) { return 43, nil })
require.NoError(t, err)
require.Equal(t, 42, result)
time.Sleep(time.Second)
result, err = cacher.GetOrUpdate(func() (int, error) { return 43, nil })
require.NoError(t, err)
require.Equal(t, 43, result)
}