mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			158 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) HashiCorp, Inc.
 | |
| // SPDX-License-Identifier: MPL-2.0
 | |
| 
 | |
| 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
 | |
| 	_ = newBoolPtrValue(new(bool), &boolPtrFalseDefault, false)
 | |
| 
 | |
| 	require.True(t, boolPtrFalseDefault.IsSet())
 | |
| 	require.False(t, boolPtrFalseDefault.Get())
 | |
| 
 | |
| 	var boolPtrTrueDefault BoolPtr
 | |
| 	defTrue := true
 | |
| 	_ = 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())
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
