summaryrefslogtreecommitdiffstats
path: root/stream/stream_test.go
blob: b946af7c78fe76f05d40a0c4cd977ae140f3d9e0 (plain)
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
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")
}