github.com/0chain/gosdk@v1.17.11/core/conf/config_test.go (about) 1 package conf 2 3 import ( 4 "testing" 5 6 "github.com/0chain/gosdk/core/conf/mocks" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestLoadConfig(t *testing.T) { 11 12 var mockDefaultReader = func() Reader { 13 reader := &mocks.Reader{} 14 reader.On("GetString", "block_worker").Return("http://127.0.0.1:9091/dns") 15 reader.On("GetString", "zauth.server").Return("http://127.0.0.1:8090/") 16 reader.On("GetInt", "min_submit").Return(0) 17 reader.On("GetInt", "min_confirmation").Return(0) 18 reader.On("GetInt", "max_txn_query").Return(0) 19 reader.On("GetInt", "query_sleep_time").Return(0) 20 reader.On("GetInt", "confirmation_chain_length").Return(0) 21 reader.On("GetStringSlice", "preferred_blobbers").Return(nil) 22 reader.On("GetString", "signature_scheme").Return("") 23 reader.On("GetString", "chain_id").Return("") 24 reader.On("GetString", "verify_optimistic").Return("true") 25 reader.On("GetInt", "sharder_consensous").Return(0) 26 27 return reader 28 29 } 30 31 tests := []struct { 32 name string 33 exceptedErr error 34 35 setup func(*testing.T) Reader 36 run func(*require.Assertions, Config) 37 }{ 38 { 39 name: "Test_Config_Invalid_BlockWorker", 40 exceptedErr: ErrInvalidValue, 41 setup: func(t *testing.T) Reader { 42 43 reader := &mocks.Reader{} 44 reader.On("GetString", "block_worker").Return("") 45 reader.On("GetString", "zauth.server").Return("") 46 reader.On("GetInt", "min_submit").Return(0) 47 reader.On("GetInt", "min_confirmation").Return(0) 48 reader.On("GetInt", "max_txn_query").Return(0) 49 reader.On("GetInt", "query_sleep_time").Return(0) 50 reader.On("GetInt", "confirmation_chain_length").Return(0) 51 reader.On("GetStringSlice", "preferred_blobbers").Return(nil) 52 reader.On("GetString", "signature_scheme").Return("") 53 reader.On("GetString", "chain_id").Return("") 54 reader.On("GetString", "verify_optimistic").Return("true") 55 reader.On("GetInt", "sharder_consensous").Return(0) 56 57 return reader 58 }, 59 run: func(r *require.Assertions, cfg Config) { 60 61 }, 62 }, 63 { 64 name: "Test_Config_BlockWorker", 65 66 setup: func(t *testing.T) Reader { 67 return mockDefaultReader() 68 }, 69 run: func(r *require.Assertions, cfg Config) { 70 r.Equal("http://127.0.0.1:9091/dns", cfg.BlockWorker) 71 }, 72 }, 73 { 74 name: "Test_Config_Min_Submit_Less_Than_1", 75 76 setup: func(t *testing.T) Reader { 77 return mockDefaultReader() 78 }, 79 run: func(r *require.Assertions, cfg Config) { 80 r.Equal(10, cfg.MinSubmit) 81 }, 82 }, 83 { 84 name: "Test_Config_Min_Submit_Greater_Than_100", 85 86 setup: func(t *testing.T) Reader { 87 88 reader := &mocks.Reader{} 89 reader.On("GetString", "block_worker").Return("https://127.0.0.1:9091/dns") 90 reader.On("GetString", "zauth.server").Return("http://127.0.0.1:8090/") 91 reader.On("GetInt", "min_submit").Return(101) 92 reader.On("GetInt", "min_confirmation").Return(0) 93 reader.On("GetInt", "max_txn_query").Return(0) 94 reader.On("GetInt", "query_sleep_time").Return(0) 95 reader.On("GetInt", "confirmation_chain_length").Return(0) 96 reader.On("GetStringSlice", "preferred_blobbers").Return(nil) 97 reader.On("GetString", "signature_scheme").Return("") 98 reader.On("GetString", "chain_id").Return("") 99 reader.On("GetString", "verify_optimistic").Return("true") 100 reader.On("GetInt", "sharder_consensous").Return(0) 101 102 return reader 103 }, 104 run: func(r *require.Assertions, cfg Config) { 105 r.Equal(100, cfg.MinSubmit) 106 }, 107 }, 108 { 109 name: "Test_Config_Min_Confirmation_Less_Than_1", 110 111 setup: func(t *testing.T) Reader { 112 return mockDefaultReader() 113 }, 114 run: func(r *require.Assertions, cfg Config) { 115 r.Equal(10, cfg.MinConfirmation) 116 }, 117 }, 118 { 119 name: "Test_Config_Min_Confirmation_Greater_100", 120 121 setup: func(t *testing.T) Reader { 122 123 reader := &mocks.Reader{} 124 reader.On("GetString", "block_worker").Return("https://127.0.0.1:9091/dns") 125 reader.On("GetString", "zauth.server").Return("http://127.0.0.1:8090/") 126 reader.On("GetInt", "min_submit").Return(0) 127 reader.On("GetInt", "min_confirmation").Return(101) 128 reader.On("GetInt", "max_txn_query").Return(0) 129 reader.On("GetInt", "query_sleep_time").Return(0) 130 reader.On("GetInt", "confirmation_chain_length").Return(0) 131 reader.On("GetStringSlice", "preferred_blobbers").Return(nil) 132 reader.On("GetString", "signature_scheme").Return("") 133 reader.On("GetString", "chain_id").Return("") 134 reader.On("GetString", "verify_optimistic").Return("false") 135 reader.On("GetInt", "sharder_consensous").Return(0) 136 137 return reader 138 }, 139 run: func(r *require.Assertions, cfg Config) { 140 r.Equal(100, cfg.MinConfirmation) 141 }, 142 }, { 143 name: "Test_Config_Nax_Txn_Query_Less_Than_1", 144 145 setup: func(t *testing.T) Reader { 146 147 return mockDefaultReader() 148 }, 149 run: func(r *require.Assertions, cfg Config) { 150 r.Equal(5, cfg.QuerySleepTime) 151 }, 152 }, { 153 name: "Test_Config_Max_Txn_Query_Less_Than_1", 154 155 setup: func(t *testing.T) Reader { 156 157 return mockDefaultReader() 158 }, 159 run: func(r *require.Assertions, cfg Config) { 160 r.Equal(5, cfg.MaxTxnQuery) 161 }, 162 }, { 163 name: "Test_Config_Confirmation_Chain_Length_Less_Than_1", 164 165 setup: func(t *testing.T) Reader { 166 return mockDefaultReader() 167 }, 168 run: func(r *require.Assertions, cfg Config) { 169 r.Equal(3, cfg.ConfirmationChainLength) 170 }, 171 }, 172 } 173 for _, tt := range tests { 174 t.Run(tt.name, func(t *testing.T) { 175 176 require := require.New(t) 177 178 reader := tt.setup(t) 179 180 cfg, err := LoadConfig(reader) 181 182 // test it by predefined error variable instead of error message 183 if tt.exceptedErr != nil { 184 require.ErrorIs(err, tt.exceptedErr) 185 } else { 186 require.Equal(nil, err) 187 } 188 189 if tt.run != nil { 190 tt.run(require, cfg) 191 } 192 193 }) 194 } 195 }