Normalize space-like characters in keys before output to gitlab-shell

gitlab-shell expects only one tab separator per key, and an SSH key with
a tab character in the comment, for example, would break things.

Closes #2970
This commit is contained in:
Robert Speicher 2015-10-08 20:34:50 -04:00
parent 680b6d88a5
commit 69b41ba043
2 changed files with 15 additions and 1 deletions

View file

@ -4,7 +4,8 @@ module Gitlab
class KeyAdder < Struct.new(:io)
def add_key(id, key)
io.puts("#{id}\t#{key.strip}")
key.gsub!(/[[:space:]]+/, ' ').strip!
io.puts("#{id}\t#{key}")
end
end

View file

@ -15,4 +15,17 @@ describe Gitlab::Shell do
it { is_expected.to respond_to :fork_repository }
it { expect(gitlab_shell.url_to_repo('diaspora')).to eq(Gitlab.config.gitlab_shell.ssh_path_prefix + "diaspora.git") }
describe Gitlab::Shell::KeyAdder do
describe '#add_key' do
it 'normalizes space characters in the key' do
io = spy
adder = described_class.new(io)
adder.add_key('key-42', "sha-rsa foo\tbar\tbaz")
expect(io).to have_received(:puts).with("key-42\tsha-rsa foo bar baz")
end
end
end
end