blob: 51880c2d1f6faf9e16323aba3926b9a5f4c508e4 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.security;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.TestWritable;
import junit.framework.TestCase;
/** Unit tests for UnixUserGroupInformation */
public class TestUnixUserGroupInformation extends TestCase {
final private static String USER_NAME = "user1";
final private static String GROUP1_NAME = "group1";
final private static String GROUP2_NAME = "group2";
final private static String GROUP3_NAME = "group3";
final private static String[] GROUP_NAMES =
new String[]{GROUP1_NAME, GROUP2_NAME, GROUP3_NAME};
/** Test login method */
public void testLogin() throws Exception {
Configuration conf = new Configuration();
// loin from unix
String userName = UnixUserGroupInformation.getUnixUserName();
UnixUserGroupInformation curUserGroupInfo =
UnixUserGroupInformation.login(conf);
assertEquals(curUserGroupInfo.getUserName(), userName);
assertTrue(curUserGroupInfo == UnixUserGroupInformation.login(conf));
// login from the configuration
UnixUserGroupInformation userGroupInfo = new UnixUserGroupInformation(
USER_NAME, GROUP_NAMES );
UnixUserGroupInformation.saveToConf(conf,
UnixUserGroupInformation.UGI_PROPERTY_NAME, userGroupInfo);
curUserGroupInfo = UnixUserGroupInformation.login(conf);
assertEquals(curUserGroupInfo, userGroupInfo);
assertTrue(curUserGroupInfo == UnixUserGroupInformation.login(conf));
}
/** test constructor */
public void testConstructor() throws Exception {
UnixUserGroupInformation uugi =
new UnixUserGroupInformation(USER_NAME, GROUP_NAMES);
assertEquals(uugi, new UnixUserGroupInformation( new String[]{
USER_NAME, GROUP1_NAME, GROUP2_NAME, GROUP3_NAME} ));
// failure test
testConstructorFailures(null, GROUP_NAMES);
testConstructorFailures("", GROUP_NAMES);
testConstructorFailures(USER_NAME, null);
testConstructorFailures(USER_NAME, new String[0]);
testConstructorFailures(USER_NAME, new String[]{null});
testConstructorFailures(USER_NAME, new String[]{""});
testConstructorFailures(USER_NAME, new String[]{GROUP1_NAME, null});
testConstructorFailures(USER_NAME,
new String[]{GROUP1_NAME, null, GROUP2_NAME});
}
private void testConstructorFailures(String userName, String[] groupNames) {
boolean gotException = false;
try {
new UnixUserGroupInformation(userName, groupNames);
} catch (Exception e) {
gotException = true;
}
assertTrue(gotException);
}
public void testEquals() throws Exception {
UnixUserGroupInformation uugi =
new UnixUserGroupInformation(USER_NAME, GROUP_NAMES);
assertEquals(uugi, uugi);
assertEquals(uugi, new UnixUserGroupInformation(USER_NAME, GROUP_NAMES));
assertEquals(uugi, new UnixUserGroupInformation(USER_NAME,
new String[]{GROUP1_NAME, GROUP3_NAME, GROUP2_NAME}));
assertFalse(uugi.equals(new UnixUserGroupInformation()));
assertFalse(uugi.equals(new UnixUserGroupInformation(USER_NAME,
new String[]{GROUP2_NAME, GROUP3_NAME, GROUP1_NAME})));
}
/** test Writable */
public void testWritable() throws Exception {
UnixUserGroupInformation ugi = new UnixUserGroupInformation(
USER_NAME, GROUP_NAMES);
TestWritable.testWritable(ugi, new Configuration());
}
}