github.com/docker/cnab-to-oci@v0.3.0-beta4/tests/helpers.go (about) 1 package tests 2 3 import ( 4 "github.com/cnabio/cnab-go/bundle" 5 "github.com/cnabio/cnab-go/bundle/definition" 6 "github.com/docker/cnab-to-oci/relocation" 7 "github.com/docker/distribution/manifest/schema2" 8 ocischema "github.com/opencontainers/image-spec/specs-go" 9 ocischemav1 "github.com/opencontainers/image-spec/specs-go/v1" 10 ) 11 12 // MakeTestBundle creates a simple bundle for tests 13 func MakeTestBundle() *bundle.Bundle { 14 return &bundle.Bundle{ 15 SchemaVersion: "v1.0.0", 16 Actions: map[string]bundle.Action{ 17 "action-1": { 18 Modifies: true, 19 }, 20 }, 21 Credentials: map[string]bundle.Credential{ 22 "cred-1": { 23 Location: bundle.Location{ 24 EnvironmentVariable: "env-var", 25 Path: "/some/path", 26 }, 27 }, 28 }, 29 Description: "description", 30 Images: map[string]bundle.Image{ 31 "image-1": { 32 BaseImage: bundle.BaseImage{ 33 Image: "my.registry/namespace/image-1", 34 ImageType: "oci", 35 MediaType: "application/vnd.oci.image.manifest.v1+json", 36 Size: 507, 37 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0341", 38 }, 39 }, 40 "another-image": { 41 BaseImage: bundle.BaseImage{ 42 Image: "my.registry/namespace/another-image", 43 ImageType: "oci", 44 MediaType: "application/vnd.oci.image.manifest.v1+json", 45 Size: 507, 46 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0342", 47 }, 48 }, 49 }, 50 InvocationImages: []bundle.InvocationImage{ 51 { 52 BaseImage: bundle.BaseImage{ 53 Image: "my.registry/namespace/my-app-invoc", 54 ImageType: "docker", 55 MediaType: "application/vnd.docker.distribution.manifest.v2+json", 56 Size: 506, 57 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0343", 58 }, 59 }, 60 }, 61 Keywords: []string{"keyword1", "keyword2"}, 62 Maintainers: []bundle.Maintainer{ 63 { 64 Email: "docker@docker.com", 65 Name: "docker", 66 URL: "docker.com", 67 }, 68 }, 69 Name: "my-app", 70 Definitions: map[string]*definition.Schema{ 71 "param1Type": { 72 Enum: []interface{}{"value1", true, float64(1)}, 73 Type: []interface{}{"string", "boolean", "number"}, 74 Default: "hello", 75 }, 76 "output1Type": { 77 Type: "string", 78 }, 79 }, 80 Parameters: map[string]bundle.Parameter{ 81 "param1": { 82 Definition: "param1Type", 83 Destination: &bundle.Location{ 84 EnvironmentVariable: "env_var", 85 Path: "/some/path", 86 }, 87 }, 88 }, 89 Outputs: map[string]bundle.Output{ 90 "output1": { 91 Definition: "output1Type", 92 Description: "magic", 93 ApplyTo: []string{"install"}, 94 Path: "/cnab/app/outputs/magic", 95 }, 96 }, 97 Custom: map[string]interface{}{ 98 "my-key": "my-value", 99 }, 100 Version: "0.1.0", 101 } 102 } 103 104 // MakeTestOCIIndex creates a dummy OCI index for tests 105 func MakeTestOCIIndex() *ocischemav1.Index { 106 return &ocischemav1.Index{ 107 Versioned: ocischema.Versioned{ 108 SchemaVersion: 2, 109 }, 110 Annotations: map[string]string{ 111 "io.cnab.runtime_version": "v1.0.0", 112 ocischemav1.AnnotationTitle: "my-app", 113 ocischemav1.AnnotationVersion: "0.1.0", 114 ocischemav1.AnnotationDescription: "description", 115 ocischemav1.AnnotationAuthors: `[{"name":"docker","email":"docker@docker.com","url":"docker.com"}]`, 116 "io.cnab.keywords": `["keyword1","keyword2"]`, 117 "org.opencontainers.artifactType": "application/vnd.cnab.manifest.v1", 118 }, 119 Manifests: []ocischemav1.Descriptor{ 120 { 121 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0341", 122 MediaType: schema2.MediaTypeManifest, 123 Size: 315, 124 Annotations: map[string]string{ 125 "io.cnab.manifest.type": "config", 126 }, 127 }, 128 { 129 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0343", 130 MediaType: "application/vnd.docker.distribution.manifest.v2+json", 131 Size: 506, 132 Annotations: map[string]string{ 133 "io.cnab.manifest.type": "invocation", 134 }, 135 }, 136 { 137 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0342", 138 MediaType: "application/vnd.oci.image.manifest.v1+json", 139 Size: 507, 140 Annotations: map[string]string{ 141 "io.cnab.manifest.type": "component", 142 "io.cnab.component.name": "another-image", 143 }, 144 }, 145 { 146 Digest: "sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0341", 147 MediaType: "application/vnd.oci.image.manifest.v1+json", 148 Size: 507, 149 Annotations: map[string]string{ 150 "io.cnab.manifest.type": "component", 151 "io.cnab.component.name": "image-1", 152 }, 153 }, 154 }, 155 } 156 } 157 158 // MakeRelocationMap generates a fake relocation map 159 func MakeRelocationMap() relocation.ImageRelocationMap { 160 return relocation.ImageRelocationMap{ 161 "my.registry/namespace/image-1": "my.registry/namespace/my-app@sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0341", 162 "my.registry/namespace/another-image": "my.registry/namespace/my-app@sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0342", 163 "my.registry/namespace/my-app-invoc": "my.registry/namespace/my-app@sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0343", 164 } 165 }