improve tests for regenerateAppArmorRules()

This commit is contained in:
Michael Vogt
2015-02-25 08:41:11 +01:00
parent 51c93f4e5a
commit 298ee0255b
3 changed files with 31 additions and 4 deletions

View File

@@ -54,10 +54,12 @@ func writeHWAccessJSONFile(snapname string, appArmorAdditional appArmorAdditiona
return nil
}
func regenerateAppArmorRules() error {
func regenerateAppArmorRulesImpl() error {
return exec.Command(aaClickHookCmd, "-f").Run()
}
var regenerateAppArmorRules = regenerateAppArmorRulesImpl
// AddHWAccess allows the given snap package to access the given hardware
// device
func AddHWAccess(snapname, device string) error {

View File

@@ -7,9 +7,18 @@ import (
. "launchpad.net/gocheck"
)
func mockRegenerateAppArmorRules() *bool {
regenerateAppArmorRulesWasCalled := false
regenerateAppArmorRules = func() error {
regenerateAppArmorRulesWasCalled = true
return nil
}
return &regenerateAppArmorRulesWasCalled
}
func (s *SnapTestSuite) TestAddHWAccessSimple(c *C) {
aaClickHookCmd = "true"
makeMockSnap(s.tempdir)
regenerateAppArmorRulesWasCalled := mockRegenerateAppArmorRules()
err := AddHWAccess("hello-app", "/dev/ttyUSB0")
c.Assert(err, IsNil)
@@ -20,15 +29,17 @@ func (s *SnapTestSuite) TestAddHWAccessSimple(c *C) {
"/dev/ttyUSB0"
]
}`)
// ensure the regenerate code was called
c.Assert(*regenerateAppArmorRulesWasCalled, Equals, true)
}
func (s *SnapTestSuite) TestAddHWAccessInvalidDevice(c *C) {
aaClickHookCmd = "true"
regenerateAppArmorRulesWasCalled := mockRegenerateAppArmorRules()
makeMockSnap(s.tempdir)
err := AddHWAccess("hello-app", "ttyUSB0")
c.Assert(err, Equals, ErrInvalidHWDevice)
c.Assert(*regenerateAppArmorRulesWasCalled, Equals, false)
}
func (s *SnapTestSuite) TestAddHWAccessMultiplePaths(c *C) {
@@ -52,8 +63,11 @@ func (s *SnapTestSuite) TestAddHWAccessMultiplePaths(c *C) {
}
func (s *SnapTestSuite) TestAddHWAccessUnknownPackage(c *C) {
regenerateAppArmorRulesWasCalled := mockRegenerateAppArmorRules()
err := AddHWAccess("xxx", "/dev/ttyUSB0")
c.Assert(err, Equals, ErrPackageNotFound)
c.Assert(*regenerateAppArmorRulesWasCalled, Equals, false)
}
func (s *SnapTestSuite) TestAddHWAccessHookFails(c *C) {
@@ -75,6 +89,8 @@ func (s *SnapTestSuite) TestListHWAccess(c *C) {
}
func (s *SnapTestSuite) TestRemoveHWAccess(c *C) {
aaClickHookCmd = "true"
makeMockSnap(s.tempdir)
err := AddHWAccess("hello-app", "/dev/ttyUSB0")
@@ -82,8 +98,10 @@ func (s *SnapTestSuite) TestRemoveHWAccess(c *C) {
c.Assert(err, IsNil)
c.Assert(writePaths, DeepEquals, []string{"/dev/ttyUSB0"})
regenerateAppArmorRulesWasCalled := mockRegenerateAppArmorRules()
err = RemoveHWAccess("hello-app", "/dev/ttyUSB0")
c.Assert(err, IsNil)
c.Assert(*regenerateAppArmorRulesWasCalled, Equals, true)
writePaths, err = ListHWAccess("hello-app")
c.Assert(err, IsNil)
@@ -95,6 +113,8 @@ func (s *SnapTestSuite) TestRemoveHWAccessFail(c *C) {
err := AddHWAccess("hello-app", "/dev/ttyUSB0")
c.Assert(err, IsNil)
regenerateAppArmorRulesWasCalled := mockRegenerateAppArmorRules()
err = RemoveHWAccess("hello-app", "/dev/something")
c.Assert(err, Equals, ErrHWAccessRemoveNotFound)
c.Assert(*regenerateAppArmorRulesWasCalled, Equals, false)
}

View File

@@ -39,6 +39,11 @@ func (s *SnapTestSuite) SetUpTest(c *C) {
}
}
func (s *SnapTestSuite) TearDownTest(c *C) {
// ensure all functions are back to their original state
regenerateAppArmorRules = regenerateAppArmorRulesImpl
}
func (s *SnapTestSuite) makeMockSnap() (yamlFile string, err error) {
return makeMockSnap(s.tempdir)
}