Skip to content

Commit ef3b768

Browse files
test add test cases to increase coverage
1 parent 8770943 commit ef3b768

File tree

2 files changed

+82
-75
lines changed

2 files changed

+82
-75
lines changed

internal/app/tests/run_test.go

+31-75
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ var (
1616
)
1717

1818
func TestRun(t *testing.T) {
19-
t.Parallel()
20-
2119
tests := []struct {
2220
name string
2321
configPort string
@@ -38,16 +36,13 @@ func TestRun(t *testing.T) {
3836
name: "Config load error",
3937
configPort: ":0",
4038
configErr: ErrConfigLoadFailed,
41-
setupErr: nil,
42-
runErr: nil,
4339
wantErr: true,
4440
},
4541
{
4642
name: "Router setup error",
4743
configPort: ":0",
4844
configErr: nil,
4945
setupErr: ErrSetupFailed,
50-
runErr: nil,
5146
wantErr: true,
5247
},
5348
{
@@ -58,86 +53,47 @@ func TestRun(t *testing.T) {
5853
runErr: ErrRouterRunFailed,
5954
wantErr: true,
6055
},
61-
{
62-
name: "Default NewApp run",
63-
configPort: ":8082",
64-
configErr: nil,
65-
setupErr: nil,
66-
runErr: ErrRouterRunFailed,
67-
wantErr: true,
68-
},
69-
{
70-
name: "SetupRouter fails",
71-
configPort: ":0",
72-
configErr: nil,
73-
setupErr: ErrSetupFailed,
74-
runErr: nil,
75-
wantErr: true,
76-
},
77-
{
78-
name: "RunEngine fails explicitly",
79-
configPort: ":0",
80-
configErr: nil,
81-
setupErr: nil,
82-
runErr: ErrRouterRunFailed,
83-
wantErr: true,
84-
},
8556
}
8657

8758
for _, testCase := range tests {
8859
t.Run(testCase.name, func(t *testing.T) {
89-
t.Parallel()
90-
runTestCase(t, testCase)
91-
})
92-
}
93-
}
94-
95-
// runTestCase executes a single TestRun case with setup and assertions.
96-
func runTestCase(t *testing.T, testCase struct {
97-
name string
98-
configPort string
99-
configErr error
100-
setupErr error
101-
runErr error
102-
wantErr bool
103-
}) {
104-
t.Helper()
60+
appInstance := app.NewApp() // Covers lines 25-29
61+
origLoadConfig := appInstance.LoadConfig
62+
origSetupRouter := appInstance.SetupRouter
63+
origRunEngine := appInstance.RunEngine
10564

106-
appInstance := app.NewApp()
107-
origLoadConfig := appInstance.LoadConfig
108-
origSetupRouter := appInstance.SetupRouter
109-
origRunEngine := appInstance.RunEngine
65+
defer func() {
66+
appInstance.LoadConfig = origLoadConfig
67+
appInstance.SetupRouter = origSetupRouter
68+
appInstance.RunEngine = origRunEngine
69+
}()
11070

111-
defer func() {
112-
appInstance.LoadConfig = origLoadConfig
113-
appInstance.SetupRouter = origSetupRouter
114-
appInstance.RunEngine = origRunEngine
115-
}()
71+
appInstance.LoadConfig = func(_ string) (server.Config, error) {
72+
if testCase.configErr != nil {
73+
return server.Config{}, testCase.configErr // Covers 35-39
74+
}
11675

117-
appInstance.LoadConfig = func(_ string) (server.Config, error) {
118-
if testCase.configErr != nil {
119-
return server.Config{}, testCase.configErr
120-
}
76+
return server.Config{
77+
Port: testCase.configPort,
78+
StaticDir: "/tmp/static",
79+
TrustedProxies: []string{"127.0.0.1"},
80+
}, nil
81+
}
12182

122-
return server.Config{
123-
Port: testCase.configPort,
124-
StaticDir: "/tmp/static",
125-
TrustedProxies: []string{"127.0.0.1"},
126-
}, nil
127-
}
83+
appInstance.SetupRouter = func(_ server.Config, _, _ gin.HandlerFunc) (*gin.Engine, error) {
84+
if testCase.setupErr != nil {
85+
return nil, testCase.setupErr // Covers 41-44
86+
}
12887

129-
appInstance.SetupRouter = func(_ server.Config, _, _ gin.HandlerFunc) (*gin.Engine, error) {
130-
if testCase.setupErr != nil {
131-
return nil, testCase.setupErr
132-
}
88+
return gin.New(), nil
89+
}
13390

134-
return gin.New(), nil
135-
}
91+
appInstance.RunEngine = func(_ *gin.Engine, _ string) error {
92+
return testCase.runErr // Covers 46
93+
}
13694

137-
appInstance.RunEngine = func(_ *gin.Engine, _ string) error {
138-
return testCase.runErr
95+
err := appInstance.Run()
96+
assertRunError(t, err, testCase.wantErr, testCase.runErr)
97+
})
13998
}
140-
141-
err := appInstance.Run()
142-
assertRunError(t, err, testCase.wantErr, testCase.runErr)
14399
}

