Skip to content

Commit b4bb78b

Browse files
committed
fix: return 404 on non-existence i18n file
1 parent 50a2838 commit b4bb78b

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

src/main/java/io/github/linagora/linid/im/i18n/service/I18nServiceImpl.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
package io.github.linagora.linid.im.i18n.service;
2828

29+
import io.github.linagora.linid.im.corelib.exception.ApiException;
2930
import io.github.linagora.linid.im.corelib.i18n.I18nMessage;
3031
import io.github.linagora.linid.im.corelib.i18n.I18nService;
3132
import io.github.linagora.linid.im.i18n.collector.I18nMergeCollector;
@@ -89,7 +90,14 @@ public List<String> getLanguages() {
8990

9091
@Override
9192
public Map<String, String> getTranslations(String language) {
92-
return languages.getOrDefault(language, Map.of());
93+
if (languages.containsKey(language)) {
94+
return languages.get(language);
95+
}
96+
97+
throw new ApiException(404, I18nMessage.of(
98+
"error.router.unknown.route",
99+
Map.of("route", String.format("/i18n/%s.json", language))
100+
));
93101
}
94102

95103
@Override

src/test/java/io/github/linagora/linid/im/i18n/service/I18nServiceImplTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727
package io.github.linagora.linid.im.i18n.service;
2828

2929
import static org.junit.jupiter.api.Assertions.assertEquals;
30+
import static org.junit.jupiter.api.Assertions.assertThrows;
31+
import static org.junit.jupiter.api.Assertions.assertTrue;
3032

33+
import io.github.linagora.linid.im.corelib.exception.ApiException;
3134
import io.github.linagora.linid.im.corelib.i18n.I18nMessage;
3235
import io.github.linagora.linid.im.i18n.loader.I18nSourceLoader;
3336
import java.util.List;
@@ -87,10 +90,14 @@ void testGetTranslationsValidLanguage() {
8790
@DisplayName("test getTranslations: should return empty translations on invalid language")
8891
void testGetTranslationsInvalidLanguage() {
8992
service.run();
90-
assertEquals(
91-
Map.of(),
92-
service.getTranslations("test")
93-
);
93+
94+
ApiException exception = assertThrows(ApiException.class, () -> {
95+
service.getTranslations("test");
96+
});
97+
98+
assertEquals(404, exception.getStatusCode());
99+
assertEquals("error.router.unknown.route", exception.getError().key());
100+
assertEquals("/i18n/test.json", exception.getError().context().getOrDefault("route", ""));
94101
}
95102

96103
@Test

0 commit comments

Comments
 (0)