-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprovider_test.go
More file actions
87 lines (73 loc) · 3.13 KB
/
provider_test.go
File metadata and controls
87 lines (73 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// SPDX-FileCopyrightText: 2025 SAP SE or an SAP affiliate company
// SPDX-License-Identifier: Apache-2.0
package cloudprofilesync_test
import (
"encoding/json"
"github.com/gardener/gardener/pkg/apis/core/v1beta1"
"github.com/ironcore-dev/gardener-extension-provider-ironcore-metal/pkg/apis/metal/v1alpha1"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/cobaltcore-dev/cloud-profile-sync/cloudprofilesync"
)
var _ = Describe("IroncoreProvider", func() {
provider := &cloudprofilesync.IroncoreProvider{
Registry: "registry.io",
Repository: "repo",
ImageName: "test",
}
It("should add an image to the provider config", func() {
var cpSpec v1beta1.CloudProfileSpec
versions := []cloudprofilesync.SourceImage{{Version: "v1.0.0", Architectures: []string{"amd64"}}}
Expect(provider.Configure(&cpSpec, versions)).To(Succeed())
Expect(cpSpec.ProviderConfig).ToNot(BeNil())
var providerConfig v1alpha1.CloudProfileConfig
Expect(json.Unmarshal(cpSpec.ProviderConfig.Raw, &providerConfig)).To(Succeed())
Expect(providerConfig.MachineImages).To(HaveLen(1))
Expect(providerConfig.MachineImages[0].Name).To(Equal("test"))
Expect(providerConfig.MachineImages[0].Versions).To(HaveLen(1))
Expect(providerConfig.MachineImages[0].Versions[0].Version).To(Equal("v1.0.0"))
Expect(providerConfig.MachineImages[0].Versions[0].Image).To(Equal("registry.io/repo:v1.0.0"))
Expect(providerConfig.MachineImages[0].Versions[0].Architecture).To(HaveValue(Equal("amd64")))
})
It("should multiply out architectures", func() {
var cpSpec v1beta1.CloudProfileSpec
versions := []cloudprofilesync.SourceImage{
{Version: "v1.0.0", Architectures: []string{"amd64", "arm64"}},
}
Expect(provider.Configure(&cpSpec, versions)).To(Succeed())
Expect(cpSpec.ProviderConfig).ToNot(BeNil())
var providerConfig v1alpha1.CloudProfileConfig
Expect(json.Unmarshal(cpSpec.ProviderConfig.Raw, &providerConfig)).To(Succeed())
Expect(providerConfig.MachineImages).To(HaveLen(1))
Expect(providerConfig.MachineImages[0].Name).To(Equal("test"))
amd64 := "amd64"
arm64 := "arm64"
Expect(providerConfig.MachineImages[0].Versions).To(ConsistOf([]v1alpha1.MachineImageVersion{
{
Version: "v1.0.0",
Image: "registry.io/repo:v1.0.0",
Architecture: &amd64,
},
{
Version: "v1.0.0",
Image: "registry.io/repo:v1.0.0",
Architecture: &arm64,
},
}))
})
It("should not add duplicate images", func() {
var cpSpec v1beta1.CloudProfileSpec
versions := []cloudprofilesync.SourceImage{
{Version: "v1.0.0", Architectures: []string{"amd64"}},
{Version: "v1.0.0", Architectures: []string{"arm64"}},
}
Expect(provider.Configure(&cpSpec, versions)).To(Succeed())
Expect(provider.Configure(&cpSpec, versions)).To(Succeed())
Expect(cpSpec.ProviderConfig).ToNot(BeNil())
var providerConfig v1alpha1.CloudProfileConfig
Expect(json.Unmarshal(cpSpec.ProviderConfig.Raw, &providerConfig)).To(Succeed())
Expect(providerConfig.MachineImages).To(HaveLen(1))
Expect(providerConfig.MachineImages[0].Name).To(Equal("test"))
Expect(providerConfig.MachineImages[0].Versions).To(HaveLen(2))
})
})