You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rl...@apache.org on 2017/07/27 11:01:09 UTC
[1/2] ambari git commit: Revert "AMBARI-21578. testBadCredential UT
fails (rlevas)"
Repository: ambari
Updated Branches:
refs/heads/trunk f55b115af -> c516b3107
Revert "AMBARI-21578. testBadCredential UT fails (rlevas)"
This reverts commit f55b115afe533faa7d41cff2c8b6c252ed6e498a.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9d605cd1
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9d605cd1
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9d605cd1
Branch: refs/heads/trunk
Commit: 9d605cd1845d528894c02d3d276002179780348f
Parents: f55b115
Author: Robert Levas <rl...@hortonworks.com>
Authored: Thu Jul 27 07:00:30 2017 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Thu Jul 27 07:00:30 2017 -0400
----------------------------------------------------------------------
ambari-server/pom.xml | 2 +-
.../AmbariPamAuthenticationProvider.java | 5 +-
.../AmbariPamAuthenticationProviderTest.java | 145 ++++++++-----------
3 files changed, 65 insertions(+), 87 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9d605cd1/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index 3c966f2..70907da 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -1684,7 +1684,7 @@
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
- <version>4.2.2</version>
+ <version>4.3.0</version>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/ambari/blob/9d605cd1/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
index 8678294..373552e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
@@ -29,7 +29,6 @@ import org.apache.ambari.server.orm.entities.GroupEntity;
import org.apache.ambari.server.orm.entities.MemberEntity;
import org.apache.ambari.server.orm.entities.UserEntity;
import org.apache.ambari.server.security.ClientSecurityType;
-import org.apache.ambari.server.security.authentication.pam.PamAuthenticationFactory;
import org.jvnet.libpam.PAM;
import org.jvnet.libpam.PAMException;
import org.jvnet.libpam.UnixUser;
@@ -55,8 +54,6 @@ public class AmbariPamAuthenticationProvider implements AuthenticationProvider {
protected UserDAO userDAO;
@Inject
protected GroupDAO groupDAO;
- @Inject
- private PamAuthenticationFactory pamAuthenticationFactory;
private static final Logger LOG = LoggerFactory.getLogger(AmbariPamAuthenticationProvider.class);
@@ -88,7 +85,7 @@ public class AmbariPamAuthenticationProvider implements AuthenticationProvider {
try{
//Set PAM configuration file (found under /etc/pam.d)
String pamConfig = configuration.getPamConfigurationFile();
- pam = pamAuthenticationFactory.createInstance(pamConfig);
+ pam = new PAM(pamConfig);
} catch(PAMException ex) {
LOG.error("Unable to Initialize PAM." + ex.getMessage());
http://git-wip-us.apache.org/repos/asf/ambari/blob/9d605cd1/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
index 9cfd148..8faa6ce 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
@@ -17,120 +17,91 @@
*/
package org.apache.ambari.server.security.authorization;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
-import javax.persistence.EntityManager;
-
+import org.apache.ambari.server.H2DatabaseCleaner;
+import org.apache.ambari.server.audit.AuditLoggerModule;
import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.hooks.HookContextFactory;
-import org.apache.ambari.server.hooks.HookService;
-import org.apache.ambari.server.orm.DBAccessor;
+import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.dao.UserDAO;
+import org.apache.ambari.server.orm.entities.PrincipalEntity;
+import org.apache.ambari.server.orm.entities.UserEntity;
import org.apache.ambari.server.security.ClientSecurityType;
-import org.apache.ambari.server.security.authentication.pam.PamAuthenticationFactory;
-import org.apache.ambari.server.state.stack.OsFamily;
-import org.easymock.EasyMockSupport;
+import org.easymock.EasyMock;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.jvnet.libpam.PAM;
-import org.jvnet.libpam.PAMException;
import org.jvnet.libpam.UnixUser;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.crypto.password.StandardPasswordEncoder;
-import com.google.inject.AbstractModule;
import com.google.inject.Guice;
+import com.google.inject.Inject;
import com.google.inject.Injector;
import junit.framework.Assert;
-public class AmbariPamAuthenticationProviderTest extends EasyMockSupport {
+public class AmbariPamAuthenticationProviderTest {
+
+ private static Injector injector;
+
+ @Inject
+ PasswordEncoder passwordEncoder;
+ @Inject
+ private AmbariPamAuthenticationProvider authenticationProvider;
+ @Inject
+ Configuration configuration;
private static final String TEST_USER_NAME = "userName";
private static final String TEST_USER_PASS = "userPass";
private static final String TEST_USER_INCORRECT_PASS = "userIncorrectPass";
- private Injector injector;
-
@Before
- public void setup() {
- injector = Guice.createInjector(new AbstractModule() {
-
- @Override
- protected void configure() {
- bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
- bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
- bind(HookContextFactory.class).toInstance(createNiceMock(HookContextFactory.class));
- bind(HookService.class).toInstance(createNiceMock(HookService.class));
- bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
- bind(UserDAO.class).toInstance(createNiceMock(UserDAO.class));
- bind(PamAuthenticationFactory.class).toInstance(createMock(PamAuthenticationFactory.class));
- bind(PasswordEncoder.class).toInstance(new StandardPasswordEncoder());
- }
- });
-
- Configuration configuration = injector.getInstance(Configuration.class);
+ public void setUp() {
+ injector = Guice.createInjector(new AuditLoggerModule(), new AuthorizationTestModule());
+ injector.injectMembers(this);
+ injector.getInstance(GuiceJpaInitializer.class);
configuration.setClientSecurityType(ClientSecurityType.PAM);
configuration.setProperty(Configuration.PAM_CONFIGURATION_FILE, "ambari-pam");
}
+ @After
+ public void tearDown() throws Exception {
+ H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
+ }
+
@Test(expected = AuthenticationException.class)
public void testBadCredential() throws Exception {
-
- PAM pam = createMock(PAM.class);
- expect(pam.authenticate(eq(TEST_USER_NAME), eq(TEST_USER_INCORRECT_PASS)))
- .andThrow(new PAMException())
- .once();
- pam.dispose();
- expectLastCall().once();
-
- PamAuthenticationFactory pamAuthenticationFactory = injector.getInstance(PamAuthenticationFactory.class);
- expect(pamAuthenticationFactory.createInstance(anyObject(String.class))).andReturn(pam).once();
-
- replayAll();
-
- Authentication authentication = new UsernamePasswordAuthenticationToken(TEST_USER_NAME, TEST_USER_INCORRECT_PASS);
-
- AmbariPamAuthenticationProvider authenticationProvider = injector.getInstance(AmbariPamAuthenticationProvider.class);
+ UserEntity userEntity = combineUserEntity();
+ User user = new User(userEntity);
+ Collection<AmbariGrantedAuthority> userAuthorities = Collections.singletonList(createNiceMock(AmbariGrantedAuthority.class));
+ Authentication authentication = new AmbariUserAuthentication("wrong", user, userAuthorities);
authenticationProvider.authenticate(authentication);
-
- verifyAll();
}
@Test
public void testAuthenticate() throws Exception {
-
+ PAM pam = createNiceMock(PAM.class);
UnixUser unixUser = createNiceMock(UnixUser.class);
- expect(unixUser.getGroups()).andReturn(Collections.singleton("group")).atLeastOnce();
-
- PAM pam = createMock(PAM.class);
- expect(pam.authenticate(eq(TEST_USER_NAME), eq(TEST_USER_PASS)))
- .andReturn(unixUser)
- .once();
- pam.dispose();
- expectLastCall().once();
-
- PamAuthenticationFactory pamAuthenticationFactory = injector.getInstance(PamAuthenticationFactory.class);
- expect(pamAuthenticationFactory.createInstance(anyObject(String.class))).andReturn(pam).once();
-
- replayAll();
-
- Authentication authentication = new UsernamePasswordAuthenticationToken(TEST_USER_NAME, TEST_USER_PASS);
-
- AmbariPamAuthenticationProvider authenticationProvider = injector.getInstance(AmbariPamAuthenticationProvider.class);
-
- Authentication result = authenticationProvider.authenticate(authentication);
-
- verifyAll();
-
+ UserEntity userEntity = combineUserEntity();
+ User user = new User(userEntity);
+ UserDAO userDAO = createNiceMock(UserDAO.class);
+ Collection<AmbariGrantedAuthority> userAuthorities = Collections.singletonList(createNiceMock(AmbariGrantedAuthority.class));
+ expect(pam.authenticate(EasyMock.anyObject(String.class), EasyMock.anyObject(String.class))).andReturn(unixUser).atLeastOnce();
+ expect(unixUser.getGroups()).andReturn(new HashSet<>(Arrays.asList("group"))).atLeastOnce();
+ EasyMock.replay(unixUser);
+ EasyMock.replay(pam);
+ Authentication authentication = new AmbariUserAuthentication("userPass", user, userAuthorities);
+ Authentication result = authenticationProvider.authenticateViaPam(pam,authentication);
+ expect(userDAO.findUserByName("userName")).andReturn(null).once();
Assert.assertNotNull(result);
Assert.assertEquals(true, result.isAuthenticated());
Assert.assertTrue(result instanceof AmbariUserAuthentication);
@@ -138,14 +109,24 @@ public class AmbariPamAuthenticationProviderTest extends EasyMockSupport {
@Test
public void testDisabled() throws Exception {
-
- Configuration configuration = injector.getInstance(Configuration.class);
+ UserEntity userEntity = combineUserEntity();
+ User user = new User(userEntity);
+ Collection<AmbariGrantedAuthority> userAuthorities = Collections.singletonList(createNiceMock(AmbariGrantedAuthority.class));
configuration.setClientSecurityType(ClientSecurityType.LOCAL);
-
- Authentication authentication = new UsernamePasswordAuthenticationToken(TEST_USER_NAME, TEST_USER_PASS);
-
- AmbariPamAuthenticationProvider authenticationProvider = injector.getInstance(AmbariPamAuthenticationProvider.class);
+ Authentication authentication = new AmbariUserAuthentication("userPass", user, userAuthorities);
Authentication auth = authenticationProvider.authenticate(authentication);
Assert.assertTrue(auth == null);
}
+
+ private UserEntity combineUserEntity() {
+ PrincipalEntity principalEntity = new PrincipalEntity();
+ UserEntity userEntity = new UserEntity();
+ userEntity.setUserId(1);
+ userEntity.setUserName(UserName.fromString(TEST_USER_NAME));
+ userEntity.setUserPassword(passwordEncoder.encode(TEST_USER_PASS));
+ userEntity.setUserType(UserType.PAM);
+ userEntity.setPrincipal(principalEntity);
+ return userEntity;
+ }
+
}
[2/2] ambari git commit: AMBARI-21578. testBadCredential UT fails
(rlevas)
Posted by rl...@apache.org.
AMBARI-21578. testBadCredential UT fails (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c516b310
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c516b310
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c516b310
Branch: refs/heads/trunk
Commit: c516b3107860c0078d96ca29faca9396e8498b5a
Parents: 9d605cd
Author: Robert Levas <rl...@hortonworks.com>
Authored: Thu Jul 27 07:00:56 2017 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Thu Jul 27 07:00:56 2017 -0400
----------------------------------------------------------------------
ambari-server/pom.xml | 2 +-
.../pam/PamAuthenticationFactory.java | 35 +++++
.../AmbariPamAuthenticationProvider.java | 5 +-
.../AmbariPamAuthenticationProviderTest.java | 145 +++++++++++--------
4 files changed, 122 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c516b310/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index 70907da..3c966f2 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -1684,7 +1684,7 @@
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
- <version>4.3.0</version>
+ <version>4.2.2</version>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/ambari/blob/c516b310/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/pam/PamAuthenticationFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/pam/PamAuthenticationFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/pam/PamAuthenticationFactory.java
new file mode 100644
index 0000000..6f423c1
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/pam/PamAuthenticationFactory.java
@@ -0,0 +1,35 @@
+/*
+ * 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.security.authentication.pam;
+
+import javax.inject.Singleton;
+
+import org.jvnet.libpam.PAM;
+import org.jvnet.libpam.PAMException;
+
+/**
+ * PamAuthenticationFactory returns Pam library instances.
+ */
+@Singleton
+public class PamAuthenticationFactory {
+
+ public PAM createInstance(String pamConfig) throws PAMException {
+ return new PAM(pamConfig);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/c516b310/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
index 373552e..8678294 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProvider.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.orm.entities.GroupEntity;
import org.apache.ambari.server.orm.entities.MemberEntity;
import org.apache.ambari.server.orm.entities.UserEntity;
import org.apache.ambari.server.security.ClientSecurityType;
+import org.apache.ambari.server.security.authentication.pam.PamAuthenticationFactory;
import org.jvnet.libpam.PAM;
import org.jvnet.libpam.PAMException;
import org.jvnet.libpam.UnixUser;
@@ -54,6 +55,8 @@ public class AmbariPamAuthenticationProvider implements AuthenticationProvider {
protected UserDAO userDAO;
@Inject
protected GroupDAO groupDAO;
+ @Inject
+ private PamAuthenticationFactory pamAuthenticationFactory;
private static final Logger LOG = LoggerFactory.getLogger(AmbariPamAuthenticationProvider.class);
@@ -85,7 +88,7 @@ public class AmbariPamAuthenticationProvider implements AuthenticationProvider {
try{
//Set PAM configuration file (found under /etc/pam.d)
String pamConfig = configuration.getPamConfigurationFile();
- pam = new PAM(pamConfig);
+ pam = pamAuthenticationFactory.createInstance(pamConfig);
} catch(PAMException ex) {
LOG.error("Unable to Initialize PAM." + ex.getMessage());
http://git-wip-us.apache.org/repos/asf/ambari/blob/c516b310/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
index 8faa6ce..9cfd148 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariPamAuthenticationProviderTest.java
@@ -17,91 +17,120 @@
*/
package org.apache.ambari.server.security.authorization;
-import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
-import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
-import java.util.HashSet;
-import org.apache.ambari.server.H2DatabaseCleaner;
-import org.apache.ambari.server.audit.AuditLoggerModule;
+import javax.persistence.EntityManager;
+
import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.orm.GuiceJpaInitializer;
+import org.apache.ambari.server.hooks.HookContextFactory;
+import org.apache.ambari.server.hooks.HookService;
+import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.dao.UserDAO;
-import org.apache.ambari.server.orm.entities.PrincipalEntity;
-import org.apache.ambari.server.orm.entities.UserEntity;
import org.apache.ambari.server.security.ClientSecurityType;
-import org.easymock.EasyMock;
-import org.junit.After;
+import org.apache.ambari.server.security.authentication.pam.PamAuthenticationFactory;
+import org.apache.ambari.server.state.stack.OsFamily;
+import org.easymock.EasyMockSupport;
import org.junit.Before;
import org.junit.Test;
import org.jvnet.libpam.PAM;
+import org.jvnet.libpam.PAMException;
import org.jvnet.libpam.UnixUser;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.crypto.password.StandardPasswordEncoder;
+import com.google.inject.AbstractModule;
import com.google.inject.Guice;
-import com.google.inject.Inject;
import com.google.inject.Injector;
import junit.framework.Assert;
-public class AmbariPamAuthenticationProviderTest {
-
- private static Injector injector;
-
- @Inject
- PasswordEncoder passwordEncoder;
- @Inject
- private AmbariPamAuthenticationProvider authenticationProvider;
- @Inject
- Configuration configuration;
+public class AmbariPamAuthenticationProviderTest extends EasyMockSupport {
private static final String TEST_USER_NAME = "userName";
private static final String TEST_USER_PASS = "userPass";
private static final String TEST_USER_INCORRECT_PASS = "userIncorrectPass";
+ private Injector injector;
+
@Before
- public void setUp() {
- injector = Guice.createInjector(new AuditLoggerModule(), new AuthorizationTestModule());
- injector.injectMembers(this);
- injector.getInstance(GuiceJpaInitializer.class);
+ public void setup() {
+ injector = Guice.createInjector(new AbstractModule() {
+
+ @Override
+ protected void configure() {
+ bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
+ bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
+ bind(HookContextFactory.class).toInstance(createNiceMock(HookContextFactory.class));
+ bind(HookService.class).toInstance(createNiceMock(HookService.class));
+ bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
+ bind(UserDAO.class).toInstance(createNiceMock(UserDAO.class));
+ bind(PamAuthenticationFactory.class).toInstance(createMock(PamAuthenticationFactory.class));
+ bind(PasswordEncoder.class).toInstance(new StandardPasswordEncoder());
+ }
+ });
+
+ Configuration configuration = injector.getInstance(Configuration.class);
configuration.setClientSecurityType(ClientSecurityType.PAM);
configuration.setProperty(Configuration.PAM_CONFIGURATION_FILE, "ambari-pam");
}
- @After
- public void tearDown() throws Exception {
- H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector);
- }
-
@Test(expected = AuthenticationException.class)
public void testBadCredential() throws Exception {
- UserEntity userEntity = combineUserEntity();
- User user = new User(userEntity);
- Collection<AmbariGrantedAuthority> userAuthorities = Collections.singletonList(createNiceMock(AmbariGrantedAuthority.class));
- Authentication authentication = new AmbariUserAuthentication("wrong", user, userAuthorities);
+
+ PAM pam = createMock(PAM.class);
+ expect(pam.authenticate(eq(TEST_USER_NAME), eq(TEST_USER_INCORRECT_PASS)))
+ .andThrow(new PAMException())
+ .once();
+ pam.dispose();
+ expectLastCall().once();
+
+ PamAuthenticationFactory pamAuthenticationFactory = injector.getInstance(PamAuthenticationFactory.class);
+ expect(pamAuthenticationFactory.createInstance(anyObject(String.class))).andReturn(pam).once();
+
+ replayAll();
+
+ Authentication authentication = new UsernamePasswordAuthenticationToken(TEST_USER_NAME, TEST_USER_INCORRECT_PASS);
+
+ AmbariPamAuthenticationProvider authenticationProvider = injector.getInstance(AmbariPamAuthenticationProvider.class);
authenticationProvider.authenticate(authentication);
+
+ verifyAll();
}
@Test
public void testAuthenticate() throws Exception {
- PAM pam = createNiceMock(PAM.class);
+
UnixUser unixUser = createNiceMock(UnixUser.class);
- UserEntity userEntity = combineUserEntity();
- User user = new User(userEntity);
- UserDAO userDAO = createNiceMock(UserDAO.class);
- Collection<AmbariGrantedAuthority> userAuthorities = Collections.singletonList(createNiceMock(AmbariGrantedAuthority.class));
- expect(pam.authenticate(EasyMock.anyObject(String.class), EasyMock.anyObject(String.class))).andReturn(unixUser).atLeastOnce();
- expect(unixUser.getGroups()).andReturn(new HashSet<>(Arrays.asList("group"))).atLeastOnce();
- EasyMock.replay(unixUser);
- EasyMock.replay(pam);
- Authentication authentication = new AmbariUserAuthentication("userPass", user, userAuthorities);
- Authentication result = authenticationProvider.authenticateViaPam(pam,authentication);
- expect(userDAO.findUserByName("userName")).andReturn(null).once();
+ expect(unixUser.getGroups()).andReturn(Collections.singleton("group")).atLeastOnce();
+
+ PAM pam = createMock(PAM.class);
+ expect(pam.authenticate(eq(TEST_USER_NAME), eq(TEST_USER_PASS)))
+ .andReturn(unixUser)
+ .once();
+ pam.dispose();
+ expectLastCall().once();
+
+ PamAuthenticationFactory pamAuthenticationFactory = injector.getInstance(PamAuthenticationFactory.class);
+ expect(pamAuthenticationFactory.createInstance(anyObject(String.class))).andReturn(pam).once();
+
+ replayAll();
+
+ Authentication authentication = new UsernamePasswordAuthenticationToken(TEST_USER_NAME, TEST_USER_PASS);
+
+ AmbariPamAuthenticationProvider authenticationProvider = injector.getInstance(AmbariPamAuthenticationProvider.class);
+
+ Authentication result = authenticationProvider.authenticate(authentication);
+
+ verifyAll();
+
Assert.assertNotNull(result);
Assert.assertEquals(true, result.isAuthenticated());
Assert.assertTrue(result instanceof AmbariUserAuthentication);
@@ -109,24 +138,14 @@ public class AmbariPamAuthenticationProviderTest {
@Test
public void testDisabled() throws Exception {
- UserEntity userEntity = combineUserEntity();
- User user = new User(userEntity);
- Collection<AmbariGrantedAuthority> userAuthorities = Collections.singletonList(createNiceMock(AmbariGrantedAuthority.class));
+
+ Configuration configuration = injector.getInstance(Configuration.class);
configuration.setClientSecurityType(ClientSecurityType.LOCAL);
- Authentication authentication = new AmbariUserAuthentication("userPass", user, userAuthorities);
+
+ Authentication authentication = new UsernamePasswordAuthenticationToken(TEST_USER_NAME, TEST_USER_PASS);
+
+ AmbariPamAuthenticationProvider authenticationProvider = injector.getInstance(AmbariPamAuthenticationProvider.class);
Authentication auth = authenticationProvider.authenticate(authentication);
Assert.assertTrue(auth == null);
}
-
- private UserEntity combineUserEntity() {
- PrincipalEntity principalEntity = new PrincipalEntity();
- UserEntity userEntity = new UserEntity();
- userEntity.setUserId(1);
- userEntity.setUserName(UserName.fromString(TEST_USER_NAME));
- userEntity.setUserPassword(passwordEncoder.encode(TEST_USER_PASS));
- userEntity.setUserType(UserType.PAM);
- userEntity.setPrincipal(principalEntity);
- return userEntity;
- }
-
}