func (s *appArmorSuite) TestLoadedApparmorProfilesHandlesParsingErrors(c *C) { ioutil.WriteFile(s.profilesFilename, []byte("broken stuff here\n"), 0600) profiles, err := apparmor.LoadedProfiles() c.Assert(err, ErrorMatches, "newline in format does not match input") c.Check(profiles, IsNil) ioutil.WriteFile(s.profilesFilename, []byte("truncated"), 0600) profiles, err = apparmor.LoadedProfiles() c.Assert(err, ErrorMatches, `syntax error, expected: name \(mode\)`) c.Check(profiles, IsNil) }
func (s *appArmorSuite) TestLoadedApparmorProfilesParsesAndFiltersData(c *C) { ioutil.WriteFile(s.profilesFilename, []byte( // The output contains some of the snappy-specific elements // and some non-snappy elements pulled from Ubuntu 16.04 desktop // // The pi2-piglow.{background,foreground}.snap entries are the only // ones that should be reported by the function. `/sbin/dhclient (enforce) /usr/bin/ubuntu-core-launcher (enforce) /usr/bin/ubuntu-core-launcher (enforce) /usr/lib/NetworkManager/nm-dhcp-client.action (enforce) /usr/lib/NetworkManager/nm-dhcp-helper (enforce) /usr/lib/connman/scripts/dhclient-script (enforce) /usr/lib/lightdm/lightdm-guest-session (enforce) /usr/lib/lightdm/lightdm-guest-session//chromium (enforce) /usr/lib/telepathy/telepathy-* (enforce) /usr/lib/telepathy/telepathy-*//pxgsettings (enforce) /usr/lib/telepathy/telepathy-*//sanitized_helper (enforce) snap.pi2-piglow.background (enforce) snap.pi2-piglow.foreground (enforce) webbrowser-app (enforce) webbrowser-app//oxide_helper (enforce) `), 0600) profiles, err := apparmor.LoadedProfiles() c.Assert(err, IsNil) c.Check(profiles, DeepEquals, []string{ "snap.pi2-piglow.background", "snap.pi2-piglow.foreground", }) }
func (s *appArmorSuite) TestLoadedApparmorProfilesCanParseEmptyFile(c *C) { ioutil.WriteFile(s.profilesFilename, []byte(""), 0600) profiles, err := apparmor.LoadedProfiles() c.Assert(err, IsNil) c.Check(profiles, HasLen, 0) }
func (s *appArmorSuite) TestLoadedApparmorProfilesReturnsErrorOnMissingFile(c *C) { profiles, err := apparmor.LoadedProfiles() c.Assert(err, ErrorMatches, "open .*: no such file or directory") c.Check(profiles, IsNil) }