func (s *AuthorisedKeysKeysSuite) TestParseAuthorisedKey(c *gc.C) { for i, test := range []struct { line string key []byte comment string err string }{{ line: sshtesting.ValidKeyOne.Key, key: b64decode(c, strings.Fields(sshtesting.ValidKeyOne.Key)[1]), }, { line: sshtesting.ValidKeyOne.Key + " a b c", key: b64decode(c, strings.Fields(sshtesting.ValidKeyOne.Key)[1]), comment: "a b c", }, { line: "ssh-xsa blah", err: "invalid authorized_key \"ssh-xsa blah\"", }, { // options should be skipped line: `no-pty,principals="\"",command="\!" ` + sshtesting.ValidKeyOne.Key, key: b64decode(c, strings.Fields(sshtesting.ValidKeyOne.Key)[1]), }, { line: "ssh-rsa", err: "invalid authorized_key \"ssh-rsa\"", }} { c.Logf("test %d: %s", i, test.line) ak, err := ssh.ParseAuthorisedKey(test.line) if test.err != "" { c.Assert(err, gc.ErrorMatches, test.err) } else { c.Assert(err, gc.IsNil) c.Assert(ak, gc.Not(gc.IsNil)) c.Assert(ak.Key, gc.DeepEquals, test.key) c.Assert(ak.Comment, gc.Equals, test.comment) } } }
func init() { _, err := ssh.ParseAuthorisedKey(FakeAuthKeys) if err != nil { panic("FakeAuthKeys does not hold a valid authorized key: " + err.Error()) } }