integrate clustertool sourcecode
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
package chartFile
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/truecharts/private/clustertool/pkg/charts/image"
|
||||
)
|
||||
|
||||
func TestSetAppVersionFromImage(t *testing.T) {
|
||||
type TestData struct {
|
||||
chart *HelmChart
|
||||
image *image.Images
|
||||
key string
|
||||
result string
|
||||
}
|
||||
|
||||
tests := []TestData{
|
||||
{
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
AppVersion: "1.0.0",
|
||||
},
|
||||
},
|
||||
image: &image.Images{
|
||||
ImagesMap: map[string]image.ImageDetails{
|
||||
"image": {
|
||||
Repository: "nginx",
|
||||
Tag: "1.15.8",
|
||||
Link: "https://hub.docker.com/_/nginx",
|
||||
Version: "1.15.8",
|
||||
},
|
||||
},
|
||||
},
|
||||
key: "image",
|
||||
result: "1.15.8",
|
||||
},
|
||||
{
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
AppVersion: "1.0.0",
|
||||
},
|
||||
},
|
||||
image: &image.Images{
|
||||
ImagesMap: map[string]image.ImageDetails{
|
||||
"image": {
|
||||
Repository: "nginx",
|
||||
Tag: "1.15.8",
|
||||
Link: "https://hub.docker.com/_/nginx",
|
||||
Version: "1.15.8",
|
||||
},
|
||||
},
|
||||
},
|
||||
key: "nonexistent",
|
||||
result: "1.0.0",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
setAppVersionFromImage(tt.chart, tt.image, tt.key)
|
||||
if tt.chart.Metadata.AppVersion != tt.result {
|
||||
t.Errorf("Expected %s, got %s", tt.result, tt.chart.Metadata.AppVersion)
|
||||
}
|
||||
}
|
||||
}
|
||||
func TestGetTrain(t *testing.T) {
|
||||
type TestData struct {
|
||||
name string
|
||||
chart *HelmChart
|
||||
chartPath string
|
||||
result string
|
||||
}
|
||||
|
||||
tests := []TestData{
|
||||
{
|
||||
name: "Test get train from path",
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
Name: "test-chart",
|
||||
Annotations: map[string]string{
|
||||
"truecharts.org/train": "express",
|
||||
},
|
||||
},
|
||||
},
|
||||
chartPath: "../../testdata/updater/stable/my-app/Chart.yaml",
|
||||
result: "stable",
|
||||
},
|
||||
{
|
||||
name: "Test get train from annotations as fallback",
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
Name: "test-chart",
|
||||
Annotations: map[string]string{
|
||||
"truecharts.org/train": "dev",
|
||||
},
|
||||
},
|
||||
},
|
||||
// Too short path, cant detect train from path
|
||||
// so we should fallback to annotations
|
||||
chartPath: "my-app/Chart.yaml",
|
||||
result: "dev",
|
||||
},
|
||||
{
|
||||
name: "Test failing to get train from path or annotations",
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
Name: "test-chart",
|
||||
Annotations: map[string]string{},
|
||||
},
|
||||
},
|
||||
// Too short path, cant detect train from path
|
||||
// so we should fallback to annotations
|
||||
chartPath: "my-app/Chart.yaml",
|
||||
result: "unknown",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
train := GetTrain(tt.chartPath, tt.chart)
|
||||
|
||||
if train != tt.result {
|
||||
t.Errorf("Expected train to be %s, but got %s", tt.result, train)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetMetadata(t *testing.T) {
|
||||
type TestData struct {
|
||||
chart *HelmChart
|
||||
train string
|
||||
expected *HelmChart
|
||||
}
|
||||
|
||||
tests := []TestData{
|
||||
{
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
Name: "test-chart",
|
||||
Annotations: map[string]string{},
|
||||
},
|
||||
},
|
||||
train: "stable",
|
||||
expected: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
Name: "test-chart",
|
||||
Annotations: map[string]string{
|
||||
"truecharts.org/train": "stable",
|
||||
},
|
||||
Icon: "https://truecharts.org/img/hotlink-ok/chart-icons/test-chart.webp",
|
||||
Home: "https://truecharts.org/charts/stable/test-chart",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.chart.Metadata.Name, func(t *testing.T) {
|
||||
setMetadata(tt.chart, tt.train)
|
||||
|
||||
if !reflect.DeepEqual(tt.chart, tt.expected) {
|
||||
t.Errorf("Expected chart to be %v, but got %v", tt.expected, tt.chart)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateSources(t *testing.T) {
|
||||
type TestData struct {
|
||||
name string
|
||||
chart *HelmChart
|
||||
train string
|
||||
imageLinks []string
|
||||
expected []string
|
||||
}
|
||||
|
||||
tests := []TestData{
|
||||
{
|
||||
name: "Test update sources",
|
||||
chart: &HelmChart{
|
||||
Metadata: ChartMetadata{
|
||||
Name: "test-chart",
|
||||
Sources: []string{
|
||||
"",
|
||||
"https://ghcr/truecharts/some-chart",
|
||||
"https://docker.io/truecharts/some-chart",
|
||||
"https://hub.docker/truecharts/some-chart",
|
||||
"https://fleet.linuxserver/truecharts/some-chart",
|
||||
"https://mcr.microsoft/truecharts/some-chart",
|
||||
"https://github.com/truecharts/some-chart",
|
||||
"https://gallery.ecr.aws/truecharts/some-chart",
|
||||
"https://gcr/truecharts/some-chart",
|
||||
"https://quay/truecharts/some-chart",
|
||||
"http://truecharts/some-chart",
|
||||
"https://truecharts.azurecr.io/some-chart",
|
||||
"https://truecharts.ocir.io/some-chart",
|
||||
"https://unrelated.com/some-chart",
|
||||
"https://unrelated.com/some-chart",
|
||||
"https://cr.hotio.dev/truecharts/some-chart",
|
||||
},
|
||||
},
|
||||
},
|
||||
train: "stable",
|
||||
imageLinks: []string{
|
||||
"",
|
||||
"https://hub.docker.com/_/nginx",
|
||||
"https://quay.io/truecharts/test-chart",
|
||||
},
|
||||
expected: []string{
|
||||
"https://github.com/truecharts/charts/tree/master/charts/stable/test-chart",
|
||||
"https://hub.docker.com/_/nginx",
|
||||
"https://quay.io/truecharts/test-chart",
|
||||
"https://unrelated.com/some-chart",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.chart.Metadata.Name, func(t *testing.T) {
|
||||
if err := updateSources(tt.chart, tt.train, tt.imageLinks); err != nil {
|
||||
t.Errorf("Expected no error, but got %v", err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(tt.chart.Metadata.Sources, tt.expected) {
|
||||
t.Errorf("Expected chart to be %v, but got %v", tt.expected, tt.chart.Metadata.Sources)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user