package org.jgroups.protocols;
import org.jgroups.Global;
import org.jgroups.auth.MD5Token;
import org.jgroups.auth.SimpleToken;
import org.testng.annotations.Test;
/**
* A set of JUnit tests for the AUTH protocol
* @author Chris Mills
*/
@Test(groups=Global.FUNCTIONAL,sequential=false)
public class AUTHTest {
/**
* Creates two SimpleToken objects with identical auth_values and authenticates one against the other
* Test fails if an exception is thrown or authentication fails
*/
public static void testSimpleToken() {
SimpleToken token1=new SimpleToken();
token1.setAuthValue("chris");
SimpleToken token2=new SimpleToken();
token2.setAuthValue("chris");
assert token1.authenticate(token2, null);
}
/**
* Creates two SimpleToken objects with different auth_values and authenticates one against the other
* <p/>
* Test fails if an exception is thrown or authentication passes
*/
public static void testSimpleTokenMismatch() {
SimpleToken token1=new SimpleToken();
token1.setAuthValue("chris");
SimpleToken token2=new SimpleToken();
token2.setAuthValue("chrismills");
assert !token1.authenticate(token2, null);
}
/**
* Creates two MD5Token objects with identical auth_values and authenticates one against the other
* <p/>
* Uses an MD5 hash type
* <p/>
* Test fails if an exception is thrown or authentication fails
*/
public static void testMD5Token() {
MD5Token token1=new MD5Token();
token1.setAuthValue("chris");
token1.setHashType("MD5");
MD5Token token2=new MD5Token();
token2.setAuthValue("chris");
token2.setHashType("MD5");
assert token1.authenticate(token2, null);
}
/**
* Creates two MD5Token objects with different auth_values and authenticates one against the other
* <p/>
* Uses an MD5 hash type
* <p/>
* Test fails if an exception is thrown or authentication passes
*/
public static void testMD5TokenMismatch() {
MD5Token token1=new MD5Token();
token1.setAuthValue("chris");
token1.setHashType("MD5");
MD5Token token2=new MD5Token();
token2.setAuthValue("chrismills");
token2.setHashType("MD5");
assert !token1.authenticate(token2, null);
}
/**
* Creates two MD5Token objects with identical auth_values and authenticates one against the other
* <p/>
* Uses an SHA hash type
* <p/>
* Test fails if an exception is thrown or authentication fails
*/
public static void testSHAToken() {
MD5Token token1=new MD5Token();
token1.setAuthValue("chris");
token1.setHashType("SHA");
MD5Token token2=new MD5Token();
token2.setAuthValue("chris");
token2.setHashType("SHA");
assert token1.authenticate(token2, null);
}
/**
* Creates two MD5Token objects with different auth_values and authenticates one against the other
* <p/>
* Uses an SHA hash type
* <p/>
* Test fails if an exception is thrown or authentication passes
*/
public static void testSHATokenMismatch() {
MD5Token token1=new MD5Token();
token1.setAuthValue("chris");
token1.setHashType("SHA");
MD5Token token2=new MD5Token();
token2.setAuthValue("chrismills");
token2.setHashType("SHA");
assert !token1.authenticate(token2, null);
}
/**
* Test to create an AuthHeader object and set and get the Token object
* <p/>
* Fails if an exception is thrown or the set and get don't equal the same object
*/
public static void testAuthHeader() {
SimpleToken token1=new SimpleToken();
token1.setAuthValue("chris");
AuthHeader header=new AuthHeader();
header.setToken(token1);
assert token1 == header.getToken();
}
/**
* Test to create an AuthHeader object and set and get the Token object
* <p/>
* Fails if an exception is thrown or the set and get equal the same object
*/
public static void testAuthHeaderDifferent() {
SimpleToken token1=new SimpleToken();
token1.setAuthValue("chris");
SimpleToken token2=new SimpleToken();
token2.setAuthValue("chris");
AuthHeader header=new AuthHeader();
header.setToken(token1);
assert !(token2 == header.getToken());
}
}