github.com/sl1pm4t/consul@v1.4.5-0.20190325224627-74c31c540f9c/agent/structs/connect_ca_test.go (about) 1 package structs 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestCAConfiguration_GetCommonConfig(t *testing.T) { 11 tests := []struct { 12 name string 13 cfg *CAConfiguration 14 want *CommonCAProviderConfig 15 wantErr bool 16 }{ 17 { 18 name: "basic defaults", 19 cfg: &CAConfiguration{ 20 Config: map[string]interface{}{ 21 "RotationPeriod": "2160h", 22 "LeafCertTTL": "72h", 23 "CSRMaxPerSecond": "50", 24 }, 25 }, 26 want: &CommonCAProviderConfig{ 27 LeafCertTTL: 72 * time.Hour, 28 CSRMaxPerSecond: 50, 29 }, 30 }, 31 { 32 // Note that this is currently what is actually stored in MemDB, I think 33 // due to a trip through msgpack somewhere but I'm not really sure why 34 // since the defaults are applied on the server and so should probably use 35 // direct RPC that bypasses encoding? Either way this case is important 36 // because it reflects the actual data as it's stored in state which is 37 // what matters in real life. 38 name: "basic defaults after encoding fun", 39 cfg: &CAConfiguration{ 40 Config: map[string]interface{}{ 41 "RotationPeriod": []uint8("2160h"), 42 "LeafCertTTL": []uint8("72h"), 43 }, 44 }, 45 want: &CommonCAProviderConfig{ 46 LeafCertTTL: 72 * time.Hour, 47 CSRMaxPerSecond: 50, // The default value 48 }, 49 }, 50 } 51 for _, tt := range tests { 52 t.Run(tt.name, func(t *testing.T) { 53 got, err := tt.cfg.GetCommonConfig() 54 if (err != nil) != tt.wantErr { 55 t.Errorf("CAConfiguration.GetCommonConfig() error = %v, wantErr %v", err, tt.wantErr) 56 return 57 } 58 require.Equal(t, tt.want, got) 59 }) 60 } 61 }