mirror of
https://github.com/neovim/neovim.git
synced 2025-11-23 10:36:29 +00:00
feat(ssh): SSH configuration parser #35027
This commit is contained in:
78
test/functional/lua/ssh_spec.lua
Normal file
78
test/functional/lua/ssh_spec.lua
Normal file
@@ -0,0 +1,78 @@
|
||||
local t = require('test.testutil')
|
||||
local parser = require('vim.net._ssh')
|
||||
local eq = t.eq
|
||||
|
||||
describe('SSH parser', function()
|
||||
it('parses SSH configuration strings', function()
|
||||
local config = [[
|
||||
Host *
|
||||
ConnectTimeout 10
|
||||
ServerAliveInterval 60
|
||||
ServerAliveCountMax 3
|
||||
# Use a specific key for any host not otherwise specified
|
||||
# IdentityFile ~/.ssh/id_rsa
|
||||
|
||||
Host=dev
|
||||
HostName=dev.example.com
|
||||
User=devuser
|
||||
Port=2222
|
||||
IdentityFile=~/.ssh/id_rsa_dev
|
||||
|
||||
Host prod test
|
||||
HostName 198.51.100.10
|
||||
User admin
|
||||
Port 22
|
||||
IdentityFile ~/.ssh/id_rsa_prod
|
||||
ForwardAgent yes
|
||||
|
||||
Host test
|
||||
IdentitiesOnly yes
|
||||
|
||||
Host "quoted string"
|
||||
User quote
|
||||
Port 22
|
||||
|
||||
Match host foo host gh
|
||||
HostName github.com
|
||||
User git
|
||||
IdentityFile ~/.ssh/id_rsa_github
|
||||
IdentitiesOnly yes
|
||||
]]
|
||||
|
||||
eq({
|
||||
'dev',
|
||||
'prod',
|
||||
'test',
|
||||
'quoted string',
|
||||
'gh',
|
||||
}, parser.parse_ssh_config(config))
|
||||
end)
|
||||
|
||||
it('fails when a quote is not closed', function()
|
||||
local config = [[
|
||||
Host prod dev "test prod my
|
||||
HostName 198.51.100.10
|
||||
User admin
|
||||
Port 22
|
||||
IdentityFile ~/.ssh/id_rsa_prod
|
||||
ForwardAgent yes
|
||||
]]
|
||||
|
||||
local ok, _ = pcall(parser.parse_ssh_config, config)
|
||||
eq(false, ok)
|
||||
end)
|
||||
|
||||
it('fails when the line ends with a single backslash', function()
|
||||
local config = [[
|
||||
Host prod test
|
||||
HostName 198.51.100.10
|
||||
User admin\
|
||||
Port 22
|
||||
IdentityFile ~/.ssh/id_rsa_prod
|
||||
ForwardAgent yes
|
||||
]]
|
||||
|
||||
local ok, _ = pcall(parser.parse_ssh_config, config)
|
||||
eq(false, ok)
|
||||
end)
|
||||
end)
|
||||
Reference in New Issue
Block a user