/*
* 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.ranger.rest;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.WebApplicationException;
import org.apache.ranger.biz.KmsKeyMgr;
import org.apache.ranger.biz.XAuditMgr;
import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.common.SearchUtil;
import org.apache.ranger.service.XAccessAuditService;
import org.apache.ranger.service.XTrxLogService;
import org.apache.ranger.view.VXKmsKey;
import org.apache.ranger.view.VXKmsKeyList;
import org.junit.Assert;
import org.junit.FixMethodOrder;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestXKeyREST {
@InjectMocks
XKeyREST keyREST = new XKeyREST();
@Mock
XAuditMgr xAuditMgr;
@Mock
SearchUtil searchUtil;
@Mock
XTrxLogService xLog;
@Mock
XAccessAuditService xAccessAuditSrv;
@Mock
KmsKeyMgr keyMgr;
@Mock
VXKmsKey vxKmsKey;
@Mock
RESTErrorUtil restErrorUtil;
@Mock
HttpServletRequest request;
@Rule
public ExpectedException thrown = ExpectedException.none();
String provider = "providerX";
String name = "xyz";
String nameNl = "";
@Test
public void Test1Searchkeys() throws Exception {
VXKmsKeyList vxKeyListExp = new VXKmsKeyList();
Mockito.when(keyMgr.searchKeys(request, provider)).thenReturn(vxKeyListExp);
VXKmsKeyList vxKeyListAct = keyREST.searchKeys(request, provider);
Assert.assertNotNull(vxKeyListAct);
Assert.assertEquals(vxKeyListExp, vxKeyListAct);
Mockito.verify(keyMgr).searchKeys(request, provider);
}
@Test
public void Test2RolloverKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
vxKeyExp.setName(name);
vxKeyExp.setCipher("CipherX");
Mockito.when(keyMgr.rolloverKey(provider, vxKeyExp)).thenReturn(vxKeyExp);
VXKmsKey vxKeyAct = keyREST.rolloverKey(provider, vxKeyExp);
Assert.assertNotNull(vxKeyAct);
Assert.assertEquals(vxKeyExp, vxKeyAct);
Assert.assertEquals(vxKeyExp.getName(), vxKeyAct.getName());
Mockito.verify(keyMgr).rolloverKey(provider, vxKeyExp);
}
@Test
public void Test3RolloverKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
vxKeyExp.setName(name);
Mockito.when(keyMgr.rolloverKey(provider, vxKeyExp)).thenReturn(vxKeyExp);
VXKmsKey vxKeyAct = keyREST.rolloverKey(provider, vxKeyExp);
Assert.assertNotNull(vxKeyAct);
Assert.assertEquals(vxKeyExp, vxKeyAct);
Assert.assertEquals(vxKeyExp.getName(), vxKeyAct.getName());
Assert.assertNull(vxKeyAct.getCipher());
Mockito.verify(keyMgr).rolloverKey(provider, vxKeyExp);
}
@Test
public void Test4RolloverKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any()))
.thenReturn(new WebApplicationException());
thrown.expect(WebApplicationException.class);
keyREST.rolloverKey(provider, vxKeyExp);
Mockito.verify(restErrorUtil).createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any());
}
@Test
public void Test5DeleteKey() throws Exception {
Mockito.doNothing().when(keyMgr).deleteKey(provider, name);
keyREST.deleteKey(name, provider, request);
Mockito.verify(keyMgr).deleteKey(provider, name);
}
@Test
public void Test6DeleteKey() throws Exception {
Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any()))
.thenReturn(new WebApplicationException());
thrown.expect(WebApplicationException.class);
keyREST.deleteKey(nameNl, provider, request);
Mockito.verify(restErrorUtil).createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any());
}
@Test
public void Test6CreateKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
vxKeyExp.setName(name);
vxKeyExp.setCipher("CipherX");
Mockito.when(keyMgr.createKey(provider, vxKeyExp)).thenReturn(vxKeyExp);
VXKmsKey vxKeyAct = keyREST.createKey(provider, vxKeyExp);
Assert.assertNotNull(vxKeyAct);
Assert.assertEquals(vxKeyAct, vxKeyExp);
Assert.assertEquals(vxKeyExp.getName(), vxKeyAct.getName());
Assert.assertEquals(vxKeyExp.getCipher(), vxKeyAct.getCipher());
Mockito.verify(keyMgr).createKey(provider, vxKeyExp);
}
@Test
public void Test7CreateKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
vxKeyExp.setName(name);
Mockito.when(keyMgr.createKey(provider, vxKeyExp)).thenReturn(vxKeyExp);
VXKmsKey vxKeyAct = keyREST.createKey(provider, vxKeyExp);
Assert.assertNotNull(vxKeyAct);
Assert.assertEquals(vxKeyAct, vxKeyExp);
Assert.assertEquals(vxKeyExp.getName(), vxKeyAct.getName());
Assert.assertNull(vxKeyAct.getCipher());
Mockito.verify(keyMgr).createKey(provider, vxKeyExp);
}
@Test
public void Test8CreateKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any()))
.thenReturn(new WebApplicationException());
thrown.expect(WebApplicationException.class);
VXKmsKey vxKeyAct = keyREST.createKey(provider, vxKeyExp);
Mockito.verify(restErrorUtil).createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any());
Assert.assertNull(vxKeyAct);
}
@Test
public void Test9GetKey() throws Exception {
VXKmsKey vxKeyExp = new VXKmsKey();
Mockito.when(keyMgr.getKey(provider, name)).thenReturn(vxKeyExp);
VXKmsKey vxKeyAct = keyREST.getKey(name, provider);
Assert.assertNotNull(vxKeyAct);
Assert.assertEquals(vxKeyAct, vxKeyExp);
Assert.assertEquals(vxKeyExp.getName(), vxKeyAct.getName());
Mockito.verify(keyMgr).getKey(provider, name);
}
@Test
public void Test10GetKey() throws Exception {
Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any()))
.thenReturn(new WebApplicationException());
thrown.expect(WebApplicationException.class);
VXKmsKey vxKeyAct = keyREST.getKey(nameNl, provider);
Assert.assertNull(vxKeyAct);
Mockito.verify(restErrorUtil).createRESTException(Mockito.anyString(), (MessageEnums) Mockito.any());
}
}