Merge branch '15227-apiserver-properties-bugfix'
[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) TestCheckUnknownKey(c *check.C) {
59         var stdout, stderr bytes.Buffer
60         in := `
61 Clusters:
62  z1234:
63   Bogus1: foo
64   BogusSection:
65     Bogus2: foo
66   API:
67     Bogus3:
68      Bogus4: true
69   PostgreSQL:
70     ConnectionPool:
71       {Bogus5: true}
72 `
73         code := CheckCommand.RunCommand("arvados config-check", nil, bytes.NewBufferString(in), &stdout, &stderr)
74         c.Log(stderr.String())
75         c.Check(code, check.Equals, 1)
76         c.Check(stderr.String(), check.Matches, `(?ms).*deprecated or unknown config entry: Clusters.z1234.Bogus1\n.*`)
77         c.Check(stderr.String(), check.Matches, `(?ms).*deprecated or unknown config entry: Clusters.z1234.BogusSection\n.*`)
78         c.Check(stderr.String(), check.Matches, `(?ms).*deprecated or unknown config entry: Clusters.z1234.API.Bogus3\n.*`)
79         c.Check(stderr.String(), check.Matches, `(?ms).*unexpected object in config entry: Clusters.z1234.PostgreSQL.ConnectionPool\n.*`)
80 }
81
82 func (s *CommandSuite) TestDumpUnknownKey(c *check.C) {
83         var stdout, stderr bytes.Buffer
84         in := `
85 Clusters:
86  z1234:
87   UnknownKey: foobar
88   ManagementToken: secret
89 `
90         code := DumpCommand.RunCommand("arvados config-dump", nil, bytes.NewBufferString(in), &stdout, &stderr)
91         c.Check(code, check.Equals, 0)
92         c.Check(stderr.String(), check.Matches, `(?ms).*deprecated or unknown config entry: Clusters.z1234.UnknownKey.*`)
93         c.Check(stdout.String(), check.Matches, `(?ms)Clusters:\n  z1234:\n.*`)
94         c.Check(stdout.String(), check.Matches, `(?ms).*\n *ManagementToken: secret\n.*`)
95         c.Check(stdout.String(), check.Not(check.Matches), `(?ms).*UnknownKey.*`)
96 }