github.com/sealerio/sealer@v0.11.1-0.20240507115618-f4f89c5853ae/test/sealer_images_test.go (about)

     1  // Copyright © 2021 Alibaba Group Holding Ltd.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package test
    16  
    17  import (
    18  	"fmt"
    19  
    20  	"github.com/sealerio/sealer/test/suites/build"
    21  	"github.com/sealerio/sealer/test/suites/image"
    22  	"github.com/sealerio/sealer/test/suites/registry"
    23  	"github.com/sealerio/sealer/test/testhelper"
    24  	"github.com/sealerio/sealer/test/testhelper/settings"
    25  
    26  	. "github.com/onsi/ginkgo"
    27  	. "github.com/onsi/gomega"
    28  )
    29  
    30  var _ = Describe("sealer image", func() {
    31  	Context("pull image", func() {
    32  
    33  		It(fmt.Sprintf("pull image %s", settings.TestImageName), func() {
    34  			image.DoImageOps("pull", settings.TestImageName)
    35  			testhelper.CheckBeTrue(build.CheckIsImageExist(settings.TestImageName))
    36  
    37  			tagImageNames := []string{
    38  				"e2eimage_test:latest",
    39  				"e2eimage_test:v0.0.1",
    40  				"sealer-io/e2eimage_test:v0.0.2",
    41  				"docker.io/sealerio/e2eimage_test:v0.0.3",
    42  			}
    43  			By("tag by image name", func() {
    44  				for _, newOne := range tagImageNames {
    45  					image.TagImages(settings.TestImageName, newOne)
    46  					Expect(build.CheckIsImageExist(newOne)).Should(BeTrue())
    47  				}
    48  
    49  				image.DoImageOps("images", "")
    50  
    51  				for _, imageName := range tagImageNames {
    52  					removeImage := imageName
    53  					image.DoImageOps("rmi", removeImage)
    54  				}
    55  
    56  			})
    57  
    58  			By("remove tag image", func() {
    59  				tagImageName := "e2e_images_test:v0.3"
    60  				image.DoImageOps("pull", settings.TestImageName)
    61  				image.TagImages(settings.TestImageName, tagImageName)
    62  				testhelper.CheckBeTrue(build.CheckIsImageExist(tagImageName))
    63  				image.DoImageOps("rmi", tagImageName)
    64  				testhelper.CheckNotBeTrue(build.CheckIsImageExist(tagImageName))
    65  			})
    66  
    67  		})
    68  
    69  		faultImageNames := []string{
    70  			fmt.Sprintf("%s/%s:latest", settings.DefaultImageName, settings.DefaultImageRepo),
    71  			fmt.Sprintf("%s:latest", settings.DefaultImageDomain),
    72  			fmt.Sprintf("%s:latest", settings.DefaultImageRepo),
    73  		}
    74  
    75  		for _, faultImageName := range faultImageNames {
    76  			faultImageName := faultImageName
    77  			It(fmt.Sprintf("pull fault image %s", faultImageName), func() {
    78  				sess, err := testhelper.Start(fmt.Sprintf("%s pull %s", settings.DefaultSealerBin, faultImageName))
    79  				testhelper.CheckErr(err)
    80  				testhelper.CheckNotExit0(sess, settings.DefaultWaiteTime)
    81  				testhelper.CheckNotBeTrue(build.CheckIsImageExist(faultImageName))
    82  			})
    83  		}
    84  
    85  	})
    86  
    87  	Context("remove image", func() {
    88  		It(fmt.Sprintf("remove image %s", settings.TestImageName), func() {
    89  			image.DoImageOps("images", "")
    90  			image.DoImageOps("pull", settings.TestImageName)
    91  			testhelper.CheckBeTrue(build.CheckIsImageExist(settings.TestImageName))
    92  			image.DoImageOps("rmi", settings.TestImageName)
    93  			testhelper.CheckNotBeTrue(build.CheckIsImageExist(settings.TestImageName))
    94  		})
    95  
    96  	})
    97  
    98  	Context("push image", func() {
    99  		BeforeEach(func() {
   100  			registry.Login()
   101  			image.DoImageOps("pull", settings.TestImageName)
   102  		})
   103  		AfterEach(func() {
   104  			registry.Logout()
   105  		})
   106  		It("push image", func() {
   107  			pushImageName := "docker.io/sealerio/e2eimage_test:v0.0.1"
   108  			if settings.RegistryURL != "" && settings.RegistryUsername != "" && settings.RegistryPasswd != "" {
   109  				pushImageName = settings.RegistryURL + "/" + settings.RegistryUsername + "/" + "e2eimage_test:v0.0.1"
   110  			}
   111  			image.TagImages(settings.TestImageName, pushImageName)
   112  			image.DoImageOps("push", pushImageName)
   113  		})
   114  	})
   115  
   116  	Context("login registry", func() {
   117  		AfterEach(func() {
   118  			registry.Logout()
   119  		})
   120  		It("with correct name and password", func() {
   121  			image.CheckLoginResult(
   122  				settings.RegistryURL,
   123  				settings.RegistryUsername,
   124  				settings.RegistryPasswd,
   125  				true)
   126  		})
   127  		It("with incorrect name and password", func() {
   128  			image.CheckLoginResult(
   129  				settings.RegistryURL,
   130  				settings.RegistryPasswd,
   131  				settings.RegistryUsername,
   132  				false)
   133  		})
   134  		It("with only name", func() {
   135  			image.CheckLoginResult(
   136  				settings.RegistryURL,
   137  				settings.RegistryUsername,
   138  				"",
   139  				false)
   140  		})
   141  		It("with only password", func() {
   142  			image.CheckLoginResult(
   143  				settings.RegistryURL,
   144  				"",
   145  				settings.RegistryPasswd,
   146  				false)
   147  		})
   148  		It("with only registryURL", func() {
   149  			image.CheckLoginResult(
   150  				settings.RegistryURL,
   151  				"",
   152  				"",
   153  				false)
   154  		})
   155  	})
   156  
   157  	//todo add mount and umount e2e test
   158  })