Skip to content

Commit 379b812

Browse files
purush7scriptonist
authored andcommitted
cli: add e2e tests for metadata and migrate commands
Co-authored-by: Aravind K P <[email protected]> GitOrigin-RevId: d63e045
1 parent eb5a0d4 commit 379b812

25 files changed

+1239
-48
lines changed

cli/commands/commands_test.go

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package commands
2+
3+
import (
4+
"github.com/hasura/graphql-engine/cli"
5+
"github.com/hasura/graphql-engine/cli/internal/testutil"
6+
"gopkg.in/yaml.v2"
7+
"io/ioutil"
8+
"testing"
9+
10+
. "github.com/onsi/ginkgo"
11+
. "github.com/onsi/gomega"
12+
)
13+
14+
const (
15+
defaultConfigFilename = "config.yaml"
16+
)
17+
18+
func TestE2e(t *testing.T) {
19+
BeforeSuite(func() {
20+
if testutil.SkipDockerTests {
21+
t.Skip()
22+
}
23+
})
24+
RegisterFailHandler(Fail)
25+
RunSpecs(t, "e2e testsuite")
26+
}
27+
28+
// EditEndpoint in config
29+
func editEndpointInConfig(configFilePath, endpoint string) {
30+
var config cli.Config
31+
b, err := ioutil.ReadFile(configFilePath)
32+
Expect(err).ShouldNot(HaveOccurred())
33+
34+
err = yaml.Unmarshal(b, &config)
35+
Expect(err).ShouldNot(HaveOccurred())
36+
37+
config.Endpoint = endpoint
38+
39+
b, err = yaml.Marshal(&config)
40+
Expect(err).ShouldNot(HaveOccurred())
41+
42+
err = ioutil.WriteFile(configFilePath, b, 0655)
43+
Expect(err).ShouldNot(HaveOccurred())
44+
45+
}

cli/commands/metadata_apply_test.go

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package commands
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/hasura/graphql-engine/cli/internal/testutil"
9+
. "github.com/onsi/ginkgo"
10+
. "github.com/onsi/gomega"
11+
. "github.com/onsi/gomega/gbytes"
12+
. "github.com/onsi/gomega/gexec"
13+
)
14+
15+
var _ = Describe("metadata_apply", func() {
16+
var dirName string
17+
var session *Session
18+
var teardown func()
19+
BeforeEach(func() {
20+
dirName = testutil.RandDirName()
21+
hgeEndPort, teardownHGE := testutil.StartHasura(GinkgoT(), testutil.HasuraVersion)
22+
hgeEndpoint := fmt.Sprintf("http://0.0.0.0:%s", hgeEndPort)
23+
testutil.RunCommandAndSucceed(testutil.CmdOpts{
24+
Args: []string{"init", dirName},
25+
})
26+
editEndpointInConfig(filepath.Join(dirName, defaultConfigFilename), hgeEndpoint)
27+
28+
teardown = func() {
29+
session.Kill()
30+
os.RemoveAll(dirName)
31+
teardownHGE()
32+
}
33+
})
34+
35+
AfterEach(func() {
36+
teardown()
37+
})
38+
39+
Context("metadata apply test", func() {
40+
It("should apply metadata to server", func() {
41+
session = testutil.Hasura(testutil.CmdOpts{
42+
Args: []string{"metadata", "apply"},
43+
WorkingDirectory: dirName,
44+
})
45+
want := `.*Metadata applied*.`
46+
Eventually(session, 60*40).Should(Say(want))
47+
Eventually(session, 60*40).Should(Exit(0))
48+
})
49+
})
50+
})

