mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
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)
 |