/*
* 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.LoginUser;
import alluxio.security.LoginUserTestUtils;
import alluxio.security.User;
import javax.annotation.concurrent.NotThreadSafe;
/**
* A rule for login an Alluxio user during a test suite. It sets
* {@link PropertyKey#SECURITY_LOGIN_USERNAME} to the specified user name during the lifetime
* of this rule.
*/
@NotThreadSafe
public final class LoginUserRule extends AbstractResourceRule {
private final String mUser;
private User mPreviousLoginUser = null;
/**
* @param user the user name to set as authenticated user
*/
public LoginUserRule(String user) {
mUser = user;
}
@Override
public void before() throws Exception {
mPreviousLoginUser = LoginUser.get();
LoginUserTestUtils.resetLoginUser(mUser);
}
@Override
public void after() {
try {
if (mPreviousLoginUser != null) {
LoginUserTestUtils.resetLoginUser(mPreviousLoginUser.getName());
} else {
LoginUserTestUtils.resetLoginUser();
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}