mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-03 20:17:59 +00:00 
			
		
		
		
	* Bool pointer flag * Add default handling * Support Hidden and EnvVar * Adjust error handling * Add test steps; Fix hidden
		
			
				
	
	
		
			155 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package command
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/require"
 | 
						|
)
 | 
						|
 | 
						|
func Test_BoolPtr(t *testing.T) {
 | 
						|
	var boolPtr BoolPtr
 | 
						|
	value := newBoolPtrValue(nil, &boolPtr, false)
 | 
						|
 | 
						|
	require.False(t, boolPtr.IsSet())
 | 
						|
	require.False(t, boolPtr.Get())
 | 
						|
 | 
						|
	err := value.Set("false")
 | 
						|
	require.NoError(t, err)
 | 
						|
 | 
						|
	require.True(t, boolPtr.IsSet())
 | 
						|
	require.False(t, boolPtr.Get())
 | 
						|
 | 
						|
	err = value.Set("true")
 | 
						|
	require.NoError(t, err)
 | 
						|
 | 
						|
	require.True(t, boolPtr.IsSet())
 | 
						|
	require.True(t, boolPtr.Get())
 | 
						|
 | 
						|
	var boolPtrFalseDefault BoolPtr
 | 
						|
	value = newBoolPtrValue(new(bool), &boolPtrFalseDefault, false)
 | 
						|
 | 
						|
	require.True(t, boolPtrFalseDefault.IsSet())
 | 
						|
	require.False(t, boolPtrFalseDefault.Get())
 | 
						|
 | 
						|
	var boolPtrTrueDefault BoolPtr
 | 
						|
	defTrue := true
 | 
						|
	value = newBoolPtrValue(&defTrue, &boolPtrTrueDefault, false)
 | 
						|
 | 
						|
	require.True(t, boolPtrTrueDefault.IsSet())
 | 
						|
	require.True(t, boolPtrTrueDefault.Get())
 | 
						|
 | 
						|
	var boolPtrHidden BoolPtr
 | 
						|
	value = newBoolPtrValue(nil, &boolPtrHidden, true)
 | 
						|
	require.Equal(t, true, value.Hidden())
 | 
						|
}
 | 
						|
 | 
						|
func Test_TimeParsing(t *testing.T) {
 | 
						|
	var zeroTime time.Time
 | 
						|
 | 
						|
	testCases := []struct {
 | 
						|
		Input    string
 | 
						|
		Formats  TimeFormat
 | 
						|
		Valid    bool
 | 
						|
		Expected time.Time
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			"2020-08-24",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			true,
 | 
						|
			time.Date(2020, 8, 24, 0, 0, 0, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2099-09",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false,
 | 
						|
			zeroTime,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2099-09",
 | 
						|
			TimeVar_TimeOrDay | TimeVar_Month,
 | 
						|
			true,
 | 
						|
			time.Date(2099, 9, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2021-01-02T03:04:05-02:00",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			true,
 | 
						|
			time.Date(2021, 1, 2, 5, 4, 5, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2021-01-02T03:04:05",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false, // Missing timezone not supported
 | 
						|
			time.Date(2021, 1, 2, 3, 4, 5, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2021-01-02T03:04:05+02:00",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			true,
 | 
						|
			time.Date(2021, 1, 2, 1, 4, 5, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"1598313593",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			true,
 | 
						|
			time.Date(2020, 8, 24, 23, 59, 53, 0, time.UTC),
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2037",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false,
 | 
						|
			zeroTime,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"20201212",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false,
 | 
						|
			zeroTime,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"9999999999999999999999999999999999999999999999",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false,
 | 
						|
			zeroTime,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2021-13-02T03:04:05-02:00",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false,
 | 
						|
			zeroTime,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2021-12-02T24:04:05+00:00",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			false,
 | 
						|
			zeroTime,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"2021-01-02T03:04:05.234567890Z",
 | 
						|
			TimeVar_TimeOrDay,
 | 
						|
			true,
 | 
						|
			time.Date(2021, 1, 2, 3, 4, 5, 234567890, time.UTC),
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, tc := range testCases {
 | 
						|
		var result time.Time
 | 
						|
		timeVal := newTimeValue(zeroTime, &result, false, tc.Formats)
 | 
						|
		err := timeVal.Set(tc.Input)
 | 
						|
		if err == nil && !tc.Valid {
 | 
						|
			t.Errorf("Time %q parsed without error as %v, but is not valid", tc.Input, result)
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if err != nil {
 | 
						|
			if tc.Valid {
 | 
						|
				t.Errorf("Time %q parsed as error, but is valid", tc.Input)
 | 
						|
			}
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if !tc.Expected.Equal(result) {
 | 
						|
			t.Errorf("Time %q parsed incorrectly, expected %v but got %v", tc.Input, tc.Expected.UTC(), result.UTC())
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |