package fr.mmarie.core.gitlab;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
import fr.mmarie.api.gitlab.User;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import retrofit.Response;
import java.util.List;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static fr.mmarie.Assertions.assertThat;
import static io.dropwizard.testing.FixtureHelpers.fixture;
import static org.assertj.core.api.Assertions.assertThat;
public class GitLabServiceTestIT {
private GitLabService gitLabService;
public static final int PORT = 1339;
@Rule
public WireMockRule wireMockRule = new WireMockRule(PORT);
private String privateToken = "N1bJ4n8-rbFAEf8Syrh2";
private GitLabConfiguration gitLabConfiguration = new GitLabConfiguration(privateToken,
String.format("http://localhost:%d", PORT));
@Before
public void setUp() throws Exception {
gitLabService = new GitLabService(gitLabConfiguration);
}
@Test
public void testGetUser() throws Exception {
Long userId = 1L;
String mockedUser = fixture("fixtures/gitlab/user.json");
wireMockRule.stubFor(get(urlEqualTo("/api/v3/users/" + userId + "?private_token=" + privateToken))
.willReturn(aResponse()
.withStatus(200)
.withBody(mockedUser)));
Response<User> response = gitLabService.getUser(userId);
assertThat(response.code())
.isEqualTo(200);
assertThat(response.body())
.hasId(1L)
.hasUsername("john_smith")
.hasName("John Smith");
wireMockRule.verify(getRequestedFor(urlEqualTo("/api/v3/users/" + userId + "?private_token=" + privateToken)));
}
@Test
public void testGetLoggedUser() throws Exception {
String mockedUser = fixture("fixtures/gitlab/user.json");
wireMockRule.stubFor(get(urlEqualTo("/api/v3/user?private_token=" + privateToken))
.willReturn(aResponse()
.withStatus(200)
.withBody(mockedUser)));
Response<User> response = gitLabService.getLoggedUser();
assertThat(response.code())
.isEqualTo(200);
assertThat(response.body())
.hasId(1L)
.hasUsername("john_smith")
.hasName("John Smith");
wireMockRule.verify(getRequestedFor(urlEqualTo("/api/v3/user?private_token=" + privateToken)));
}
@Test
public void getUserUrl() throws Exception {
String username = "akraxx";
String url = gitLabService.getUserUrl(username);
assertThat(url).isEqualTo(gitLabConfiguration.getUrl() + "/u/" + username);
}
}