Skip to content

Commit 469d8e9

Browse files
committed
Add unit test for ParseNginxSize
1 parent 87a033c commit 469d8e9

File tree

2 files changed

+79
-5
lines changed

2 files changed

+79
-5
lines changed

internal/controller/nginx/config/policies/proxysettings/validator.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,14 @@ func validateBusyBufferSizeRelationships(buffering ngfAPI.ProxyBuffering, fieldP
130130
return nil
131131
}
132132

133-
busyBuffersSize, err := parseNginxSize(string(*buffering.BusyBuffersSize))
133+
busyBuffersSize, err := ParseNginxSize(string(*buffering.BusyBuffersSize))
134134
if err != nil {
135135
return nil // Skip validation if size is invalid (will be caught by other validation)
136136
}
137137

138138
// Validate: busyBuffersSize > bufferSize
139139
if buffering.BufferSize != nil {
140-
bufferSize, err := parseNginxSize(string(*buffering.BufferSize))
140+
bufferSize, err := ParseNginxSize(string(*buffering.BufferSize))
141141
if err == nil && busyBuffersSize <= bufferSize {
142142
path := fieldPath.Child("busyBuffersSize")
143143
allErrs = append(allErrs, field.Invalid(
@@ -150,7 +150,7 @@ func validateBusyBufferSizeRelationships(buffering ngfAPI.ProxyBuffering, fieldP
150150

151151
// Validate: busyBuffersSize < (buffers.number * buffers.size) - buffers.size
152152
if buffering.Buffers != nil {
153-
buffersSize, err := parseNginxSize(string(buffering.Buffers.Size))
153+
buffersSize, err := ParseNginxSize(string(buffering.Buffers.Size))
154154
if err == nil {
155155
totalBufferSpace := buffersSize * int64(buffering.Buffers.Number)
156156
maxBusyBuffersSize := totalBufferSpace - buffersSize
@@ -168,9 +168,9 @@ func validateBusyBufferSizeRelationships(buffering ngfAPI.ProxyBuffering, fieldP
168168
return allErrs
169169
}
170170

171-
// parseNginxSize parses an NGINX size string (e.g., "8k", "16m", "1024") and returns the size in bytes.
171+
// ParseNginxSize parses an NGINX size string (e.g., "8k", "16m", "1024") and returns the size in bytes.
172172
// Returns an error if the size string is invalid.
173-
func parseNginxSize(size string) (int64, error) {
173+
func ParseNginxSize(size string) (int64, error) {
174174
size = strings.TrimSpace(strings.ToLower(size))
175175
if size == "" {
176176
return 0, strconv.ErrSyntax

internal/controller/nginx/config/policies/proxysettings/validator_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,3 +310,77 @@ func TestValidator_ConflictsPanics(t *testing.T) {
310310

311311
g.Expect(conflicts).To(Panic())
312312
}
313+
314+
func TestParseNginxSize(t *testing.T) {
315+
t.Parallel()
316+
tests := []struct {
317+
name string
318+
input string
319+
expectedBytes int64
320+
expectError bool
321+
}{
322+
{
323+
name: "bytes without unit",
324+
input: "1024",
325+
expectedBytes: 1024,
326+
expectError: false,
327+
},
328+
{
329+
name: "kilobytes",
330+
input: "8k",
331+
expectedBytes: 8 * 1024,
332+
expectError: false,
333+
},
334+
{
335+
name: "megabytes",
336+
input: "16m",
337+
expectedBytes: 16 * 1024 * 1024,
338+
expectError: false,
339+
},
340+
{
341+
name: "gigabytes",
342+
input: "2g",
343+
expectedBytes: 2 * 1024 * 1024 * 1024,
344+
expectError: false,
345+
},
346+
{
347+
name: "single digit",
348+
input: "4",
349+
expectedBytes: 4,
350+
expectError: false,
351+
},
352+
{
353+
name: "four digits maximum",
354+
input: "9999",
355+
expectedBytes: 9999,
356+
expectError: false,
357+
},
358+
{
359+
name: "four digits with unit",
360+
input: "1024k",
361+
expectedBytes: 1024 * 1024,
362+
expectError: false,
363+
},
364+
{
365+
name: "invalid input - non-numeric",
366+
input: "abc",
367+
expectError: true,
368+
},
369+
}
370+
371+
for _, test := range tests {
372+
t.Run(test.name, func(t *testing.T) {
373+
t.Parallel()
374+
g := NewWithT(t)
375+
376+
result, err := proxysettings.ParseNginxSize(test.input)
377+
378+
if test.expectError {
379+
g.Expect(err).To(HaveOccurred())
380+
} else {
381+
g.Expect(err).ToNot(HaveOccurred())
382+
g.Expect(result).To(Equal(test.expectedBytes))
383+
}
384+
})
385+
}
386+
}

0 commit comments

Comments
 (0)