github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/unshare_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"os"
     5  
     6  	. "github.com/containers/podman/v2/test/utils"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("Podman unshare", func() {
    12  	var (
    13  		tempdir    string
    14  		err        error
    15  		podmanTest *PodmanTestIntegration
    16  	)
    17  	BeforeEach(func() {
    18  		SkipIfRemote("podman-remote unshare is not supported")
    19  		if _, err := os.Stat("/proc/self/uid_map"); err != nil {
    20  			Skip("User namespaces not supported.")
    21  		}
    22  
    23  		if os.Geteuid() == 0 {
    24  			Skip("Use unshare in rootless only")
    25  		}
    26  
    27  		tempdir, err = CreateTempDirInTempDir()
    28  		if err != nil {
    29  			os.Exit(1)
    30  		}
    31  		podmanTest = PodmanTestCreate(tempdir)
    32  		podmanTest.CgroupManager = "cgroupfs"
    33  		podmanTest.StorageOptions = ROOTLESS_STORAGE_OPTIONS
    34  		podmanTest.Setup()
    35  		podmanTest.SeedImages()
    36  	})
    37  
    38  	AfterEach(func() {
    39  		podmanTest.Cleanup()
    40  		f := CurrentGinkgoTestDescription()
    41  		processTestResult(f)
    42  	})
    43  
    44  	It("podman unshare", func() {
    45  		userNS, _ := os.Readlink("/proc/self/ns/user")
    46  		session := podmanTest.Podman([]string{"unshare", "readlink", "/proc/self/ns/user"})
    47  		session.WaitWithDefaultTimeout()
    48  		Expect(session.ExitCode()).To(Equal(0))
    49  		ok, _ := session.GrepString(userNS)
    50  		Expect(ok).To(BeFalse())
    51  	})
    52  })