package com.sequenceiq.cloudbreak.service.credential;
import org.junit.Before;
import org.junit.Test;
import com.sequenceiq.cloudbreak.controller.BadRequestException;
import com.sequenceiq.cloudbreak.domain.Credential;
public class RsaPublicKeyValidatorTest {
private RsaPublicKeyValidator rsaPublicKeyValidator;
@Before
public void setUp() {
rsaPublicKeyValidator = new RsaPublicKeyValidator();
}
@Test
public void validPublicKeyWillNotFail() {
rsaPublicKeyValidator.validate(
azureCredential(
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCasJyap4swb4Hk4xOlnF3OmKVwzmv2e053yrtvcUPaxCeboSltOBReuT"
+ "QxX+kYCgKCdtEwpIvEDXk16T6nCI4tSptAalFgpUWn+JOysCuLuWnwrk6mSKOzEiPYCrB54444mDY6rbBDSRuE/V"
+ "UYQ/yi0imocARlOiFdPRlZGTN0XGE1V8LSo+m0oIzTwBKn58I4v5iB4ZUL/6adGXo7dgdBh/Fmm4uYbgrCZnL1EaK"
+ "pMxSG76XWhuzFpHjLkRndz88ha0rB6davag6nZGdno5IepLAWg9oB4jTApHwhN2j1rWLN2y1c+pTxsF6LxBiN5rsY"
+ "KR495VFmuOepLYz5I8Dn sequence-eu")
);
}
public void inValidPublicKeyWillCorrectWhenMissingUser() {
rsaPublicKeyValidator.validate(
azureCredential(
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCasJyap4swb4Hk4xOlnF3OmKVwzmv2e053yrtvcUPaxCeboSltOBReuT"
+ "QxX+kYCgKCdtEwpIvEDXk16T6nCI4tSptAalFgpUWn+JOysCuLuWnwrk6mSKOzEiPYCrB54444mDY6rbBDSRuE/V"
+ "UYQ/yi0imocARlOiFdPRlZGTN0XGE1V8LSo+m0oIzTwBKn58I4v5iB4ZUL/6adGXo7dgdBh/Fmm4uYbgrCZnL1EaK"
+ "pMxSG76XWhuzFpHjLkRndz88ha0rB6davag6nZGdno5IepLAWg9oB4jTApHwhN2j1rWLN2y1c+pTxsF6LxBiN5rsY"
+ "KR495VFmuOepLYz5I8Dn")
);
}
@Test(expected = BadRequestException.class)
public void inValidPublicKeyWillFailWhenMissingSshRsa() {
rsaPublicKeyValidator.validate(
azureCredential(
"AAAAB3NzaC1yc2EAAAADAQABAAABAQCasJyap4swb4Hk4xOlnF3OmKVwzmv2e053yrtvcUPaxCeboSltOBReuT"
+ "QxX+kYCgKCdtEwpIvEDXk16T6nCI4tSptAalFgpUWn+JOysCuLuWnwrk6mSKOzEiPYCrB54444mDY6rbBDSRuE/V"
+ "UYQ/yi0imocARlOiFdPRlZGTN0XGE1V8LSo+m0oIzTwBKn58I4v5iB4ZUL/6adGXo7dgdBh/Fmm4uYbgrCZnL1EaK"
+ "pMxSG76XWhuzFpHjLkRndz88ha0rB6davag6nZGdno5IepLAWg9oB4jTApHwhN2j1rWLN2y1c+pTxsF6LxBiN5rsY"
+ "KR495VFmuOepLYz5I8Dn sequence-eu")
);
}
@Test(expected = BadRequestException.class)
public void inValidPublicKeyWillFailWhenTooShortBody() {
rsaPublicKeyValidator.validate(
azureCredential(
"ssh-rsa AAAA sequence-eu")
);
}
@Test(expected = BadRequestException.class)
public void inValidPublicKeyWillFailWhenMissingUserAndSshRsa() {
rsaPublicKeyValidator.validate(
azureCredential(
"AAAAB3NzaC1yc2EAAAADAQABAAABAQCasJyap4swb4Hk4xOlnF3OmKVwzmv2e053yrtvcUPaxCeboSltOBReuT"
+ "QxX+kYCgKCdtEwpIvEDXk16T6nCI4tSptAalFgpUWn+JOysCuLuWnwrk6mSKOzEiPYCrB54444mDY6rbBDSRuE/V"
+ "UYQ/yi0imocARlOiFdPRlZGTN0XGE1V8LSo+m0oIzTwBKn58I4v5iB4ZUL/6adGXo7dgdBh/Fmm4uYbgrCZnL1EaK"
+ "pMxSG76XWhuzFpHjLkRndz88ha0rB6davag6nZGdno5IepLAWg9oB4jTApHwhN2j1rWLN2y1c+pTxsF6LxBiN5rsY"
+ "KR495VFmuOepLYz5I8Dn")
);
}
@Test(expected = BadRequestException.class)
public void inValidPublicKeyWillFailWhenTotallyInvalidString() {
rsaPublicKeyValidator.validate(
azureCredential(
"ImBAD")
);
}
@Test
public void validSsh2PublicKeyWillNotFail() {
rsaPublicKeyValidator.validate(
azureCredential(
"---- BEGIN SSH2 PUBLIC KEY ----\n"
+ "Comment: \"2048-bit RSA, converted by ricsi@Richards-MacBook-Pro.local \"\n"
+ "AAAAB3NzaC1yc2EAAAADAQABAAABAQC0Rfl2G2vDs6yc19RxCqReunFgpYj+ucyLobpTCB\n"
+ "tfDwzIbJot2Fmife6M42mBtiTmAK6x8kcUEeab6CB4MUzsqF7vGTFUjwWirG/XU5pYXFUB\n"
+ "hi8xzey+KS9KVrQ+UuKJh/AN9iSQeMV+rgT1yF5+etVH+bK1/37QCKp3+mCqjFzPyQOrvk\n"
+ "GZv4sYyRwX7BKBLleQmIVWpofpjT7BfcCxH877RzC5YMIi65aBc82Dl6tH6OEiP7mzByU5\n"
+ "2yvH6JFuwZ/9fWj1vXCWJzxx2w0F1OU8Zwg8gNNzL+SVb9+xfBE7xBHMpYFg72hBWPh862\n"
+ "Ce36F4NZd3MpWMSjMmpDPh\n"
+ "---- END SSH2 PUBLIC KEY ----"
)
);
}
@Test(expected = BadRequestException.class)
public void validSsh2PublicKeyWillNotFailWhenBeginAndEndSsh2Missing() {
rsaPublicKeyValidator.validate(
azureCredential(
"Comment: \"2048-bit RSA, converted by ricsi@Richards-MacBook-Pro.local \"\n"
+ "AAAAB3NzaC1yc2EAAAADAQABAAABAQC0Rfl2G2vDs6yc19RxCqReunFgpYj+ucyLobpTCB\n"
+ "tfDwzIbJot2Fmife6M42mBtiTmAK6x8kcUEeab6CB4MUzsqF7vGTFUjwWirG/XU5pYXFUB\n"
+ "hi8xzey+KS9KVrQ+UuKJh/AN9iSQeMV+rgT1yF5+etVH+bK1/37QCKp3+mCqjFzPyQOrvk\n"
+ "GZv4sYyRwX7BKBLleQmIVWpofpjT7BfcCxH877RzC5YMIi65aBc82Dl6tH6OEiP7mzByU5\n"
+ "2yvH6JFuwZ/9fWj1vXCWJzxx2w0F1OU8Zwg8gNNzL+SVb9+xfBE7xBHMpYFg72hBWPh862\n"
+ "Ce36F4NZd3MpWMSjMmpDPh\n"
)
);
}
@Test(expected = BadRequestException.class)
public void validSsh2PublicKeyWillFailWhenKeyMissing() {
rsaPublicKeyValidator.validate(
azureCredential(
"Comment: \"2048-bit RSA, converted by ricsi@Richards-MacBook-Pro.local \"\n"
+ "AAAAB3NzaC1yc2EAAAADAQABAAABAQC0Rfl2G2vDs6yc19RxCqReunFgpYj+ucyLobpTCB\n"
+ "tfDwzIbJot2Fmife6M42mBtiTmAK6x8kcUEeab6CB4MUzsqF7vGTFUjwWirG/XU5pYXFUB\n"
+ "hi8xzey+KS9KVrQ+UuKJh/AN9iSQeMV+rgT1yF5+etVH+bK1/37QCKp3+mCqjFzPyQOrvk\n"
+ "GZv4sYyRwX7BKBLleQmIVWpofpjT7BfcCxH877RzC5YMIi65aBc82Dl6tH6OEiP7mzByU5\n"
+ "2yvH6JFuwZ/9fWj1vXCWJzxx2w0F1OU8Zwg8gNNzL+SVb9+xfBE7xBHMpYFg72hBWPh862\n"
+ "Ce36F4NZd3MpWMSjMmpDPh\n"
+ "---- END SSH2 PUBLIC KEY ----"
)
);
}
private Credential azureCredential(String publicKey) {
Credential credential = new Credential();
credential.setPublicKey(publicKey);
return credential;
}
}