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  }