Skip to content

Commit 2baa05e

Browse files
committed
add tests for convertion to base 64 server/s
1 parent 405dc5c commit 2baa05e

File tree

1 file changed

+254
-0
lines changed

1 file changed

+254
-0
lines changed

internal/pkg/utils/utils_test.go

Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package utils
33
import (
44
"reflect"
55
"testing"
6+
"time"
67

78
sdkConfig "github.com/stackitcloud/stackit-sdk-go/core/config"
9+
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
810

911
"github.com/spf13/viper"
1012
"github.com/stackitcloud/stackit-cli/internal/pkg/config"
@@ -248,3 +250,255 @@ func TestConvertStringMapToInterfaceMap(t *testing.T) {
248250
})
249251
}
250252
}
253+
254+
func TestConvertToBase64PatchedServer(t *testing.T) {
255+
now := time.Now()
256+
userData := []byte("test")
257+
emptyUserData := []byte("")
258+
259+
tests := []struct {
260+
name string
261+
input *iaas.Server
262+
expected *Base64PatchedServer
263+
}{
264+
{
265+
name: "nil input",
266+
input: nil,
267+
expected: nil,
268+
},
269+
{
270+
name: "server with user data",
271+
input: &iaas.Server{
272+
Id: Ptr("server-123"),
273+
Name: Ptr("test-server"),
274+
Status: Ptr("ACTIVE"),
275+
AvailabilityZone: Ptr("eu01-1"),
276+
MachineType: Ptr("t1.1"),
277+
UserData: &userData,
278+
CreatedAt: &now,
279+
PowerStatus: Ptr("RUNNING"),
280+
AffinityGroup: Ptr("group-1"),
281+
ImageId: Ptr("image-123"),
282+
KeypairName: Ptr("keypair-1"),
283+
},
284+
expected: &Base64PatchedServer{
285+
Id: Ptr("server-123"),
286+
Name: Ptr("test-server"),
287+
Status: Ptr("ACTIVE"),
288+
AvailabilityZone: Ptr("eu01-1"),
289+
MachineType: Ptr("t1.1"),
290+
UserData: Ptr(Base64Bytes(userData)),
291+
CreatedAt: &now,
292+
PowerStatus: Ptr("RUNNING"),
293+
AffinityGroup: Ptr("group-1"),
294+
ImageId: Ptr("image-123"),
295+
KeypairName: Ptr("keypair-1"),
296+
},
297+
},
298+
{
299+
name: "server with empty user data",
300+
input: &iaas.Server{
301+
Id: Ptr("server-456"),
302+
Name: Ptr("test-server-2"),
303+
Status: Ptr("STOPPED"),
304+
AvailabilityZone: Ptr("eu01-2"),
305+
MachineType: Ptr("t1.2"),
306+
UserData: &emptyUserData,
307+
},
308+
expected: &Base64PatchedServer{
309+
Id: Ptr("server-456"),
310+
Name: Ptr("test-server-2"),
311+
Status: Ptr("STOPPED"),
312+
AvailabilityZone: Ptr("eu01-2"),
313+
MachineType: Ptr("t1.2"),
314+
UserData: Ptr(Base64Bytes(emptyUserData)),
315+
},
316+
},
317+
{
318+
name: "server without user data",
319+
input: &iaas.Server{
320+
Id: Ptr("server-789"),
321+
Name: Ptr("test-server-3"),
322+
Status: Ptr("CREATING"),
323+
AvailabilityZone: Ptr("eu01-3"),
324+
MachineType: Ptr("t1.3"),
325+
UserData: nil,
326+
},
327+
expected: &Base64PatchedServer{
328+
Id: Ptr("server-789"),
329+
Name: Ptr("test-server-3"),
330+
Status: Ptr("CREATING"),
331+
AvailabilityZone: Ptr("eu01-3"),
332+
MachineType: Ptr("t1.3"),
333+
UserData: nil,
334+
},
335+
},
336+
}
337+
338+
for _, tt := range tests {
339+
t.Run(tt.name, func(t *testing.T) {
340+
result := ConvertToBase64PatchedServer(tt.input)
341+
342+
if result == nil && tt.expected == nil {
343+
return
344+
}
345+
346+
if (result == nil && tt.expected != nil) || (result != nil && tt.expected == nil) {
347+
t.Errorf("ConvertToBase64PatchedServer() = %v, want %v", result, tt.expected)
348+
return
349+
}
350+
351+
if !reflect.DeepEqual(result, tt.expected) {
352+
t.Errorf("ConvertToBase64PatchedServer() = %v, want %v", result, tt.expected)
353+
}
354+
})
355+
}
356+
}
357+
358+
func TestConvertToBase64PatchedServers(t *testing.T) {
359+
now := time.Now()
360+
userData1 := []byte("test1")
361+
userData2 := []byte("test2")
362+
emptyUserData := []byte("")
363+
364+
tests := []struct {
365+
name string
366+
input []iaas.Server
367+
expected []Base64PatchedServer
368+
}{
369+
{
370+
name: "nil input",
371+
input: nil,
372+
expected: nil,
373+
},
374+
{
375+
name: "empty slice",
376+
input: []iaas.Server{},
377+
expected: []Base64PatchedServer{},
378+
},
379+
{
380+
name: "single server with user data",
381+
input: []iaas.Server{
382+
{
383+
Id: Ptr("server-1"),
384+
Name: Ptr("test-server-1"),
385+
Status: Ptr("ACTIVE"),
386+
MachineType: Ptr("t1.1"),
387+
AvailabilityZone: Ptr("eu01-1"),
388+
UserData: &userData1,
389+
CreatedAt: &now,
390+
},
391+
},
392+
expected: []Base64PatchedServer{
393+
{
394+
Id: Ptr("server-1"),
395+
Name: Ptr("test-server-1"),
396+
Status: Ptr("ACTIVE"),
397+
MachineType: Ptr("t1.1"),
398+
AvailabilityZone: Ptr("eu01-1"),
399+
UserData: Ptr(Base64Bytes(userData1)),
400+
CreatedAt: &now,
401+
},
402+
},
403+
},
404+
{
405+
name: "multiple servers mixed",
406+
input: []iaas.Server{
407+
{
408+
Id: Ptr("server-1"),
409+
Name: Ptr("test-server-1"),
410+
Status: Ptr("ACTIVE"),
411+
MachineType: Ptr("t1.1"),
412+
AvailabilityZone: Ptr("eu01-1"),
413+
UserData: &userData1,
414+
CreatedAt: &now,
415+
},
416+
{
417+
Id: Ptr("server-2"),
418+
Name: Ptr("test-server-2"),
419+
Status: Ptr("STOPPED"),
420+
MachineType: Ptr("t1.2"),
421+
AvailabilityZone: Ptr("eu01-2"),
422+
UserData: &userData2,
423+
},
424+
{
425+
Id: Ptr("server-3"),
426+
Name: Ptr("test-server-3"),
427+
Status: Ptr("CREATING"),
428+
MachineType: Ptr("t1.3"),
429+
AvailabilityZone: Ptr("eu01-3"),
430+
UserData: &emptyUserData,
431+
},
432+
{
433+
Id: Ptr("server-4"),
434+
Name: Ptr("test-server-4"),
435+
Status: Ptr("ERROR"),
436+
MachineType: Ptr("t1.4"),
437+
AvailabilityZone: Ptr("eu01-4"),
438+
UserData: nil,
439+
},
440+
},
441+
expected: []Base64PatchedServer{
442+
{
443+
Id: Ptr("server-1"),
444+
Name: Ptr("test-server-1"),
445+
Status: Ptr("ACTIVE"),
446+
MachineType: Ptr("t1.1"),
447+
AvailabilityZone: Ptr("eu01-1"),
448+
UserData: Ptr(Base64Bytes(userData1)),
449+
CreatedAt: &now,
450+
},
451+
{
452+
Id: Ptr("server-2"),
453+
Name: Ptr("test-server-2"),
454+
Status: Ptr("STOPPED"),
455+
MachineType: Ptr("t1.2"),
456+
AvailabilityZone: Ptr("eu01-2"),
457+
UserData: Ptr(Base64Bytes(userData2)),
458+
},
459+
{
460+
Id: Ptr("server-3"),
461+
Name: Ptr("test-server-3"),
462+
Status: Ptr("CREATING"),
463+
MachineType: Ptr("t1.3"),
464+
AvailabilityZone: Ptr("eu01-3"),
465+
UserData: Ptr(Base64Bytes(emptyUserData)),
466+
},
467+
{
468+
Id: Ptr("server-4"),
469+
Name: Ptr("test-server-4"),
470+
Status: Ptr("ERROR"),
471+
MachineType: Ptr("t1.4"),
472+
AvailabilityZone: Ptr("eu01-4"),
473+
UserData: nil,
474+
},
475+
},
476+
},
477+
}
478+
479+
for _, tt := range tests {
480+
t.Run(tt.name, func(t *testing.T) {
481+
result := ConvertToBase64PatchedServers(tt.input)
482+
483+
if result == nil && tt.expected == nil {
484+
return
485+
}
486+
487+
if (result == nil && tt.expected != nil) || (result != nil && tt.expected == nil) {
488+
t.Errorf("ConvertToBase64PatchedServers() = %v, want %v", result, tt.expected)
489+
return
490+
}
491+
492+
if len(result) != len(tt.expected) {
493+
t.Errorf("ConvertToBase64PatchedServers() length = %d, want %d", len(result), len(tt.expected))
494+
return
495+
}
496+
497+
for i, server := range result {
498+
if !reflect.DeepEqual(server, tt.expected[i]) {
499+
t.Errorf("ConvertToBase64PatchedServers() [%d] = %v, want %v", i, server, tt.expected[i])
500+
}
501+
}
502+
})
503+
}
504+
}

0 commit comments

Comments
 (0)