Skip to content

Commit 11a0f5f

Browse files
RuneAkkoCoderZhi
authored andcommitted
Refactoring unit test for config package (iotexproject#1755)
* begin to iotexproject#1682 * fix review advice * update review advice
1 parent 3e2f684 commit 11a0f5f

File tree

1 file changed

+100
-126
lines changed

1 file changed

+100
-126
lines changed

config/config_test.go

+100-126
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,82 @@ import (
2121
"github.com/iotexproject/go-pkgs/crypto"
2222
)
2323

24+
const (
25+
overwritePath = "_overwritePath"
26+
secretPath = "_secretPath"
27+
subChainPath = "_subChainPath"
28+
)
29+
30+
func makePathAndWriteFile(cfgStr, flagForPath string) (err error) {
31+
switch flagForPath {
32+
case overwritePath:
33+
_overwritePath = filepath.Join(os.TempDir(), "config.yaml")
34+
err = ioutil.WriteFile(_overwritePath, []byte(cfgStr), 0666)
35+
case secretPath:
36+
_secretPath = filepath.Join(os.TempDir(), "secret.yaml")
37+
err = ioutil.WriteFile(_secretPath, []byte(cfgStr), 0666)
38+
case subChainPath:
39+
_subChainPath = filepath.Join(os.TempDir(), "config.yaml")
40+
err = ioutil.WriteFile(_subChainPath, []byte(cfgStr), 0666)
41+
}
42+
return err
43+
}
44+
45+
func resetPathValues(t *testing.T, flagForPath []string) {
46+
for _, pathValue := range flagForPath {
47+
switch pathValue {
48+
case overwritePath:
49+
err := os.Remove(_overwritePath)
50+
_overwritePath = ""
51+
require.NoError(t, err)
52+
case secretPath:
53+
err := os.Remove(_secretPath)
54+
_secretPath = ""
55+
require.NoError(t, err)
56+
case subChainPath:
57+
err := os.Remove(_subChainPath)
58+
_subChainPath = ""
59+
require.NoError(t, err)
60+
}
61+
}
62+
}
63+
64+
func resetPathValuesWithLookupEnv(t *testing.T, oldEnv string, oldExist bool, flagForPath string) {
65+
switch flagForPath {
66+
case overwritePath:
67+
err := os.Remove(_overwritePath)
68+
require.NoError(t, err)
69+
_overwritePath = ""
70+
if oldExist {
71+
err = os.Setenv("IOTEX_TEST_NODE_TYPE", oldEnv)
72+
} else {
73+
err = os.Unsetenv("IOTEX_TEST_NODE_TYPE")
74+
}
75+
require.NoError(t, err)
76+
case subChainPath:
77+
err := os.Remove(_subChainPath)
78+
require.NoError(t, err)
79+
_subChainPath = ""
80+
if oldExist {
81+
err = os.Setenv("IOTEX_TEST_NODE_TYPE", oldEnv)
82+
} else {
83+
err = os.Unsetenv("IOTEX_TEST_NODE_TYPE")
84+
}
85+
require.NoError(t, err)
86+
}
87+
}
88+
89+
func generateProducerPrivKey() (crypto.PrivateKey, string, error) {
90+
sk, err := crypto.GenerateKey()
91+
cfgStr := fmt.Sprintf(`
92+
chain:
93+
producerPrivKey: "%s"
94+
`,
95+
sk.HexString(),
96+
)
97+
return sk, cfgStr, err
98+
}
99+
24100
func TestDB_SplitDBSize(t *testing.T) {
25101
var db = DB{SplitDBSizeMB: uint64(1)}
26102
var expected = uint64(1 * 1024 * 1024)
@@ -84,22 +160,12 @@ func TestNewConfigWithPlugins(t *testing.T) {
84160
}
85161

86162
func TestNewConfigWithOverride(t *testing.T) {
87-
sk, err := crypto.GenerateKey()
88-
require.NoError(t, err)
89-
cfgStr := fmt.Sprintf(`
90-
chain:
91-
producerPrivKey: "%s"
92-
`,
93-
sk.HexString(),
94-
)
95-
_overwritePath = filepath.Join(os.TempDir(), "config.yaml")
96-
err = ioutil.WriteFile(_overwritePath, []byte(cfgStr), 0666)
163+
sk, cfgStr, err := generateProducerPrivKey()
97164
require.NoError(t, err)
98-
defer func() {
99-
err := os.Remove(_overwritePath)
100-
_overwritePath = ""
101-
require.NoError(t, err)
102-
}()
165+
166+
require.NoError(t, makePathAndWriteFile(cfgStr, "_overwritePath"))
167+
168+
defer resetPathValues(t, []string{"_overwritePath"})
103169

104170
cfg, err := New()
105171
require.NoError(t, err)
@@ -108,36 +174,14 @@ chain:
108174
}
109175

110176
func TestNewConfigWithSecret(t *testing.T) {
111-
sk, err := crypto.GenerateKey()
112-
require.NoError(t, err)
113-
cfgStr := fmt.Sprintf(`
114-
chain:
115-
producerPrivKey: "%s"
116-
`,
117-
sk.HexString(),
118-
)
119-
_overwritePath = filepath.Join(os.TempDir(), "config.yaml")
120-
err = ioutil.WriteFile(_overwritePath, []byte(cfgStr), 0666)
177+
sk, cfgStr, err := generateProducerPrivKey()
121178
require.NoError(t, err)
122179

123-
cfgStr = fmt.Sprintf(`
124-
chain:
125-
producerPrivKey: "%s"
126-
`,
127-
sk.HexString(),
128-
)
129-
_secretPath = filepath.Join(os.TempDir(), "secret.yaml")
130-
err = ioutil.WriteFile(_secretPath, []byte(cfgStr), 0666)
131-
require.NoError(t, err)
180+
require.NoError(t, makePathAndWriteFile(cfgStr, "_overwritePath"))
132181

133-
defer func() {
134-
err := os.Remove(_overwritePath)
135-
require.NoError(t, err)
136-
_overwritePath = ""
137-
err = os.Remove(_secretPath)
138-
require.NoError(t, err)
139-
_secretPath = ""
140-
}()
182+
require.NoError(t, makePathAndWriteFile(cfgStr, "_secretPath"))
183+
184+
defer resetPathValues(t, []string{"_overwritePath", "_secretPath"})
141185

142186
cfg, err := New()
143187
require.NoError(t, err)
@@ -148,29 +192,11 @@ chain:
148192
func TestNewConfigWithLookupEnv(t *testing.T) {
149193
oldEnv, oldExist := os.LookupEnv("IOTEX_TEST_NODE_TYPE")
150194

151-
sk, err := crypto.GenerateKey()
152-
require.NoError(t, err)
153-
cfgStr := fmt.Sprintf(`
154-
chain:
155-
producerPrivKey: "%s"
156-
`,
157-
sk.HexString(),
158-
)
159-
_overwritePath = filepath.Join(os.TempDir(), "config.yaml")
160-
err = ioutil.WriteFile(_overwritePath, []byte(cfgStr), 0666)
195+
_, cfgStr, err := generateProducerPrivKey()
161196
require.NoError(t, err)
197+
require.NoError(t, makePathAndWriteFile(cfgStr, "_overwritePath"))
162198

163-
defer func() {
164-
err := os.Remove(_overwritePath)
165-
require.NoError(t, err)
166-
_overwritePath = ""
167-
if oldExist {
168-
err = os.Setenv("IOTEX_TEST_NODE_TYPE", oldEnv)
169-
} else {
170-
err = os.Unsetenv("IOTEX_TEST_NODE_TYPE")
171-
}
172-
require.NoError(t, err)
173-
}()
199+
defer resetPathValuesWithLookupEnv(t, oldEnv, oldExist, "_overwritePath")
174200

175201
cfg, err := New()
176202
require.NoError(t, err)
@@ -293,60 +319,25 @@ func TestNewSubConfigWithWrongConfigPath(t *testing.T) {
293319
}
294320

295321
func TestNewSubConfigWithSubChainPath(t *testing.T) {
296-
sk, err := crypto.GenerateKey()
297-
require.NoError(t, err)
298-
cfgStr := fmt.Sprintf(`
299-
chain:
300-
producerPrivKey: "%s"
301-
`,
302-
sk.HexString(),
303-
)
304-
_subChainPath = filepath.Join(os.TempDir(), "config.yaml")
305-
err = ioutil.WriteFile(_subChainPath, []byte(cfgStr), 0666)
322+
sk, cfgStr, err := generateProducerPrivKey()
306323
require.NoError(t, err)
307-
defer func() {
308-
err = os.Remove(_subChainPath)
309-
_subChainPath = ""
310-
require.NoError(t, err)
311-
}()
324+
require.NoError(t, makePathAndWriteFile(cfgStr, "_subChainPath"))
312325

326+
defer resetPathValues(t, []string{"_subChainPath"})
313327
cfg, err := NewSub()
314328
require.NoError(t, err)
315329
require.NotNil(t, cfg)
316330
require.Equal(t, sk.HexString(), cfg.Chain.ProducerPrivKey)
317331
}
318332

319333
func TestNewSubConfigWithSecret(t *testing.T) {
320-
sk, err := crypto.GenerateKey()
321-
require.NoError(t, err)
322-
cfgStr := fmt.Sprintf(`
323-
chain:
324-
producerPrivKey: "%s"
325-
`,
326-
sk.HexString(),
327-
)
328-
_subChainPath = filepath.Join(os.TempDir(), "config.yaml")
329-
err = ioutil.WriteFile(_subChainPath, []byte(cfgStr), 0666)
334+
sk, cfgStr, err := generateProducerPrivKey()
330335
require.NoError(t, err)
336+
require.NoError(t, makePathAndWriteFile(cfgStr, "_subChainPath"))
331337

332-
cfgStr = fmt.Sprintf(`
333-
chain:
334-
producerPrivKey: "%s"
335-
`,
336-
sk.HexString(),
337-
)
338-
_secretPath = filepath.Join(os.TempDir(), "secret.yaml")
339-
err = ioutil.WriteFile(_secretPath, []byte(cfgStr), 0666)
340-
require.NoError(t, err)
338+
require.NoError(t, makePathAndWriteFile(cfgStr, "_secretPath"))
341339

342-
defer func() {
343-
err = os.Remove(_subChainPath)
344-
require.NoError(t, err)
345-
_subChainPath = ""
346-
err = os.Remove(_secretPath)
347-
require.NoError(t, err)
348-
_secretPath = ""
349-
}()
340+
defer resetPathValues(t, []string{"_subChainPath", "_secretPath"})
350341

351342
cfg, err := NewSub()
352343
require.NoError(t, err)
@@ -357,29 +348,12 @@ chain:
357348
func TestNewSubConfigWithLookupEnv(t *testing.T) {
358349
oldEnv, oldExist := os.LookupEnv("IOTEX_TEST_NODE_TYPE")
359350

360-
sk, err := crypto.GenerateKey()
361-
require.NoError(t, err)
362-
cfgStr := fmt.Sprintf(`
363-
chain:
364-
producerPrivKey: "%s"
365-
`,
366-
sk.HexString(),
367-
)
368-
_subChainPath = filepath.Join(os.TempDir(), "config.yaml")
369-
err = ioutil.WriteFile(_subChainPath, []byte(cfgStr), 0666)
351+
_, cfgStr, err := generateProducerPrivKey()
370352
require.NoError(t, err)
371353

372-
defer func() {
373-
err = os.Remove(_subChainPath)
374-
require.NoError(t, err)
375-
_subChainPath = ""
376-
if oldExist {
377-
err = os.Setenv("IOTEX_TEST_NODE_TYPE", oldEnv)
378-
} else {
379-
err = os.Unsetenv("IOTEX_TEST_NODE_TYPE")
380-
}
381-
require.NoError(t, err)
382-
}()
354+
require.NoError(t, makePathAndWriteFile(cfgStr, "_subChainPath"))
355+
356+
defer resetPathValuesWithLookupEnv(t, oldEnv, oldExist, "_subChainPath")
383357

384358
cfg, err := NewSub()
385359
require.NoError(t, err)

0 commit comments

Comments
 (0)