Skip to content

Commit 17a0420

Browse files
committed
[BUG]bug-npe-is-thrown-when-creating-an-application-without-a-group
1 parent b41da50 commit 17a0420

5 files changed

Lines changed: 71 additions & 2 deletions

File tree

sugoi-api-file-store-provider/src/main/java/fr/insee/sugoi/store/file/FileWriterStore.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import fr.insee.sugoi.model.User;
2828
import fr.insee.sugoi.model.exceptions.ApplicationNotFoundException;
2929
import fr.insee.sugoi.model.exceptions.GroupAlreadyExistException;
30+
import fr.insee.sugoi.model.exceptions.NoGroupException;
3031
import fr.insee.sugoi.model.exceptions.UserNotFoundException;
3132
import java.io.File;
3233
import java.io.FileWriter;
@@ -119,6 +120,9 @@ public ProviderResponse deleteGroup(
119120
@Override
120121
public ProviderResponse createGroup(
121122
String appName, Group appGroup, ProviderRequest providerRequest) {
123+
if (appGroup == null) {
124+
throw new NoGroupException("no group provided");
125+
}
122126
fileReaderStore.setResourceLoader(resourceLoader);
123127
Application application =
124128
fileReaderStore

sugoi-api-file-store-provider/src/test/java/fr/insee/sugoi/store/file/FileWriterStoreTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515

1616
import static org.hamcrest.MatcherAssert.assertThat;
1717
import static org.hamcrest.Matchers.*;
18+
import static org.junit.jupiter.api.Assertions.assertThrows;
1819

1920
import com.fasterxml.jackson.databind.ObjectMapper;
2021
import fr.insee.sugoi.model.*;
22+
import fr.insee.sugoi.model.exceptions.NoGroupException;
2123
import java.io.FileWriter;
2224
import java.io.IOException;
2325
import java.util.ArrayList;
@@ -358,6 +360,17 @@ public void testCreateGroup() {
358360
is("Groupy_Applitest"));
359361
}
360362

363+
@Test
364+
public void testCreateGroupWithNoGroup() {
365+
Group group = null;
366+
assertThrows(
367+
NoGroupException.class,
368+
() -> {
369+
fileWriterStore.createGroup("Applitest", group, null);
370+
},
371+
"Should throw NoGroupException");
372+
}
373+
361374
@Test
362375
public void testDeleteGroup() {
363376
Group group = new Group("Asupprimer_WebServicesLdap", "WebServicesLdap");

sugoi-api-ldap-store-provider/src/main/java/fr/insee/sugoi/store/ldap/LdapWriterStore.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import fr.insee.sugoi.model.exceptions.GroupAlreadyExistException;
5252
import fr.insee.sugoi.model.exceptions.GroupNotFoundException;
5353
import fr.insee.sugoi.model.exceptions.InvalidPasswordException;
54+
import fr.insee.sugoi.model.exceptions.NoGroupException;
5455
import fr.insee.sugoi.model.exceptions.OrganizationAlreadyExistException;
5556
import fr.insee.sugoi.model.exceptions.OrganizationNotFoundException;
5657
import fr.insee.sugoi.model.exceptions.StoragePolicyNotMetException;
@@ -213,6 +214,9 @@ public ProviderResponse createGroup(
213214
String appName, Group group, ProviderRequest providerRequest) {
214215

215216
try {
217+
if (group == null) {
218+
throw new NoGroupException("no group provided");
219+
}
216220
if (ldapReaderStore.getApplication(appName).isEmpty()) {
217221
throw new ApplicationNotFoundException(appName);
218222
}

sugoi-api-ldap-store-provider/src/test/java/fr/insee/sugoi/ldap/LdapWriterStoreTest.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,27 @@
1414
package fr.insee.sugoi.ldap;
1515

1616
import static org.hamcrest.MatcherAssert.assertThat;
17-
import static org.hamcrest.Matchers.*;
17+
import static org.hamcrest.Matchers.is;
18+
import static org.hamcrest.Matchers.not;
19+
import static org.hamcrest.Matchers.nullValue;
1820
import static org.junit.jupiter.api.Assertions.assertThrows;
1921

2022
import fr.insee.sugoi.core.configuration.GlobalKeysConfig;
2123
import fr.insee.sugoi.core.model.ProviderRequest;
2224
import fr.insee.sugoi.core.model.ProviderResponse;
2325
import fr.insee.sugoi.core.model.ProviderResponse.ProviderResponseStatus;
2426
import fr.insee.sugoi.ldap.utils.config.LdapConfigKeys;
25-
import fr.insee.sugoi.model.*;
27+
import fr.insee.sugoi.model.Application;
28+
import fr.insee.sugoi.model.Group;
29+
import fr.insee.sugoi.model.Habilitation;
30+
import fr.insee.sugoi.model.Organization;
31+
import fr.insee.sugoi.model.PostalAddress;
32+
import fr.insee.sugoi.model.Realm;
33+
import fr.insee.sugoi.model.User;
34+
import fr.insee.sugoi.model.UserStorage;
2635
import fr.insee.sugoi.model.exceptions.ApplicationNotFoundException;
2736
import fr.insee.sugoi.model.exceptions.InvalidPasswordException;
37+
import fr.insee.sugoi.model.exceptions.NoGroupException;
2838
import fr.insee.sugoi.model.exceptions.StoragePolicyNotMetException;
2939
import fr.insee.sugoi.model.fixtures.StoreMappingFixture;
3040
import fr.insee.sugoi.store.ldap.LdapReaderStore;
@@ -383,6 +393,17 @@ public void testCreateGroup() {
383393
is("Groupy_Applitest"));
384394
}
385395

396+
@Test
397+
public void testCreateGroupWithNoGroup() {
398+
Group group = null;
399+
assertThrows(
400+
NoGroupException.class,
401+
() -> {
402+
ldapWriterStore.createGroup("Applitest", group, null);
403+
},
404+
"Should throw NoGroupException");
405+
}
406+
386407
@Test
387408
void testCreateGroupApplicationNotFound() {
388409
Group group = new Group();
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Licensed under the Apache License, Version 2.0 (the "License");
3+
* you may not use this file except in compliance with the License.
4+
* You may obtain a copy of the License at
5+
*
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* Unless required by applicable law or agreed to in writing, software
9+
* distributed under the License is distributed on an "AS IS" BASIS,
10+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
* See the License for the specific language governing permissions and
12+
* limitations under the License.
13+
*/
14+
package fr.insee.sugoi.model.exceptions;
15+
16+
public class NoGroupException extends BadRequestException {
17+
18+
public NoGroupException(String message, Throwable cause) {
19+
super(message, cause);
20+
// TODO Auto-generated constructor stub
21+
}
22+
23+
public NoGroupException(String message) {
24+
super(message);
25+
// TODO Auto-generated constructor stub
26+
}
27+
}

0 commit comments

Comments
 (0)