Add basic concept for scm protocol

This commit is contained in:
René Pfeuffer
2018-09-03 15:52:59 +02:00
parent dc35393c1c
commit b55955f273
8 changed files with 147 additions and 15 deletions

View File

@@ -0,0 +1,65 @@
package sonia.scm.repository.api;
import org.junit.Test;
import sonia.scm.repository.Repository;
import sonia.scm.repository.spi.HttpScmProtocol;
import sonia.scm.repository.spi.RepositoryServiceProvider;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.Set;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.assertj.core.util.IterableUtil.sizeOf;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class RepositoryServiceTest {
private final RepositoryServiceProvider provider = mock(RepositoryServiceProvider.class);
private final Repository repository = mock(Repository.class);
@Test
public void shouldReturnProtocolsFromProvider() {
when(provider.getSupportedProtocols()).thenReturn(Collections.singleton(new DummyHttpProtocol()));
RepositoryService repositoryService = new RepositoryService(null, provider, repository, null);
Set<ScmProtocol> supportedProtocols = repositoryService.getSupportedProtocols();
assertThat(sizeOf(supportedProtocols)).isEqualTo(1);
}
@Test
public void shouldFindProtocolFromProvider() {
when(provider.getSupportedProtocols()).thenReturn(Collections.singleton(new DummyHttpProtocol()));
RepositoryService repositoryService = new RepositoryService(null, provider, repository, null);
HttpScmProtocol protocol = repositoryService.getProtocol(HttpScmProtocol.class);
assertThat(protocol.getUrl()).isEqualTo("dummy");
}
@Test
public void shouldFailForUnknownProtocol() {
when(provider.getSupportedProtocols()).thenReturn(Collections.emptySet());
RepositoryService repositoryService = new RepositoryService(null, provider, repository, null);
assertThrows(IllegalArgumentException.class, () -> {
repositoryService.getProtocol(HttpScmProtocol.class);
});
}
private static class DummyHttpProtocol implements HttpScmProtocol {
@Override
public String getUrl() {
return "dummy";
}
@Override
public void serve(HttpServletRequest request, HttpServletResponse response) {
}
}
}