blob: 4688074bdce7aaee83ab4abb2f3602d25ea67c03 [file] [log] [blame]
/**
* Licensed 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.pulsar.manager.dao;
import com.github.pagehelper.Page;
import org.apache.pulsar.manager.PulsarManagerApplication;
import org.apache.pulsar.manager.entity.RoleInfoEntity;
import org.apache.pulsar.manager.entity.RolesRepository;
import org.apache.pulsar.manager.profiles.HerdDBTestProfile;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@RunWith(SpringRunner.class)
@SpringBootTest(
classes = {
PulsarManagerApplication.class,
HerdDBTestProfile.class
}
)
@ActiveProfiles("test")
public class RolesRepositoryImplTest {
@Autowired
private RolesRepository rolesRepository;
private void initRole(RoleInfoEntity roleInfoEntity) {
roleInfoEntity.setRoleName("test-role-name");
roleInfoEntity.setRoleSource("test-tenant");
roleInfoEntity.setResourceType("tenants");
roleInfoEntity.setResourceName("tenants");
roleInfoEntity.setResourceVerbs("admin");
roleInfoEntity.setResourceId(2);
roleInfoEntity.setDescription("This is tenants permissions");
roleInfoEntity.setFlag(0);
}
private void validateRole(RoleInfoEntity role) {
Assert.assertEquals(role.getRoleName(), "test-role-name");
Assert.assertEquals(role.getRoleSource(), "test-tenant");
Assert.assertEquals(role.getResourceType(), "tenants");
Assert.assertEquals(role.getResourceName(), "tenants");
Assert.assertEquals(role.getResourceVerbs(), "admin");
Assert.assertEquals(role.getResourceId(), 2);
Assert.assertEquals(role.getDescription(), "This is tenants permissions");
Assert.assertEquals(role.getFlag(), 0);
}
@Test
public void getRolesListTest() {
RoleInfoEntity roleInfoEntity = new RoleInfoEntity();
initRole(roleInfoEntity);
rolesRepository.save(roleInfoEntity);
Page<RoleInfoEntity> rolesList = rolesRepository.findRolesList(1, 10);
rolesList.count(true);
rolesList.getResult().forEach((role) -> {
validateRole(role);
rolesRepository.delete(role.getRoleName(), role.getRoleSource());
});
}
@Test
public void findRolesListByRoleSourceTest() {
RoleInfoEntity roleInfoEntity = new RoleInfoEntity();
initRole(roleInfoEntity);
rolesRepository.save(roleInfoEntity);
List<RoleInfoEntity> rolesList = rolesRepository.findRolesListByRoleSource("test-tenant");
rolesList.forEach((role) -> {
validateRole(role);
rolesRepository.delete(role.getRoleName(), role.getRoleSource());
});
}
@Test
public void getRoleInfoTest() {
RoleInfoEntity roleInfoEntity = new RoleInfoEntity();
initRole(roleInfoEntity);
rolesRepository.save(roleInfoEntity);
Optional<RoleInfoEntity> getRoleInfo = rolesRepository.findByRoleName(
roleInfoEntity.getRoleName(), roleInfoEntity.getRoleSource());
RoleInfoEntity getRoleInfoEntity = getRoleInfo.get();
validateRole(getRoleInfoEntity);
roleInfoEntity.setResourceType("clusters");
roleInfoEntity.setResourceVerbs("admin,produce,consume");
roleInfoEntity.setDescription("This is update role");
roleInfoEntity.setFlag(1);
rolesRepository.update(roleInfoEntity);
Optional<RoleInfoEntity> updateRoleInfo = rolesRepository.findByRoleName(
roleInfoEntity.getRoleName(), roleInfoEntity.getRoleSource());
RoleInfoEntity updateRoleInfoEntity = updateRoleInfo.get();
Assert.assertEquals(updateRoleInfoEntity.getResourceType(), "clusters");
Assert.assertEquals(updateRoleInfoEntity.getResourceVerbs(), "admin,produce,consume");
Assert.assertEquals(updateRoleInfoEntity.getDescription(), "This is update role");
Assert.assertEquals(updateRoleInfoEntity.getFlag(), 1);
rolesRepository.delete(roleInfoEntity.getRoleName(), roleInfoEntity.getRoleSource());
Optional<RoleInfoEntity> deleteRoleInfo = rolesRepository.findByRoleName(
roleInfoEntity.getRoleName(), roleInfoEntity.getRoleSource());
Assert.assertFalse(deleteRoleInfo.isPresent());
}
@Test
public void findMultiIdTest() {
RoleInfoEntity roleInfoEntity = new RoleInfoEntity();
initRole(roleInfoEntity);
long roleId = rolesRepository.save(roleInfoEntity);
List<Long> roleIdList = new ArrayList<>();
roleIdList.add(roleId);
roleIdList.add(roleInfoEntity.getRoleId());
Page<RoleInfoEntity> roleInfoEntities = rolesRepository.findRolesMultiId(1, 2, roleIdList);
roleInfoEntities.count(true);
for (RoleInfoEntity infoEntity : roleInfoEntities.getResult()) {
validateRole(infoEntity);
rolesRepository.delete(infoEntity.getRoleName(), infoEntity.getRoleSource());
}
}
}