package org.apache.kerberos.kerb.codec.test;
import org.apache.kerberos.kerb.codec.spnego.SpnegoConstants;
import org.apache.kerberos.kerb.codec.spnego.SpnegoInitToken;
import org.apache.kerberos.kerb.codec.spnego.SpnegoToken;
import org.junit.Assert;
import java.io.IOException;
import java.io.InputStream;
public class TestSpnego {
private byte[] rc4Token;
private byte[] desToken;
private byte[] aes128Token;
private byte[] aes256Token;
private byte[] corruptToken;
//@Before
public void setUp() throws IOException {
InputStream file;
file = this.getClass().getClassLoader().getResourceAsStream("rc4-spnego-data");
rc4Token = new byte[file.available()];
file.read(rc4Token);
file.close();
file = this.getClass().getClassLoader().getResourceAsStream("des-spnego-data");
desToken = new byte[file.available()];
file.read(desToken);
file.close();
file = this.getClass().getClassLoader().getResourceAsStream("aes128-spnego-data");
aes128Token = new byte[file.available()];
file.read(aes128Token);
file.close();
file = this.getClass().getClassLoader().getResourceAsStream("aes256-spnego-data");
aes256Token = new byte[file.available()];
file.read(aes256Token);
file.close();
corruptToken = new byte[]{5, 4, 2, 1};
}
//@Test
public void testRc4Token() {
try {
SpnegoToken spnegoToken = SpnegoToken.parse(rc4Token);
Assert.assertNotNull(spnegoToken);
Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
Assert.assertNotNull(spnegoToken.getMechanismToken());
Assert.assertTrue(spnegoToken.getMechanismToken().length < rc4Token.length);
Assert.assertNotNull(spnegoToken.getMechanism());
Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
} catch(IOException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
//@Test
public void testDesToken() {
try {
SpnegoToken spnegoToken = SpnegoToken.parse(desToken);
Assert.assertNotNull(spnegoToken);
Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
Assert.assertNotNull(spnegoToken.getMechanismToken());
Assert.assertTrue(spnegoToken.getMechanismToken().length < desToken.length);
Assert.assertNotNull(spnegoToken.getMechanism());
Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
} catch(IOException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
//@Test
public void testAes128Token() {
try {
SpnegoToken spnegoToken = SpnegoToken.parse(aes128Token);
Assert.assertNotNull(spnegoToken);
Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
Assert.assertNotNull(spnegoToken.getMechanismToken());
Assert.assertTrue(spnegoToken.getMechanismToken().length < aes128Token.length);
Assert.assertNotNull(spnegoToken.getMechanism());
Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
} catch(IOException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
//@Test
public void testAes256Token() {
try {
SpnegoToken spnegoToken = SpnegoToken.parse(aes256Token);
Assert.assertNotNull(spnegoToken);
Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
Assert.assertNotNull(spnegoToken.getMechanismToken());
Assert.assertTrue(spnegoToken.getMechanismToken().length < aes256Token.length);
Assert.assertNotNull(spnegoToken.getMechanism());
Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
} catch(IOException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
//@Test
public void testEmptyToken() {
SpnegoToken spnegoToken = null;
try {
spnegoToken = SpnegoToken.parse(new byte[0]);
Assert.fail("Should have thrown DecodingException.");
} catch(IOException e) {
Assert.assertNotNull(e);
Assert.assertNull(spnegoToken);
}
}
//@Test
public void testCorruptToken() {
SpnegoToken spnegoToken = null;
try {
spnegoToken = SpnegoToken.parse(corruptToken);
Assert.fail("Should have thrown DecodingException.");
} catch(IOException e) {
Assert.assertNotNull(e);
Assert.assertNull(spnegoToken);
}
}
//@Test
public void testNullToken() {
SpnegoToken spnegoToken = null;
try {
spnegoToken = SpnegoToken.parse(null);
Assert.fail("Should have thrown NullPointerException.");
} catch(IOException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
} catch(NullPointerException e) {
Assert.assertNotNull(e);
Assert.assertNull(spnegoToken);
}
}
}