package hudson.plugins.collabnet.auth;
import com.collabnet.ce.webservices.CTFGroup;
import com.collabnet.ce.webservices.CTFUser;
import com.collabnet.ce.webservices.CollabNetApp;
import hudson.plugins.collabnet.CNHudsonTestCase;
import hudson.plugins.collabnet.TestParam;
import java.rmi.RemoteException;
/**
* @author Kohsuke Kawaguchi
*/
public abstract class AbstractSecurityTestCase extends CNHudsonTestCase {
@TestParam
protected String admin_group = "hudsonAdmins";
@TestParam
protected String admin_group_member = "hudsonAdminMember";
@TestParam
protected String read_user = "hudsonRead";
@TestParam
protected String read_group = "hudsonReaders";
@TestParam
protected String read_group_member = "hudsonReadMember";
protected void installSecurityRealm() {
hudson.setSecurityRealm(new CollabNetSecurityRealm(teamforge_url, false, false));
}
/**
* Installs global authorization strategy.
*/
protected void installAuthorizationStrategy() throws Exception {
installSecurityRealm();
hudson.setAuthorizationStrategy(new CNAuthorizationStrategy(
read_user, read_group, admin_user, admin_group, 5
));
// make sure that groups and group members are exist and set up
CollabNetApp cna = connect();
CTFGroup ag = cna.getGroupByTitle(admin_group);
if (ag==null)
ag = cna.createGroup(admin_group,admin_group);
CTFUser agm = cna.getUser(admin_group_member);
if (agm==null) {
agm = createUser(cna,admin_group_member);
}
ag.addMember(agm);
CTFGroup rg = cna.getGroupByTitle(read_group);
if (rg==null)
rg = cna.createGroup(read_group,read_group);
CTFUser rgm = cna.getUser(read_group_member);
if (rgm==null) {
rgm = createUser(cna,read_group_member);
}
rg.addMember(rgm);
}
public CTFUser createUser(CollabNetApp cna, String name) throws RemoteException {
return cna.createUser(name, name +"@example.org", name,"en","PST",false,false, name);
}
protected WebClient createAdminWebClient() throws Exception {
return createWebClient().login(admin_user,password);
}
}