Skip to content

Commit b51de48

Browse files
committed
test(webserver): add InMemorySettingRepository for tests and unflaky BasicAuthServiceTest
1 parent a2dc677 commit b51de48

File tree

3 files changed

+181
-93
lines changed

3 files changed

+181
-93
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package io.kestra.core.repositories;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import io.kestra.core.models.Setting;
6+
import io.kestra.jdbc.JdbcMapper;
7+
import jakarta.validation.ConstraintViolationException;
8+
9+
import java.util.*;
10+
11+
public class InMemorySettingRepository implements SettingRepositoryInterface {
12+
private final Map<String, String> settings = new HashMap<>();
13+
private static final ObjectMapper MAPPER = JdbcMapper.of();
14+
15+
@Override
16+
public Optional<Setting> findByKey(String key) {
17+
return deserialize(settings.get(key));
18+
}
19+
20+
@Override
21+
public List<Setting> findAll() {
22+
return new ArrayList<>(settings.values().stream().map(this::deserialize)
23+
.filter(Optional::isPresent).map(Optional::get).toList());
24+
}
25+
26+
@Override
27+
public Setting save(Setting setting) throws ConstraintViolationException {
28+
return internalSave(setting);
29+
}
30+
31+
@Override
32+
public Setting internalSave(Setting setting) throws ConstraintViolationException {
33+
settings.put(setting.getKey(), serialize(setting));
34+
return setting;
35+
}
36+
37+
@Override
38+
public Setting delete(Setting setting) {
39+
if (!settings.containsKey(setting.getKey())) {
40+
throw new IllegalStateException("Setting " + setting.getKey() + " doesn't exists");
41+
}
42+
43+
settings.remove(setting.getKey());
44+
return setting;
45+
}
46+
47+
public void clear() {
48+
settings.clear();
49+
}
50+
51+
private String serialize(Setting setting) {
52+
try {
53+
return MAPPER.writeValueAsString(setting);
54+
} catch (JsonProcessingException e) {
55+
throw new RuntimeException(e);
56+
}
57+
}
58+
private Optional<Setting> deserialize(String jsonString) {
59+
if (jsonString == null) {
60+
return Optional.empty();
61+
}
62+
try {
63+
return Optional.ofNullable(MAPPER.readValue(jsonString, Setting.class));
64+
} catch (JsonProcessingException e) {
65+
throw new RuntimeException(e);
66+
}
67+
}
68+
}

webserver/src/main/java/io/kestra/webserver/services/BasicAuthService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ public class BasicAuthService {
4949
@Inject
5050
private ApplicationEventPublisher<OssAuthEvent> ossAuthEventPublisher;
5151

52+
public BasicAuthService(SettingRepositoryInterface settingRepository, BasicAuthConfiguration basicAuthConfiguration, InstanceService instanceService, ApplicationEventPublisher<OssAuthEvent> ossAuthEventPublisher) {
53+
this.settingRepository = settingRepository;
54+
this.basicAuthConfiguration = basicAuthConfiguration;
55+
this.instanceService = instanceService;
56+
this.ossAuthEventPublisher = ossAuthEventPublisher;
57+
}
58+
5259
public BasicAuthService() {}
5360

5461
@VisibleForTesting

0 commit comments

Comments
 (0)