I am writing automated test cases for sign in api. I am constantly getting Unauthorized response from signin api, it's working fine in production server.
public class SigninResourceTest extends ResourceTest {
private static final UserDAO userDao = mock(UserDAO.class);
private static final AccessTokenDAO tokenDao = mock(AccessTokenDAO.class);
@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addProvider(AuthFactory.binder(new BasicAuthFactory<User>(new SimpleAuthenticator(userDao), "realm", User.class)))
.addResource(new SigninResource(userDao, tokenDao))
.build();
private static Optional<User> user;
@Before
public void setup() {
final String userName = "xyz1988";
final String password = "xyz@1988";
final String emailId = "xyz1988@gmail.com";
user = Optional.of(new User(1, userName, password, emailId));
when(userDao.findUserByUsername(any(String.class))).thenReturn(user);
}
@After
public void tearDown() {
reset(userDao);
reset(tokenDao);
}
private Response signin(String username, String password) {
String usernameAndPassword = username + ":" + password;
String authorizationHeaderValue = "Basic " + java.util.Base64.getEncoder().encodeToString( usernameAndPassword.getBytes() );
return resources.client().target("/api/v1/signin").request()
.header(HttpHeaders.AUTHORIZATION, authorizationHeaderValue).get();
}
@Test(timeout = API_TIMEOUT)
public void signInWithProperCredentials() {
final String username = "xyz1988";
final String password = "xyz@1988";
final Response response = signin(username, password);
Assertions.assertThat(response.getStatusInfo()).isEqualTo(Response.Status.OK);
}
//Base class
public class ResourceTest {
public static final int API_TIMEOUT = 10000; // milliseconds
public static final Environment environment = mock(Environment.class);
public static final JerseyEnvironment jersey = mock(JerseyEnvironment.class);
public static final MyApplication application = mock(MyApplication.class);
public static final MyConfiguration config = mock(MyConfiguration.class);
@Before
public void setup() throws Exception {
when(environment.jersey()).thenReturn(jersey);
application.run(config, environment);
}
}
//Authenticator
public class SimpleAuthenticator implements
Authenticator<BasicCredentials, User> {
// Authentication code here
}
<dropwizard.version>0.8.2</dropwizard.version>
Aucun commentaire:
Enregistrer un commentaire