package com.truckmuncher.app.data;
import com.truckmuncher.app.authentication.SessionTokenPreference;
import com.truckmuncher.testlib.ReadableRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
@RunWith(ReadableRobolectricTestRunner.class)
public class AuthenticatedRequestInterceptorTest extends ApiRequestInterceptorTest {
@Mock
SessionTokenPreference preference;
@Before
@Override
public void setUp() {
super.setUp();
MockitoAnnotations.initMocks(this);
interceptor = new AuthenticatedRequestInterceptor(preference);
}
@Test
public void authorizationHeaderIsAdded() {
String sessionToken = UUID.randomUUID().toString();
when(preference.get()).thenReturn(sessionToken);
interceptor.intercept(facade);
assertThat(facade.headers).containsKey(ApiRequestInterceptor.HEADER_AUTHORIZATION);
String value = facade.headers.get(ApiRequestInterceptor.HEADER_AUTHORIZATION);
assertThat(value).isEqualTo(AuthenticatedRequestInterceptor.SESSION_TOKEN + "=" + sessionToken);
}
@Test
public void authorizationHeaderWorksOnEmptySession() {
when(preference.get()).thenReturn("");
interceptor.intercept(facade);
assertThat(facade.headers).containsKey(ApiRequestInterceptor.HEADER_AUTHORIZATION);
String value = facade.headers.get(ApiRequestInterceptor.HEADER_AUTHORIZATION);
assertThat(value).isEqualTo(AuthenticatedRequestInterceptor.SESSION_TOKEN + "=");
}
}