mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
Use namespace and name for exceptions instead of technical id
This commit is contained in:
@@ -35,6 +35,7 @@ import java.net.URL;
|
||||
import static java.util.Collections.singletonList;
|
||||
import static java.util.stream.Stream.of;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_CONFLICT;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
@@ -196,6 +197,26 @@ public class RepositoryRootResourceTest extends RepositoryTestBase {
|
||||
verify(repositoryManager).modify(anyObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHandleUpdateForConcurrentlyChangedRepository() throws Exception {
|
||||
mockRepository("space", "repo", 1337);
|
||||
|
||||
URL url = Resources.getResource("sonia/scm/api/v2/repository-test-update.json");
|
||||
byte[] repository = Resources.toByteArray(url);
|
||||
|
||||
MockHttpRequest request = MockHttpRequest
|
||||
.put("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space/repo")
|
||||
.contentType(VndMediaType.REPOSITORY)
|
||||
.content(repository);
|
||||
MockHttpResponse response = new MockHttpResponse();
|
||||
|
||||
dispatcher.invoke(request, response);
|
||||
|
||||
assertEquals(SC_CONFLICT, response.getStatus());
|
||||
assertThat(response.getContentAsString()).contains("space/repo");
|
||||
verify(repositoryManager, never()).modify(anyObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHandleUpdateForExistingRepositoryForChangedNamespace() throws Exception {
|
||||
mockRepository("wrong", "repo");
|
||||
@@ -313,9 +334,16 @@ public class RepositoryRootResourceTest extends RepositoryTestBase {
|
||||
}
|
||||
|
||||
private Repository mockRepository(String namespace, String name) {
|
||||
return mockRepository(namespace, name, 0);
|
||||
}
|
||||
|
||||
private Repository mockRepository(String namespace, String name, long lastModified) {
|
||||
Repository repository = new Repository();
|
||||
repository.setNamespace(namespace);
|
||||
repository.setName(name);
|
||||
if (lastModified > 0) {
|
||||
repository.setLastModified(lastModified);
|
||||
}
|
||||
String id = namespace + "-" + name;
|
||||
repository.setId(id);
|
||||
when(repositoryManager.get(new NamespaceAndName(namespace, name))).thenReturn(repository);
|
||||
|
||||
@@ -123,9 +123,12 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
||||
createTestRepository();
|
||||
}
|
||||
|
||||
@Test(expected = AlreadyExistsException.class)
|
||||
@Test
|
||||
public void testCreateExisting() {
|
||||
createTestRepository();
|
||||
Repository testRepository = createTestRepository();
|
||||
String expectedNamespaceAndName = testRepository.getNamespaceAndName().logString();
|
||||
thrown.expect(AlreadyExistsException.class);
|
||||
thrown.expectMessage(expectedNamespaceAndName);
|
||||
createTestRepository();
|
||||
}
|
||||
|
||||
@@ -392,18 +395,6 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
|
||||
assertNotNull(repository.getNamespace());
|
||||
}
|
||||
|
||||
private void createUriTestRepositories(RepositoryManager m) {
|
||||
mockedNamespace = "namespace";
|
||||
createRepository(m, new Repository("1", "hg", "namespace", "scm"));
|
||||
createRepository(m, new Repository("2", "hg", "namespace", "scm-test"));
|
||||
createRepository(m, new Repository("3", "git", "namespace", "test-1"));
|
||||
createRepository(m, new Repository("4", "git", "namespace", "test-2"));
|
||||
|
||||
mockedNamespace = "other";
|
||||
createRepository(m, new Repository("1", "hg", "other", "scm"));
|
||||
createRepository(m, new Repository("2", "hg", "other", "scm-test"));
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user