func (s *checkSnapSuite) TestCheckSnapCheckCallbackOK(c *C) { const yaml = `name: foo version: 1.0` si := &snap.SideInfo{ SnapID: "snap-id", } var openSnapFile = func(path string, si *snap.SideInfo) (*snap.Info, snap.Container, error) { info := snaptest.MockInfo(c, yaml, si) return info, nil, nil } r1 := snapstate.MockOpenSnapFile(openSnapFile) defer r1() checkCbCalled := false checkCb := func(st *state.State, s, cur *snap.Info, flags snapstate.Flags) error { c.Assert(s.Name(), Equals, "foo") c.Assert(s.SnapID, Equals, "snap-id") checkCbCalled = true return nil } r2 := snapstate.MockCheckSnapCallbacks([]snapstate.CheckSnapCallback{checkCb}) defer r2() err := snapstate.CheckSnap(s.st, "snap-path", si, nil, snapstate.Flags{}) c.Check(err, IsNil) c.Check(checkCbCalled, Equals, true) }
func (s *checkSnapSuite) TestCheckSnapCheckCallbackFail(c *C) { const yaml = `name: foo version: 1.0` info, err := snap.InfoFromSnapYaml([]byte(yaml)) c.Assert(err, IsNil) var openSnapFile = func(path string, si *snap.SideInfo) (*snap.Info, snap.Container, error) { return info, nil, nil } restore := snapstate.MockOpenSnapFile(openSnapFile) defer restore() fail := errors.New("bad snap") checkCb := func(st *state.State, s, cur *snap.Info, flags snapstate.Flags) error { return fail } r2 := snapstate.MockCheckSnapCallbacks(nil) defer r2() snapstate.AddCheckSnapCallback(checkCb) err = snapstate.CheckSnap(s.st, "snap-path", nil, nil, snapstate.Flags{}) c.Check(err, Equals, fail) }