15003: Add config-check command.
[arvados.git] / lib / config / cmd_test.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package config
6
7 import (
8         "bytes"
9
10         check "gopkg.in/check.v1"
11 )
12
13 var _ = check.Suite(&CommandSuite{})
14
15 type CommandSuite struct{}
16
17 func (s *CommandSuite) TestBadArg(c *check.C) {
18         var stderr bytes.Buffer
19         code := DumpCommand.RunCommand("arvados config-dump", []string{"-badarg"}, bytes.NewBuffer(nil), bytes.NewBuffer(nil), &stderr)
20         c.Check(code, check.Equals, 2)
21         c.Check(stderr.String(), check.Matches, `(?ms)usage: .*`)
22 }
23
24 func (s *CommandSuite) TestEmptyInput(c *check.C) {
25         var stdout, stderr bytes.Buffer
26         code := DumpCommand.RunCommand("arvados config-dump", nil, &bytes.Buffer{}, &stdout, &stderr)
27         c.Check(code, check.Equals, 1)
28         c.Check(stderr.String(), check.Matches, `config does not define any clusters\n`)
29 }
30
31 func (s *CommandSuite) TestCheckNoDeprecatedKeys(c *check.C) {
32         var stdout, stderr bytes.Buffer
33         in := `
34 Clusters:
35  z1234:
36   API:
37     MaxItemsPerResponse: 1234
38 `
39         code := CheckCommand.RunCommand("arvados config-check", nil, bytes.NewBufferString(in), &stdout, &stderr)
40         c.Check(code, check.Equals, 0)
41         c.Check(stdout.String(), check.Equals, "")
42         c.Check(stderr.String(), check.Equals, "")
43 }
44
45 func (s *CommandSuite) TestCheckDeprecatedKeys(c *check.C) {
46         var stdout, stderr bytes.Buffer
47         in := `
48 Clusters:
49  z1234:
50   RequestLimits:
51     MaxItemsPerResponse: 1234
52 `
53         code := CheckCommand.RunCommand("arvados config-check", nil, bytes.NewBufferString(in), &stdout, &stderr)
54         c.Check(code, check.Equals, 1)
55         c.Check(stdout.String(), check.Matches, `(?ms).*API:\n\- +.*MaxItemsPerResponse: 1000\n\+ +MaxItemsPerResponse: 1234\n.*`)
56 }
57
58 func (s *CommandSuite) TestUnknownKey(c *check.C) {
59         var stdout, stderr bytes.Buffer
60         in := `
61 Clusters:
62  z1234:
63   UnknownKey: foobar
64   ManagementToken: secret
65 `
66         code := DumpCommand.RunCommand("arvados config-dump", nil, bytes.NewBufferString(in), &stdout, &stderr)
67         c.Check(code, check.Equals, 0)
68         c.Check(stderr.String(), check.Equals, "")
69         c.Check(stdout.String(), check.Matches, `(?ms)Clusters:\n  z1234:\n.*`)
70         c.Check(stdout.String(), check.Matches, `(?ms).*\n *ManagementToken: secret\n.*`)
71         c.Check(stdout.String(), check.Not(check.Matches), `(?ms).*UnknownKey.*`)
72 }