/* * The MIT License (MIT) * * Copyright (c) 2014 Andreas Alanko, Emil Nilsson, Sony Mobile Communications AB. * All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.sonymobile.jenkins.plugins.gitlab.gitlabauth.acl; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.junit.Before; import org.junit.Test; import com.sonymobile.gitlab.model.GitLabAccessLevel; import com.sonymobile.jenkins.plugins.gitlab.gitlabauth.acl.GitLabPermissionIdentity.IdentityType; /** * Test class for {@link GitLabPermissionIdentity}. * * @author Andreas Alanko */ public class GitLabPermissionIdentityTest { private List<GitLabPermissionIdentity> allIdentitiesSorted; @Before public void setUp() { allIdentitiesSorted = new ArrayList<GitLabPermissionIdentity>(); allIdentitiesSorted.add(GitLabPermissionIdentity.JENKINS_ADMIN); allIdentitiesSorted.add(GitLabPermissionIdentity.JENKINS_LOGGED_IN); allIdentitiesSorted.add(GitLabPermissionIdentity.JENKINS_ANONYMOUS); allIdentitiesSorted.add(GitLabPermissionIdentity.GITLAB_OWNER); allIdentitiesSorted.add(GitLabPermissionIdentity.GITLAB_MASTER); allIdentitiesSorted.add(GitLabPermissionIdentity.GITLAB_DEVELOPER); allIdentitiesSorted.add(GitLabPermissionIdentity.GITLAB_REPORTER); allIdentitiesSorted.add(GitLabPermissionIdentity.GITLAB_GUEST); allIdentitiesSorted.add(GitLabPermissionIdentity.user("AuserName")); allIdentitiesSorted.add(GitLabPermissionIdentity.user("userName")); allIdentitiesSorted.add(GitLabPermissionIdentity.group("AgroupName")); allIdentitiesSorted.add(GitLabPermissionIdentity.group("groupName")); } @Test public void testJenkins() { assertEquals(IdentityType.JENKINS, GitLabPermissionIdentity.JENKINS_ADMIN.type); assertEquals("ADMIN", GitLabPermissionIdentity.JENKINS_ADMIN.id); assertEquals("Admin", GitLabPermissionIdentity.JENKINS_ADMIN.displayName); } @Test public void testGitLab() { assertEquals(IdentityType.GITLAB, GitLabPermissionIdentity.GITLAB_MASTER.type); assertEquals("MASTER", GitLabPermissionIdentity.GITLAB_MASTER.id); assertEquals("Master", GitLabPermissionIdentity.GITLAB_MASTER.displayName); } @Test public void testUser() { GitLabPermissionIdentity u1 = GitLabPermissionIdentity.user("u1"); GitLabPermissionIdentity u2 = GitLabPermissionIdentity.user("u2"); assertEquals(IdentityType.USER, u1.type); assertEquals("u1", u1.id); assertEquals("u1", u1.displayName); assertEquals(IdentityType.USER, u2.type); assertEquals("u2", u2.id); assertEquals("u2", u2.displayName); assertNotEquals(u1, u2); } @Test public void testGroup() { GitLabPermissionIdentity g1 = GitLabPermissionIdentity.group("g1"); GitLabPermissionIdentity g2 = GitLabPermissionIdentity.group("g2"); assertEquals(IdentityType.GROUP, g1.type); assertEquals("g1", g1.id); assertEquals("g1", g1.displayName); assertEquals(IdentityType.GROUP, g2.type); assertEquals("g2", g2.id); assertEquals("g2", g2.displayName); assertNotEquals(g1, g2); } @Test public void testGetGitLabPermissionIdentityWithAccessLevel() { assertEquals(GitLabPermissionIdentity.getGitLabIdentityFromAccessLevel(GitLabAccessLevel.OWNER), GitLabPermissionIdentity.GITLAB_OWNER); assertEquals(GitLabPermissionIdentity.getGitLabIdentityFromAccessLevel(GitLabAccessLevel.MASTER), GitLabPermissionIdentity.GITLAB_MASTER); assertEquals(GitLabPermissionIdentity.getGitLabIdentityFromAccessLevel(GitLabAccessLevel.DEVELOPER), GitLabPermissionIdentity.GITLAB_DEVELOPER); assertEquals(GitLabPermissionIdentity.getGitLabIdentityFromAccessLevel(GitLabAccessLevel.REPORTER), GitLabPermissionIdentity.GITLAB_REPORTER); assertEquals(GitLabPermissionIdentity.getGitLabIdentityFromAccessLevel(GitLabAccessLevel.GUEST), GitLabPermissionIdentity.GITLAB_GUEST); } @Test public void testGetJenkinsPermissionIdentityWithAccessLevel() { assertEquals(GitLabPermissionIdentity.getJenkinsIdentityFromAccessLevel(JenkinsAccessLevel.ADMIN), GitLabPermissionIdentity.JENKINS_ADMIN); assertEquals(GitLabPermissionIdentity.getJenkinsIdentityFromAccessLevel(JenkinsAccessLevel.LOGGED_IN), GitLabPermissionIdentity.JENKINS_LOGGED_IN); assertEquals(GitLabPermissionIdentity.getJenkinsIdentityFromAccessLevel(JenkinsAccessLevel.ANONYMOUS), GitLabPermissionIdentity.JENKINS_ANONYMOUS); } @Test public void testGetGlobalStaticPermissionIdentitiesWithGitLab() { List<GitLabPermissionIdentity> list = GitLabPermissionIdentity.getGlobalStaticPermissionIdentities(true); assertTrue(list.contains(GitLabPermissionIdentity.JENKINS_ADMIN)); assertTrue(list.contains(GitLabPermissionIdentity.JENKINS_LOGGED_IN)); assertTrue(list.contains(GitLabPermissionIdentity.JENKINS_ANONYMOUS)); assertTrue(list.contains(GitLabPermissionIdentity.GITLAB_OWNER)); assertTrue(list.contains(GitLabPermissionIdentity.GITLAB_MASTER)); assertTrue(list.contains(GitLabPermissionIdentity.GITLAB_DEVELOPER)); assertTrue(list.contains(GitLabPermissionIdentity.GITLAB_REPORTER)); assertTrue(list.contains(GitLabPermissionIdentity.GITLAB_GUEST)); } @Test public void testGetGlobalStaticPermissionIdentities() { List<GitLabPermissionIdentity> list = GitLabPermissionIdentity.getGlobalStaticPermissionIdentities(false); assertTrue(list.contains(GitLabPermissionIdentity.JENKINS_ADMIN)); assertTrue(list.contains(GitLabPermissionIdentity.JENKINS_LOGGED_IN)); assertTrue(list.contains(GitLabPermissionIdentity.JENKINS_ANONYMOUS)); assertFalse(list.contains(GitLabPermissionIdentity.GITLAB_OWNER)); assertFalse(list.contains(GitLabPermissionIdentity.GITLAB_MASTER)); assertFalse(list.contains(GitLabPermissionIdentity.GITLAB_DEVELOPER)); assertFalse(list.contains(GitLabPermissionIdentity.GITLAB_REPORTER)); assertFalse(list.contains(GitLabPermissionIdentity.GITLAB_GUEST)); } @Test public void testCompareTo() { ArrayList<GitLabPermissionIdentity> allIdentitiesShuffled = new ArrayList<GitLabPermissionIdentity>(); allIdentitiesShuffled.add(GitLabPermissionIdentity.JENKINS_ANONYMOUS); allIdentitiesShuffled.add(GitLabPermissionIdentity.GITLAB_REPORTER); allIdentitiesShuffled.add(GitLabPermissionIdentity.user("userName")); allIdentitiesShuffled.add(GitLabPermissionIdentity.GITLAB_DEVELOPER); allIdentitiesShuffled.add(GitLabPermissionIdentity.GITLAB_OWNER); allIdentitiesShuffled.add(GitLabPermissionIdentity.group("groupName")); allIdentitiesShuffled.add(GitLabPermissionIdentity.JENKINS_ADMIN); allIdentitiesShuffled.add(GitLabPermissionIdentity.user("AuserName")); allIdentitiesShuffled.add(GitLabPermissionIdentity.GITLAB_GUEST); allIdentitiesShuffled.add(GitLabPermissionIdentity.JENKINS_LOGGED_IN); allIdentitiesShuffled.add(GitLabPermissionIdentity.GITLAB_MASTER); allIdentitiesShuffled.add(GitLabPermissionIdentity.group("AgroupName")); Collections.sort(allIdentitiesShuffled); assertEquals(allIdentitiesSorted, allIdentitiesShuffled); } @Test public void testEquals() { assertTrue(GitLabPermissionIdentity.GITLAB_OWNER.equals(GitLabPermissionIdentity.GITLAB_OWNER)); assertTrue(GitLabPermissionIdentity.JENKINS_LOGGED_IN.equals(GitLabPermissionIdentity.JENKINS_LOGGED_IN)); assertTrue(GitLabPermissionIdentity.group("groupName").equals(GitLabPermissionIdentity.group("groupName"))); assertTrue(GitLabPermissionIdentity.user("userName").equals(GitLabPermissionIdentity.user("userName"))); assertFalse(GitLabPermissionIdentity.GITLAB_MASTER.equals(GitLabPermissionIdentity.JENKINS_ADMIN)); assertFalse(GitLabPermissionIdentity.group("groupName").equals(GitLabPermissionIdentity.user("userName"))); } @Test public void testToString() { assertEquals(GitLabPermissionIdentity.GITLAB_DEVELOPER.toString(), "GITLAB:DEVELOPER"); assertNotSame(GitLabPermissionIdentity.GITLAB_DEVELOPER.toString(), "GITLAB:DEVELOPERs"); } @Test public void testIdentityTypesOrder() { IdentityType[] types = IdentityType.values(); assertEquals(types[0], IdentityType.GROUP); assertEquals(types[1], IdentityType.USER); assertEquals(types[2], IdentityType.GITLAB); assertEquals(types[3], IdentityType.JENKINS); } @Test public void testIdentityTypesAmount() { IdentityType[] types = IdentityType.values(); assertEquals(4, types.length); } @Test public void testIdentityTypeDisplayNames() { assertEquals("Group", IdentityType.GROUP.displayName); assertEquals("User", IdentityType.USER.displayName); assertEquals("Jenkins", IdentityType.JENKINS.displayName); assertEquals("GitLab", IdentityType.GITLAB.displayName); } }