/* * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0 * (the "License"). You may not use this work except in compliance with the License, which is * available at www.apache.org/licenses/LICENSE-2.0 * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied, as more fully set forth in the License. * * See the NOTICE file distributed with this work for information regarding copyright ownership. */ package alluxio; import alluxio.security.User; import alluxio.security.authentication.AuthenticatedClientUser; import javax.annotation.concurrent.NotThreadSafe; /** * A rule for login an Alluxio user during a test suite. * It sets {@link alluxio.security.authentication.AuthenticatedClientUser} * to the specified user name during the lifetime * of this rule. Note: setting the user only takes effect within the caller thread. */ @NotThreadSafe public final class AuthenticatedUserRule extends AbstractResourceRule { private final String mUser; private User mPreviousUser; /** * @param user the user name to set as authenticated user */ public AuthenticatedUserRule(String user) { mUser = user; } @Override protected void before() throws Exception { mPreviousUser = AuthenticatedClientUser.get(); AuthenticatedClientUser.set(mUser); } @Override protected void after() { if (mPreviousUser == null) { AuthenticatedClientUser.remove(); } else { AuthenticatedClientUser.set(mPreviousUser.getName()); } } }