summaryrefslogtreecommitdiffstats
path: root/stream/stream_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'stream/stream_test.go')
-rw-r--r--stream/stream_test.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/stream/stream_test.go b/stream/stream_test.go
new file mode 100644
index 0000000..b946af7
--- /dev/null
+++ b/stream/stream_test.go
@@ -0,0 +1,73 @@
+package stream
+
+import (
+ "encoding/json"
+ "os"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestParseFCS(t *testing.T) {
+ d, err := os.ReadFile("fixtures/fcos-stream.json")
+ assert.Nil(t, err)
+ stream := Stream{}
+ err = json.Unmarshal(d, &stream)
+ assert.Nil(t, err)
+ assert.Equal(t, stream.Stream, "stable")
+ assert.Equal(t, stream.Architectures["x86_64"].Artifacts["metal"].Formats["raw.xz"].Disk.Sha256, "2848b111a6917455686f38a3ce64d2321c33809b9cf796c5f6804b1c02d79d9d")
+ assert.Equal(t, stream.Architectures["x86_64"].Images.Aws.Regions["us-east-2"].Image, "ami-091b0dbc05fe2dc06")
+ assert.Equal(t, stream.Architectures["x86_64"].Images.Aliyun.Regions["eu-west-1"].Image, "m-d7o3sn3qtbax50wep8ra")
+
+ ami, err := stream.GetAMI("x86_64", "us-east-2")
+ assert.Nil(t, err)
+ assert.Equal(t, ami, "ami-091b0dbc05fe2dc06")
+
+ aliyunImage, err := stream.GetAliyunImage("x86_64", "eu-west-1")
+ assert.Nil(t, err)
+ assert.Equal(t, aliyunImage, "m-d7o3sn3qtbax50wep8ra")
+
+ assert.Equal(t, "stable/x86_64", stream.FormatPrefix("x86_64"))
+
+ // I hope I live to see the day when we might change this code to test for success and not error
+ _, err = stream.GetAMI("x86_64", "mars-1")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "stable/x86_64: No AWS images in region mars-1")
+
+ _, err = stream.GetAMI("aarch64", "us-east-2")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "stream:stable does not have architecture 'aarch64'")
+
+ _, err = stream.GetAliyunImage("x86_64", "us-midwest-1")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "stable/x86_64: No Aliyun images in region us-midwest-1")
+
+ _, err = stream.GetAliyunImage("aarch64", "us-east-2")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "stream:stable does not have architecture 'aarch64'")
+
+ a, err := stream.QueryDisk("x86_64", "metal", "iso")
+ assert.Nil(t, err)
+ assert.Equal(t, a.Location, "https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/33.20201201.3.0/x86_64/fedora-coreos-33.20201201.3.0-live.x86_64.iso")
+
+ name, err := a.Name()
+ assert.Nil(t, err)
+ assert.Equal(t, name, "fedora-coreos-33.20201201.3.0-live.x86_64.iso")
+
+ _, err = stream.QueryDisk("x86_64", "metal", "nosuchthing")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "disk not found")
+ _, err = stream.QueryDisk("x86_64", "mysterious-obelisk", "rune")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "artifact 'mysterious-obelisk' not found")
+ _, err = stream.QueryDisk("nonarch", "", "nosuchthing")
+ assert.NotNil(t, err)
+ assert.Contains(t, err.Error(), "does not have architecture 'nonarch'")
+
+ assert.Equal(t, stream.Architectures["x86_64"].Images.KubeVirt, &ContainerImage{
+ Release: "33.20211201.3.0",
+ Image: "quay.io/openshift-release-dev/rhcos:latest",
+ DigestRef: "quay.io/openshift-release-dev/rhcos@sha256:67a81539946ec0397196c145394553b8e0241acf27b14ae9de43bc56e167f773",
+ })
+ assert.Equal(t, stream.Architectures["x86_64"].Artifacts["kubevirt"].Formats["ociarchive"].Disk.Sha256, "2be55c5aa1f53eb9a869826dacbab75706ee6bd59185b935ac9be546cc132a85")
+}