github.com/Lephar/snapd@v0.0.0-20210825215435-c7fba9cef4d2/cmd/snap/cmd_sandbox_features_test.go (about) 1 // -*- Mode: Go; indent-tabs-mode: t -*- 2 3 /* 4 * Copyright (C) 2018 Canonical Ltd 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 3 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package main_test 21 22 import ( 23 "fmt" 24 "net/http" 25 26 . "gopkg.in/check.v1" 27 28 snap "github.com/snapcore/snapd/cmd/snap" 29 ) 30 31 func (s *SnapSuite) TestSandboxFeatures(c *C) { 32 s.RedirectClientToTestServer(func(w http.ResponseWriter, r *http.Request) { 33 fmt.Fprintln(w, `{"type": "sync", "result": {"sandbox-features": {"apparmor": ["a", "b", "c"], "selinux": ["1", "2", "3"]}}}`) 34 }) 35 _, err := snap.Parser(snap.Client()).ParseArgs([]string{"debug", "sandbox-features"}) 36 c.Assert(err, IsNil) 37 c.Assert(s.Stdout(), Equals, ""+ 38 "apparmor: a b c\n"+ 39 "selinux: 1 2 3\n") 40 c.Assert(s.Stderr(), Equals, "") 41 } 42 43 func (s *SnapSuite) TestSandboxFeaturesRequired(c *C) { 44 s.RedirectClientToTestServer(func(w http.ResponseWriter, r *http.Request) { 45 fmt.Fprintln(w, `{"type": "sync", "result": {"sandbox-features": {"apparmor": ["a", "b", "c"], "selinux": ["1", "2", "3"]}}}`) 46 }) 47 _, err := snap.Parser(snap.Client()).ParseArgs([]string{"debug", "sandbox-features", "--required=apparmor:a", "--required=selinux:2"}) 48 c.Assert(err, IsNil) 49 c.Assert(s.Stdout(), Equals, "") 50 c.Assert(s.Stderr(), Equals, "") 51 } 52 53 func (s *SnapSuite) TestSandboxFeaturesRequiredButMissing(c *C) { 54 s.RedirectClientToTestServer(func(w http.ResponseWriter, r *http.Request) { 55 fmt.Fprintln(w, `{"type": "sync", "result": {"sandbox-features": {"apparmor": ["a", "b", "c"], "selinux": ["1", "2", "3"]}}}`) 56 }) 57 _, err := snap.Parser(snap.Client()).ParseArgs([]string{"debug", "sandbox-features", "--required=magic:thing"}) 58 c.Assert(err, ErrorMatches, `sandbox feature not available: "magic:thing"`) 59 c.Assert(s.Stdout(), Equals, "") 60 c.Assert(s.Stderr(), Equals, "") 61 }