]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3871 Check key format also on update
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Mon, 14 Oct 2013 09:23:06 +0000 (11:23 +0200)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Mon, 14 Oct 2013 12:09:03 +0000 (14:09 +0200)
sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java
sonar-server/src/test/java/org/sonar/server/component/DefaultRubyComponentServiceTest.java

index b4b51b736f4f9d14155ae3d950ceefcdf00c85f1..abee537dda91846db7940145ffaa1632cdfe231d 100644 (file)
  */
 package org.sonar.server.component;
 
-import org.sonar.core.component.ComponentKeys;
-
 import com.google.common.base.Strings;
 import org.sonar.api.component.Component;
 import org.sonar.api.component.RubyComponentService;
 import org.sonar.core.component.ComponentDto;
+import org.sonar.core.component.ComponentKeys;
 import org.sonar.core.resource.ResourceDao;
 import org.sonar.core.resource.ResourceDto;
 import org.sonar.core.resource.ResourceIndexerDao;
@@ -58,9 +57,7 @@ public class DefaultRubyComponentService implements RubyComponentService {
     if (component != null) {
       throw new BadRequestException("Could not create resource, key already exists: "+kee);
     }
-    if (!ComponentKeys.isValidModuleKey(kee)) {
-      throw new BadRequestException("Could not create resource, malformed key: "+kee);
-    }
+    checkKeyFormat(kee);
 
     resourceDao.insertOrUpdate(
       new ResourceDto()
@@ -82,6 +79,8 @@ public class DefaultRubyComponentService implements RubyComponentService {
     if (resource == null) {
       throw new NotFoundException();
     }
+    checkKeyFormat(key);
+
     resourceDao.insertOrUpdate(resource.setKey(key).setName(name));
   }
 
@@ -123,4 +122,9 @@ public class DefaultRubyComponentService implements RubyComponentService {
     return builder.build();
   }
 
+  private static void checkKeyFormat(String kee) {
+    if (!ComponentKeys.isValidModuleKey(kee)) {
+      throw new BadRequestException("Could not create resource, malformed key: "+kee);
+    }
+  }
 }
index c6cb10de1802882f802cd1b5fb140ecab4b8cae9..890ab13bc95bff05b1fd27d5c14061820d1b316d 100644 (file)
 
 package org.sonar.server.component;
 
-import org.sonar.server.exceptions.NotFoundException;
-
-import org.sonar.server.exceptions.BadRequestException;
-import org.sonar.core.resource.ResourceDto;
+import org.junit.Before;
+import org.junit.Test;
 import org.mockito.ArgumentCaptor;
+import org.sonar.api.component.Component;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.Scopes;
 import org.sonar.core.component.ComponentDto;
-import org.sonar.core.resource.ResourceIndexerDao;
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.component.Component;
 import org.sonar.core.resource.ResourceDao;
+import org.sonar.core.resource.ResourceDto;
+import org.sonar.core.resource.ResourceIndexerDao;
+import org.sonar.server.exceptions.BadRequestException;
+import org.sonar.server.exceptions.NotFoundException;
 
 import java.util.List;
 import java.util.Map;
@@ -41,7 +40,11 @@ import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Maps.newHashMap;
 import static org.fest.assertions.Assertions.assertThat;
 import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.anyListOf;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 public class DefaultRubyComponentServiceTest {
 
@@ -140,6 +143,16 @@ public class DefaultRubyComponentServiceTest {
     verify(resourceDao).insertOrUpdate(resource);
   }
 
+  @Test(expected=BadRequestException.class)
+  public void should_throw_if_malformed_key_in_update() {
+    final long componentId = 1234l;
+    final String newKey = "new/key";
+    final String newName = "newName";
+    ResourceDto resource = mock(ResourceDto.class);
+    when(resourceDao.getResource(componentId)).thenReturn(resource);
+    componentService.updateComponent(componentId, newKey, newName);
+  }
+
   @Test
   public void should_find() {
     List<String> qualifiers = newArrayList("TRK");