cli/commands/metadata_clear_test.go

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package commands
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/hasura/graphql-engine/cli/internal/testutil"
9+
. "github.com/onsi/ginkgo"
10+
. "github.com/onsi/gomega"
11+
. "github.com/onsi/gomega/gbytes"
12+
. "github.com/onsi/gomega/gexec"
13+
)
14+
15+
var _ = Describe("metadata_clear", func() {
16+
17+
var dirName string
18+
var session *Session
19+
var teardown func()
20+
BeforeEach(func() {
21+
dirName = testutil.RandDirName()
22+
hgeEndPort, teardownHGE := testutil.StartHasura(GinkgoT(), testutil.HasuraVersion)
23+
hgeEndpoint := fmt.Sprintf("http://0.0.0.0:%s", hgeEndPort)
24+
testutil.RunCommandAndSucceed(testutil.CmdOpts{
25+
Args: []string{"init", dirName},
26+
})
27+
editEndpointInConfig(filepath.Join(dirName, defaultConfigFilename), hgeEndpoint)
28+
29+
teardown = func() {
30+
session.Kill()
31+
os.RemoveAll(dirName)
32+
teardownHGE()
33+
}
34+
})
35+
36+
AfterEach(func() {
37+
teardown()
38+
})
39+
40+
Context("metadata clear test", func() {
41+
It("should clear metadata on server", func() {
42+
session = testutil.Hasura(testutil.CmdOpts{
43+
Args: []string{"metadata", "clear"},
44+
WorkingDirectory: dirName,
45+
})
46+
want := `.*Metadata cleared*.`
47+
Eventually(session, 60*40).Should(Say(want))
48+
Eventually(session, 60*40).Should(Exit(0))
49+
})
50+
})
51+
})

cli/commands/metadata_diff_test.go

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package commands
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/hasura/graphql-engine/cli/internal/testutil"
9+
. "github.com/onsi/ginkgo"
10+
. "github.com/onsi/gomega"
11+
. "github.com/onsi/gomega/gbytes"
12+
. "github.com/onsi/gomega/gexec"
13+
)
14+
15+
var _ = Describe("metadata_diff", func() {
16+
17+
var dirName string
18+
var session *Session
19+
var teardown func()
20+
BeforeEach(func() {
21+
dirName = testutil.RandDirName()
22+
hgeEndPort, teardownHGE := testutil.StartHasura(GinkgoT(), testutil.HasuraVersion)
23+
hgeEndpoint := fmt.Sprintf("http://0.0.0.0:%s", hgeEndPort)
24+
testutil.RunCommandAndSucceed(testutil.CmdOpts{
25+
Args: []string{"init", dirName},
26+
})
27+
editEndpointInConfig(filepath.Join(dirName, defaultConfigFilename), hgeEndpoint)
28+
29+
teardown = func() {
30+
session.Kill()
31+
os.RemoveAll(dirName)
32+
teardownHGE()
33+
}
34+
})
35+
36+
AfterEach(func() {
37+
teardown()
38+
})
39+
40+
Context("metadata diff test", func() {
41+
It("should output diff between metadata on server and local project", func() {
42+
session = testutil.Hasura(testutil.CmdOpts{
43+
Args: []string{"metadata", "diff"},
44+
WorkingDirectory: dirName,
45+
})
46+
47+
Eventually(session, 60*40).Should(Say(".*rest_endpoints*."))
48+
Eventually(session, 60*40).Should(Say(".*sources*."))
49+
Eventually(session, 60*40).Should(Exit(0))
50+
})
51+
})
52+
})

