Eventually(sess).Should(Say("=== Administrators")) Eventually(sess).Should(Say(otherUser.Username)) Expect(err).NotTo(HaveOccurred()) Eventually(sess).Should(Exit(0)) }) Context("who owns an existing app", func() { var app model.App BeforeEach(func() { app = apps.Create(otherUser, "--no-remote") }) AfterEach(func() { apps.Destroy(otherUser, app) }) Specify("that admin can list permissions on the app owned by the second user", func() { sess, err := cmd.Start("deis perms:list --app=%s", &admin, app.Name) Eventually(sess).Should(Say("=== %s's Users", app.Name)) Expect(err).NotTo(HaveOccurred()) Eventually(sess).Should(Exit(0)) }) Context("and a third user also exists", func() { var thirdUser model.User BeforeEach(func() { thirdUser = auth.Register()
AfterEach(func() { auth.Cancel(user) }) Context("who owns an existing app that has already been deployed", func() { var app model.App BeforeEach(func() { app = apps.Create(user, "--no-remote") builds.Create(user, app) }) AfterEach(func() { apps.Destroy(user, app) }) Specify("that user can list environment variables on that app", func() { sess, err := cmd.Start("deis config:list -a %s", &user, app.Name) Eventually(sess).Should(Say("=== %s Config", app.Name)) Expect(err).NotTo(HaveOccurred()) Eventually(sess).Should(Exit(0)) }) Specify("that user can set environment variables on that app", func() { sess, err := cmd.Start("deis config:set -a %s POWERED_BY=midi-chlorians", &user, app.Name) Expect(err).NotTo(HaveOccurred()) Eventually(sess).Should(Say("Creating config")) Eventually(sess, settings.MaxEventuallyTimeout).Should(Say("=== %s Config", app.Name)) Eventually(sess).Should(Say(`POWERED_BY\s+midi-chlorians`))
BeforeEach(func() { output, err := cmd.Execute(`git clone https://github.com/deis/example-go.git`) Expect(err).NotTo(HaveOccurred(), output) }) Context("and has run `deis apps:create` from within that repo", func() { var app model.App BeforeEach(func() { os.Chdir("example-go") app = apps.Create(user) }) AfterEach(func() { apps.Destroy(user, app) }) Specify("that user can deploy that app using a git push", func() { git.Push(user, keyPath, app, "Powered by Deis") }) Specify("that user can interrupt the deploy of the app and recover", func() { git.PushWithInterrupt(user, keyPath) git.PushUntilResult(user, keyPath, model.CmdResult{ Out: nil, Err: []byte("Everything up-to-date"), ExitCode: 0, })
var app model.App output, err := cmd.Execute(`git clone %s`, url) Expect(err).NotTo(HaveOccurred(), output) // infer app directory from URL splits := strings.Split(url, "/") dir := strings.TrimSuffix(splits[len(splits)-1], ".git") os.Chdir(dir) // create with custom buildpack if needed var args []string if buildpack != "" { args = append(args, fmt.Sprintf("--buildpack %s", buildpack)) } app = apps.Create(user, args...) defer apps.Destroy(user, app) git.Push(user, keyPath, app, banner) }, // NOTE: Keep this list up-to-date with any example apps that are added // under the github/deis org, or any third-party apps that increase coverage // or prevent regressions. Entry("Clojure", "https://github.com/deis/example-clojure-ring.git", "", "Powered by Deis"), Entry("Go", "https://github.com/deis/example-go.git", "", "Powered by Deis"), Entry("Java", "https://github.com/deis/example-java-jetty.git", "", "Powered by Deis"), Entry("Multi", "https://github.com/deis/example-multi", "", "Heroku Multipack Test"),