vendredi 4 mars 2016

Getting Unauthorized response of signin api in test case

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