blob: 79350eb996ffb4505bc09525c42608a5000f5cf4 [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.ambari.server.state.kerberos;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import junit.framework.Assert;
import org.apache.ambari.server.AmbariException;
import org.junit.Test;
import java.util.Map;
import java.util.TreeMap;
public class KerberosKeytabDescriptorTest {
public static final String JSON_VALUE =
"{" +
" \"file\": \"/etc/security/keytabs/${host}/subject.service.keytab\"," +
" \"owner\": {" +
" \"name\": \"subject\"," +
" \"access\": \"rw\"" +
" }," +
" \"group\": {" +
" \"name\": \"hadoop\"," +
" \"access\": \"r\"" +
" }," +
" \"configuration\": \"service-site/service.component.keytab.file\"" +
"}";
public static final Map<String, Object> MAP_VALUE;
static {
TreeMap<String, Object> ownerMap = new TreeMap<String, Object>();
ownerMap.put("name", "root");
ownerMap.put("access", "rw");
TreeMap<String, Object> groupMap = new TreeMap<String, Object>();
groupMap.put("name", "hadoop");
groupMap.put("access", "r");
MAP_VALUE = new TreeMap<String, Object>();
MAP_VALUE.put("file", "/etc/security/keytabs/subject.service.keytab");
MAP_VALUE.put("owner", ownerMap);
MAP_VALUE.put("group", groupMap);
MAP_VALUE.put("configuration", "service-site/service2.component.keytab.file");
}
public static void validateFromJSON(KerberosKeytabDescriptor keytabDescriptor) {
Assert.assertNotNull(keytabDescriptor);
Assert.assertFalse(keytabDescriptor.isContainer());
Assert.assertEquals("/etc/security/keytabs/${host}/subject.service.keytab", keytabDescriptor.getFile());
Assert.assertEquals("subject", keytabDescriptor.getOwnerName());
Assert.assertEquals("rw", keytabDescriptor.getOwnerAccess());
Assert.assertEquals("hadoop", keytabDescriptor.getGroupName());
Assert.assertEquals("r", keytabDescriptor.getGroupAccess());
Assert.assertEquals("service-site/service.component.keytab.file", keytabDescriptor.getConfiguration());
}
public static void validateFromMap(KerberosKeytabDescriptor keytabDescriptor) {
Assert.assertNotNull(keytabDescriptor);
Assert.assertFalse(keytabDescriptor.isContainer());
Assert.assertEquals("/etc/security/keytabs/subject.service.keytab", keytabDescriptor.getFile());
Assert.assertEquals("root", keytabDescriptor.getOwnerName());
Assert.assertEquals("rw", keytabDescriptor.getOwnerAccess());
Assert.assertEquals("hadoop", keytabDescriptor.getGroupName());
Assert.assertEquals("r", keytabDescriptor.getGroupAccess());
Assert.assertEquals("service-site/service2.component.keytab.file", keytabDescriptor.getConfiguration());
}
public static void validateUpdatedData(KerberosKeytabDescriptor keytabDescriptor) {
Assert.assertNotNull(keytabDescriptor);
Assert.assertEquals("/etc/security/keytabs/subject.service.keytab", keytabDescriptor.getFile());
Assert.assertEquals("root", keytabDescriptor.getOwnerName());
Assert.assertEquals("rw", keytabDescriptor.getOwnerAccess());
Assert.assertEquals("hadoop", keytabDescriptor.getGroupName());
Assert.assertEquals("r", keytabDescriptor.getGroupAccess());
Assert.assertEquals("service-site/service2.component.keytab.file", keytabDescriptor.getConfiguration());
}
private static KerberosKeytabDescriptor createFromJSON() {
Map<?, ?> map = new Gson().fromJson(JSON_VALUE,
new TypeToken<Map<?, ?>>() {
}.getType());
return new KerberosKeytabDescriptor(map);
}
private static KerberosKeytabDescriptor createFromMap() {
return new KerberosKeytabDescriptor(MAP_VALUE);
}
@Test
public void testJSONDeserialize() {
validateFromJSON(createFromJSON());
}
@Test
public void testMapDeserialize() {
validateFromMap(createFromMap());
}
@Test
public void testEquals() throws AmbariException {
Assert.assertTrue(createFromJSON().equals(createFromJSON()));
Assert.assertFalse(createFromJSON().equals(createFromMap()));
}
@Test
public void testToMap() throws AmbariException {
KerberosKeytabDescriptor descriptor = createFromMap();
Assert.assertNotNull(descriptor);
Assert.assertEquals(MAP_VALUE, descriptor.toMap());
}
@Test
public void testUpdate() {
KerberosKeytabDescriptor keytabDescriptor = createFromJSON();
KerberosKeytabDescriptor updatedKeytabDescriptor = createFromMap();
Assert.assertNotNull(keytabDescriptor);
Assert.assertNotNull(updatedKeytabDescriptor);
keytabDescriptor.update(updatedKeytabDescriptor);
validateUpdatedData(keytabDescriptor);
}
}