cli/commands/metadata_export_test.go

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package commands
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/hasura/graphql-engine/cli/internal/testutil"
9+
. "github.com/onsi/ginkgo"
10+
. "github.com/onsi/gomega"
11+
. "github.com/onsi/gomega/gbytes"
12+
. "github.com/onsi/gomega/gexec"
13+
)
14+
15+
var _ = Describe("metadata_export", func() {
16+
17+
var dirName string
18+
var session *Session
19+
var teardown func()
20+
BeforeEach(func() {
21+
dirName = testutil.RandDirName()
22+
hgeEndPort, teardownHGE := testutil.StartHasura(GinkgoT(), testutil.HasuraVersion)
23+
hgeEndpoint := fmt.Sprintf("http://0.0.0.0:%s", hgeEndPort)
24+
testutil.RunCommandAndSucceed(testutil.CmdOpts{
25+
Args: []string{"init", dirName},
26+
})
27+
editEndpointInConfig(filepath.Join(dirName, defaultConfigFilename), hgeEndpoint)
28+
29+
teardown = func() {
30+
session.Kill()
31+
os.RemoveAll(dirName)
32+
teardownHGE()
33+
}
34+
})
35+
36+
AfterEach(func() {
37+
teardown()
38+
})
39+
40+
Context("metadata export test", func() {
41+
It("should export metadata from server", func() {
42+
session = testutil.Hasura(testutil.CmdOpts{
43+
Args: []string{"metadata", "export"},
44+
WorkingDirectory: dirName,
45+
})
46+
want := `.*Metadata exported*.`
47+
Eventually(session, 60*40).Should(Say(want))
48+
Eventually(session, 60*40).Should(Exit(0))
49+
})
50+
})
51+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package commands
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/hasura/graphql-engine/cli/internal/testutil"
9+
. "github.com/onsi/ginkgo"
10+
. "github.com/onsi/gomega"
11+
. "github.com/onsi/gomega/gbytes"
12+
. "github.com/onsi/gomega/gexec"
13+
)
14+
15+
var _ = Describe("metadata_inconsistency_drop", func() {
16+
17+
var dirName string
18+
var session *Session
19+
var teardown func()
20+
BeforeEach(func() {
21+
dirName = testutil.RandDirName()
22+
hgeEndPort, teardownHGE := testutil.StartHasura(GinkgoT(), testutil.HasuraVersion)
23+
hgeEndpoint := fmt.Sprintf("http://0.0.0.0:%s", hgeEndPort)
24+
testutil.RunCommandAndSucceed(testutil.CmdOpts{
25+
Args: []string{"init", dirName},
26+
})
27+
editEndpointInConfig(filepath.Join(dirName, defaultConfigFilename), hgeEndpoint)
28+
29+
teardown = func() {
30+
session.Kill()
31+
os.RemoveAll(dirName)
32+
teardownHGE()
33+
}
34+
})
35+
36+
AfterEach(func() {
37+
teardown()
38+
})
39+
40+
Context("metadata inconsistency drop test", func() {
41+
It("Drops inconsistent objects from the metadata", func() {
42+
session = testutil.Hasura(testutil.CmdOpts{
43+
Args: []string{"metadata", "inconsistency", "drop"},
44+
WorkingDirectory: dirName,
45+
})
46+
want := `.*all inconsistent objects removed from metadata*.`
47+
Eventually(session, 60*40).Should(Say(want))
48+
Eventually(session, 60*40).Should(Exit(0))
49+
})
50+
})
51+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package commands
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path/filepath"
7+
8+
"github.com/hasura/graphql-engine/cli/internal/testutil"
9+
. "github.com/onsi/ginkgo"
10+
. "github.com/onsi/gomega"
11+
. "github.com/onsi/gomega/gbytes"
12+
. "github.com/onsi/gomega/gexec"
13+
)
14+
15+
var _ = Describe("metadata_inconsistency_list", func() {
16+
17+
var dirName string
18+
var session *Session
19+
var teardown func()
20+
BeforeEach(func() {
21+
dirName = testutil.RandDirName()
22+
hgeEndPort, teardownHGE := testutil.StartHasura(GinkgoT(), testutil.HasuraVersion)
23+
hgeEndpoint := fmt.Sprintf("http://0.0.0.0:%s", hgeEndPort)
24+
testutil.RunCommandAndSucceed(testutil.CmdOpts{
25+
Args: []string{"init", dirName},
26+
})
27+
editEndpointInConfig(filepath.Join(dirName, defaultConfigFilename), hgeEndpoint)
28+
29+
teardown = func() {
30+
session.Kill()
31+
os.RemoveAll(dirName)
32+
teardownHGE()
33+
}
34+
})
35+
36+
AfterEach(func() {
37+
teardown()
38+
})
39+
40+
Context("metadata inconsistency list test", func() {
41+
It("Lists all inconsistent objects from the metadata", func() {
42+
session = testutil.Hasura(testutil.CmdOpts{
43+
Args: []string{"metadata", "inconsistency", "list"},
44+
WorkingDirectory: dirName,
45+
})
46+
want := `.*metadata is consistent*.`
47+
Eventually(session, 60*40).Should(Say(want))
48+
Eventually(session, 60*40).Should(Exit(0))
49+
})
50+
})
51+
})

0 commit comments

Comments
 (0)