Exemple #1
0
func (s *frameworkExampleSuite) TestFrameworkClient(c *check.C) {
	common.InstallSnap(c, "hello-dbus-fwk.canonical/edge")
	defer common.RemoveSnap(c, "hello-dbus-fwk.canonical")

	common.InstallSnap(c, "hello-dbus-app.canonical/edge")
	defer common.RemoveSnap(c, "hello-dbus-app.canonical")

	output := cli.ExecCommand(c, "hello-dbus-app.client")

	expected := "PASS\n"

	c.Assert(output, check.Equals, expected,
		check.Commentf("Expected output %s not found, %s", expected, output))
}
Exemple #2
0
func (s *snapdTestSuite) SetUpTest(c *check.C) {
	s.SnappySuite.SetUpTest(c)

	c.Skip("FIXME: we need to update http.chipaca to new-security *and* land  auto-connect support in snapd")

	common.InstallSnap(c, httpClientSnap+"/edge")
}
Exemple #3
0
func (s *installAppSuite) TestInstallFromStoreMetadata(c *check.C) {
	common.InstallSnap(c, "hello-world/edge")
	defer common.RemoveSnap(c, "hello-world")

	output := cli.ExecCommand(c, "snappy", "info", "hello-world")
	c.Check(string(output), check.Matches, "(?ms)^channel: edge")
}
Exemple #4
0
func (s *hwAssignSuite) SetUpTest(c *check.C) {
	s.SnappySuite.SetUpTest(c)
	var err error
	s.snapPath, err = build.LocalSnap(c, snapName)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, s.snapPath)
}
Exemple #5
0
func (s *purgeSuite) SetUpTest(c *check.C) {
	s.SnappySuite.SetUpTest(c)

	snapPath, err := build.LocalSnap(c, data.BasicSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, snapPath)
}
func (s *installAppSuite) TestCallFailBinaryFromInstalledSnap(c *check.C) {
	snapPath, err := build.LocalSnap(c, data.BasicBinariesSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicBinariesSnapName)

	_, err = cli.ExecCommandErr("basic-binaries.fail")
	c.Assert(err, check.NotNil, check.Commentf("The binary did not fail"))
}
Exemple #7
0
func (s *activateSuite) SetUpTest(c *check.C) {
	s.SnappySuite.SetUpTest(c)
	if common.Release(c) == "15.04" {
		c.Skip("activate CLI command not available on 15.04, reenable the test when present")
	}
	var err error
	s.snapPath, err = build.LocalSnap(c, activateSnapName)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, s.snapPath)
}
func (s *installAppSuite) TestCallSuccessfulBinaryFromInstalledSnap(c *check.C) {
	snapPath, err := build.LocalSnap(c, data.BasicBinariesSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicBinariesSnapName)

	// Exec command does not fail.
	cli.ExecCommand(c, "basic-binaries.success")
}
Exemple #9
0
func (s *helloWorldExampleSuite) TestCallHelloWorldBinary(c *check.C) {
	common.InstallSnap(c, "hello-world/edge")
	s.AddCleanup(func() {
		common.RemoveSnap(c, "hello-world")
	})

	echoOutput := cli.ExecCommand(c, "hello-world.echo")

	c.Assert(echoOutput, check.Equals, "Hello World!\n",
		check.Commentf("Wrong output from hello-world binary"))
}
Exemple #10
0
func setUpDocker(c *check.C) {
	common.InstallSnap(c, "docker/edge")
	dockerVersion := common.GetCurrentVersion(c, "docker")
	dockerService := fmt.Sprintf("docker_docker-daemon_%s.service", dockerVersion)

	err := wait.ForActiveService(c, dockerService)
	c.Assert(err, check.IsNil, check.Commentf("Error waiting for service: %s", err))

	err = wait.ForCommand(c, `(?ms).*docker\.sock\s.*`, "ls", "/run")
	c.Assert(err, check.IsNil, check.Commentf("Expected nil error, got %s", err))

	cli.ExecCommand(c, "docker", "pull", baseContainer)
}
Exemple #11
0
func (s *infoSuite) TestInfoMustPrintInstalledFrameworks(c *check.C) {
	common.InstallSnap(c, "hello-dbus-fwk.canonical")
	s.AddCleanup(func() {
		common.RemoveSnap(c, "hello-dbus-fwk.canonical")
	})
	infoOutput := cli.ExecCommand(c, "snappy", "info")

	expected := "(?ms)" +
		".*" +
		"^frameworks: .*hello-dbus-fwk.*\n" +
		".*"
	c.Assert(infoOutput, check.Matches, expected)
}
Exemple #12
0
func (s *pythonWebserverExampleSuite) TestNetworkingServiceMustBeStarted(c *check.C) {
	baseAppName := "xkcd-webserver"
	appName := baseAppName + ".canonical"
	common.InstallSnap(c, appName+"/edge")
	defer common.RemoveSnap(c, appName)

	err := wait.ForServerOnPort(c, "tcp", 80)
	c.Assert(err, check.IsNil, check.Commentf("Error waiting for server: %s", err))

	resp, err := http.Get("http://localhost")
	c.Assert(err, check.IsNil, check.Commentf("Error getting the http resource: %s", err))
	c.Check(resp.Status, check.Equals, "200 OK", check.Commentf("Wrong reply status"))
	c.Assert(resp.Proto, check.Equals, "HTTP/1.0", check.Commentf("Wrong reply protocol"))
}
Exemple #13
0
func (s *infoSuite) TestInfoMustPrintInstalledApps(c *check.C) {
	snapPath, err := build.LocalSnap(c, data.BasicSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicSnapName)

	infoOutput := cli.ExecCommand(c, "snappy", "info")

	expected := "(?ms)" +
		".*" +
		"^apps: .*" + data.BasicSnapName + "\\.sideload.*\n"
	c.Assert(infoOutput, check.Matches, expected)
}
Exemple #14
0
func (s *installAppSuite) TestInstallAppMustPrintPackageInformation(c *check.C) {
	snapPath, err := build.LocalSnap(c, data.BasicSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	installOutput := common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicSnapName)

	expected := "(?ms)" +
		"Name +Version +Developer\n" +
		".*" +
		"^basic +.* *\n" +
		".*"

	c.Assert(installOutput, check.Matches, expected)
}
Exemple #15
0
func (s *listSuite) TestListMustPrintAppVersion(c *check.C) {
	common.InstallSnap(c, "hello-world")
	s.AddCleanup(func() {
		common.RemoveSnap(c, "hello-world")
	})

	listOutput := cli.ExecCommand(c, "snappy", "list")
	expected := "(?ms)" +
		"Name +Date +Version +Developer *\n" +
		".*" +
		"^hello-world +.* +(\\d+)(\\.\\d+)* +.* +.* *\n" +
		".*"

	c.Assert(listOutput, check.Matches, expected)
}
func (s *installFrameworkSuite) TestInstallFrameworkMustPrintPackageInformation(c *check.C) {
	snapPath, err := build.LocalSnap(c, data.BasicFrameworkSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	installOutput := common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicFrameworkSnapName)

	expected := "(?ms)" +
		fmt.Sprintf("Installing %s\n", snapPath) +
		"Name +Date +Version +Developer \n" +
		".*" +
		"^basic-framework +.* +.* +sideload *\n" +
		".*"

	c.Assert(installOutput, check.Matches, expected)
}
Exemple #17
0
func (s *goWebserverExampleSuite) TestGetRootPathMustPrintMessage(c *check.C) {
	appName := "go-example-webserver"
	common.InstallSnap(c, appName+"/edge")
	defer common.RemoveSnap(c, appName)

	err := wait.ForServerOnPort(c, "tcp6", 8081)
	c.Assert(err, check.IsNil, check.Commentf("Error waiting for server: %s", err))

	resp, err := http.Get("http://localhost:8081/")
	defer resp.Body.Close()
	c.Assert(err, check.IsNil, check.Commentf("Error getting the http resource: %s", err))
	c.Check(resp.Status, check.Equals, "200 OK", check.Commentf("Wrong reply status"))
	body, err := ioutil.ReadAll(resp.Body)
	c.Assert(err, check.IsNil, check.Commentf("Error reading the reply body: %s", err))
	c.Assert(string(body), check.Equals, "Hello World\n", check.Commentf("Wrong reply body"))
}
func (s *installDesktopAppSuite) TestInstallsDesktopFile(c *check.C) {
	c.Skip("port to snapd")

	snapPath, err := build.LocalSnap(c, data.BasicDesktopSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicDesktopSnapName)

	content, err := ioutil.ReadFile(filepath.Join(dirs.SnapDesktopFilesDir, "basic-desktop_echo.desktop"))
	c.Assert(err, check.IsNil)
	c.Assert(string(content), testutil.Contains, `[Desktop Entry]
Name=Echo
Comment=It echos stuff
Exec=/snap/bin/basic-desktop.echo
`)
}
Exemple #19
0
func (s *buildSuite) TestBuildBasicSnapOnSnappy(c *check.C) {
	// build basic snap and check output
	snapPath, err := build.LocalSnap(c, data.BasicSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))

	// install built snap and check output
	installOutput := common.InstallSnap(c, snapPath)
	defer common.RemoveSnap(c, data.BasicSnapName)
	expected := "(?ms)" +
		"Installing " + snapPath + "\n" +
		"Name +Date +Version +Developer \n" +
		".*" +
		data.BasicSnapName + " +.* +.* +sideload  \n" +
		".*"

	c.Check(installOutput, check.Matches, expected)
}
Exemple #20
0
func (s *helloWorldExampleSuite) TestCallHelloWorldEvilMustPrintPermissionDeniedError(c *check.C) {
	common.InstallSnap(c, "hello-world/edge")
	s.AddCleanup(func() {
		common.RemoveSnap(c, "hello-world")
	})

	echoOutput, err := cli.ExecCommandErr("hello-world.evil")
	c.Assert(err, check.NotNil, check.Commentf("hello-world.evil did not fail"))

	expected := "" +
		"Hello Evil World!\n" +
		"This example demonstrates the app confinement\n" +
		"You should see a permission denied error next\n" +
		"/snaps/hello-world.canonical/.*/bin/evil: \\d+: " +
		"/snaps/hello-world.canonical/.*/bin/evil: " +
		"cannot create /var/tmp/myevil.txt: Permission denied\n"

	c.Assert(string(echoOutput), check.Matches, expected)
}
Exemple #21
0
func (s *snapdTestSuite) SetUpTest(c *check.C) {
	s.SnappySuite.SetUpTest(c)

	trustedKey, err := filepath.Abs("integration-tests/data/trusted.acckey")
	c.Assert(err, check.IsNil)

	cli.ExecCommand(c, "sudo", "systemctl", "stop",
		"ubuntu-snappy.snapd.service", "ubuntu-snappy.snapd.socket")

	// FIXME: for now pass a test-only trusted key through an env var
	s.cmd = exec.Command("sudo", "env", "PATH="+os.Getenv("PATH"),
		"SNAPPY_TRUSTED_ACCOUNT_KEY="+trustedKey,
		"/lib/systemd/systemd-activate", "-ESNAPPY_TRUSTED_ACCOUNT_KEY",
		"-l", "/run/snapd.socket", "snapd")

	s.cmd.Start()

	common.InstallSnap(c, httpClientSnap+"/edge")
}
Exemple #22
0
func (s *configExampleSuite) TestPrintMessageFromConfig(c *check.C) {
	for _, t := range configTests {
		common.InstallSnap(c, t.snap+t.origin+"/edge")
		defer common.RemoveSnap(c, t.snap)

		config := fmt.Sprintf(`config:
  %s:
    msg: |
      %s`, t.snap, t.message)

		configFile, err := ioutil.TempFile("", "snappy-cfg")
		defer func() { configFile.Close(); os.Remove(configFile.Name()) }()
		c.Assert(err, check.IsNil, check.Commentf("Error creating temp file: %s", err))
		_, err = configFile.Write([]byte(config))
		c.Assert(err, check.IsNil, check.Commentf("Error writing the conf to the temp file: %s", err))

		cli.ExecCommand(c, "sudo", "snappy", "config", t.snap, configFile.Name())

		output := cli.ExecCommand(c, t.snap+".hello")
		c.Assert(output, check.Equals, t.message, check.Commentf("Wrong message"))
	}
}
Exemple #23
0
func installSnapWithService(c *check.C) {
	snapPath, err := build.LocalSnap(c, data.BasicServiceSnapName)
	defer os.Remove(snapPath)
	c.Assert(err, check.IsNil, check.Commentf("Error building local snap: %s", err))
	common.InstallSnap(c, snapPath)
}