@@ -4,21 +4,20 @@ import (
44 "encoding/json"
55 "fmt"
66
7+ "github.com/mandelsoft/goutils/testutils"
78 . "github.com/onsi/ginkgo/v2"
89 . "github.com/onsi/gomega"
910 . "ocm.software/ocm/api/helper/builder"
1011 . "ocm.software/ocm/api/oci/testhelper"
1112
12- "github.com/mandelsoft/goutils/testutils"
13-
1413 "ocm.software/ocm/api/oci"
1514 "ocm.software/ocm/api/oci/artdesc"
1615 "ocm.software/ocm/api/oci/extensions/repositories/artifactset"
1716 metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1"
1817 "ocm.software/ocm/api/ocm/extensions/accessmethods/ociartifact"
1918 resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes"
2019 "ocm.software/ocm/api/ocm/extensions/repositories/ctf"
21- ocmutils "ocm.software/ocm/api/ocm/ocmutils"
20+ "ocm.software/ocm/api/ocm/ocmutils"
2221 "ocm.software/ocm/api/ocm/tools/transfer"
2322 "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/spiff"
2423 "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard"
@@ -295,4 +294,99 @@ process: (( (*(rules[mode] || rules.default)).process ))
295294 Expect (err ).To (Succeed ())
296295 })
297296 })
297+
298+ Context ("test omit access type option" , func () {
299+ var env * Builder
300+ testOciAccess := ociartifact .New (oci .StandardOCIRef (OCIHOST + ".alias" , OCINAMESPACE2 , OCIVERSION ))
301+
302+ BeforeEach (func () {
303+ env = NewBuilder ()
304+
305+ FakeOCIRepo (env , OCIPATH , OCIHOST )
306+
307+ env .OCICommonTransport (OCIPATH , accessio .FormatDirectory , func () {
308+ OCIManifest2 (env )
309+ })
310+
311+ env .OCMCommonTransport (ARCH , accessio .FormatDirectory , func () {
312+ env .Component (COMPONENT , func () {
313+ env .Version (VERSION , func () {
314+ env .Provider (PROVIDER )
315+ env .Resource ("ref" , "" , resourcetypes .OCI_IMAGE , metav1 .LocalRelation , func () {
316+ env .Access (
317+ testOciAccess ,
318+ )
319+ })
320+ })
321+ })
322+ })
323+
324+ env .OCMCommonTransport (ARCH2 , accessio .FormatDirectory , func () {
325+ env .Component (COMPONENT2 , func () {
326+ env .Version (VERSION , func () {
327+ env .Reference ("ref" , COMPONENT , VERSION )
328+ env .Provider (PROVIDER )
329+ })
330+ })
331+ })
332+ })
333+
334+ AfterEach (func () {
335+ env .Cleanup ()
336+ })
337+
338+ It ("should omit oci access" , func () {
339+ src , err := ctf .Open (env .OCMContext (), accessobj .ACC_READONLY , ARCH , 0 , env )
340+ Expect (err ).To (Succeed ())
341+ cv , err := src .LookupComponentVersion (COMPONENT , VERSION )
342+ Expect (err ).To (Succeed ())
343+ tgt , err := ctf .Create (env .OCMContext (), accessobj .ACC_WRITABLE | accessobj .ACC_CREATE , OUT , 0o700 , accessio .FormatDirectory , env )
344+ Expect (err ).To (Succeed ())
345+ defer tgt .Close ()
346+
347+ handler , err := spiff .New (standard .ResourcesByValue (), standard .AddOmittedAccessTypes (ociartifact .Type ))
348+ Expect (err ).To (Succeed ())
349+ err = transfer .TransferVersion (nil , nil , cv , tgt , handler )
350+ Expect (err ).To (Succeed ())
351+ Expect (env .DirExists (OUT )).To (BeTrue ())
352+
353+ list , err := tgt .ComponentLister ().GetComponents ("" , true )
354+ Expect (err ).To (Succeed ())
355+ Expect (list ).To (Equal ([]string {COMPONENT }))
356+ comp , err := tgt .LookupComponentVersion (COMPONENT , VERSION )
357+ Expect (err ).To (Succeed ())
358+ Expect (len (comp .GetDescriptor ().Resources )).To (Equal (1 ))
359+
360+ acc := comp .GetDescriptor ().Resources [0 ].Access
361+ Expect (acc ).To (testutils .YAMLEqual (testOciAccess ))
362+ })
363+
364+ It ("should not omit oci access" , func () {
365+ src , err := ctf .Open (env .OCMContext (), accessobj .ACC_READONLY , ARCH , 0 , env )
366+ Expect (err ).To (Succeed ())
367+ cv , err := src .LookupComponentVersion (COMPONENT , VERSION )
368+ Expect (err ).To (Succeed ())
369+ tgt , err := ctf .Create (env .OCMContext (), accessobj .ACC_WRITABLE | accessobj .ACC_CREATE , OUT , 0o700 , accessio .FormatDirectory , env )
370+ Expect (err ).To (Succeed ())
371+ defer tgt .Close ()
372+
373+ handler , err := spiff .New (standard .ResourcesByValue ())
374+ Expect (err ).To (Succeed ())
375+ err = transfer .TransferVersion (nil , nil , cv , tgt , handler )
376+ Expect (err ).To (Succeed ())
377+ Expect (env .DirExists (OUT )).To (BeTrue ())
378+
379+ list , err := tgt .ComponentLister ().GetComponents ("" , true )
380+ Expect (err ).To (Succeed ())
381+ Expect (list ).To (Equal ([]string {COMPONENT }))
382+ comp , err := tgt .LookupComponentVersion (COMPONENT , VERSION )
383+ Expect (err ).To (Succeed ())
384+ Expect (len (comp .GetDescriptor ().Resources )).To (Equal (1 ))
385+
386+ data , err := json .Marshal (comp .GetDescriptor ().Resources [0 ].Access )
387+ Expect (err ).To (Succeed ())
388+ hash := HashManifest2 (artifactset .DefaultArtifactSetDescriptorFileName )
389+ Expect (string (data )).To (testutils .StringEqualWithContext ("{\" localReference\" :\" " + hash + "\" ,\" mediaType\" :\" application/vnd.oci.image.manifest.v1+tar+gzip\" ,\" referenceName\" :\" " + OCINAMESPACE2 + ":" + OCIVERSION + "\" ,\" type\" :\" localBlob\" }" ))
390+ })
391+ })
298392})
0 commit comments