internal/eui64/tests/calculator_test.go

+51
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,45 @@ func TestCalculateEUI64(t *testing.T) {
146146
wantFullIP: "",
147147
wantErr: "invalid empty hextet",
148148
},
149+
{
150+
name: "Invalid MAC parse",
151+
mac: "invalid-mac",
152+
prefix: "2001:0db8",
153+
wantInterfaceID: "",
154+
wantFullIP: "",
155+
wantErr: "parsing MAC address failed", // Covers 48-52
156+
},
157+
{
158+
name: "GenerateInterfaceID only",
159+
mac: "00-14-22-01-23-45",
160+
prefix: "",
161+
wantInterfaceID: "0214:22ff:fe01:2345",
162+
wantFullIP: "", // Covers 58-61, parts of 74-84
163+
},
164+
{
165+
name: "Invalid MAC length",
166+
mac: "00-14-22-01-23-45-67", // 7 bytes
167+
prefix: "2001:0db8",
168+
wantInterfaceID: "",
169+
wantFullIP: "",
170+
wantErr: "parsing MAC address failed", // Covers 54-56 indirectly via ParseMAC
171+
},
172+
{
173+
name: "Invalid prefix too long",
174+
mac: "00-14-22-01-23-45",
175+
prefix: "2001:0db8:85a3:0000:1234",
176+
wantInterfaceID: "",
177+
wantFullIP: "",
178+
wantErr: "IPv6 prefix exceeds 4 hextets", // Covers 63-66, 88-94
179+
},
180+
{
181+
name: "Prefix with full IP",
182+
mac: "00-14-22-01-23-45",
183+
prefix: "2001:0db8:85a3:0000",
184+
wantInterfaceID: "0214:22ff:fe01:2345",
185+
wantFullIP: "2001:db8:85a3:0:214:22ff:fe01:2345",
186+
wantErr: "", // Covers 68-70, parts of 115-148
187+
},
149188
}
150189

151190
for _, tt := range tests {
@@ -248,6 +287,18 @@ func TestParsePrefix(t *testing.T) {
248287
wantParts: nil,
249288
wantErr: "invalid hextet in IPv6 prefix: \"xyz\"",
250289
},
290+
{
291+
name: "Empty hextet in middle",
292+
prefix: "2001::85a3",
293+
wantParts: nil,
294+
wantErr: "invalid empty hextet", // Covers 105-108
295+
},
296+
{
297+
name: "Invalid hextet char",
298+
prefix: "2001:0db8:xyz",
299+
wantParts: nil,
300+
wantErr: "invalid hextet in IPv6 prefix", // Covers 96-100, 102
301+
},
251302
}
252303

253304
for _, testCase := range tests {

0 commit comments

Comments
 (0)