Skip to content

Commit b78eb10

Browse files
committed
renamed invalidated data to expired data, renamed validUntil fields in entites and added timezode to database tables
1 parent c83ff39 commit b78eb10

File tree

10 files changed

+55
-55
lines changed

10 files changed

+55
-55
lines changed

captchaservice-backend/src/main/java/de/muenchen/captchaservice/entity/CaptchaRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
@Table(
1616
indexes = {
1717
@Index(name = "idx_captcha_request_source_address_hash", columnList = "sourceAddressHash"),
18-
@Index(name = "idx_captcha_request_valid_until", columnList = "validUntil")
18+
@Index(name = "idx_captcha_request_expires_at", columnList = "expiresAt")
1919
}
2020
)
2121

@@ -40,6 +40,6 @@ public class CaptchaRequest extends BaseEntity {
4040
private String sourceAddressHash;
4141

4242
@NotNull
43-
private Instant validUntil;
43+
private Instant expiresAt;
4444

4545
}

captchaservice-backend/src/main/java/de/muenchen/captchaservice/entity/InvalidatedPayload.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
@Table(
1616
indexes = {
1717
@Index(name = "idx_invalidated_payload_payload_hash", columnList = "payloadHash"),
18-
@Index(name = "idx_invalidated_payload_valid_until", columnList = "validUntil")
18+
@Index(name = "idx_invalidated_payload_expires_at", columnList = "expiresAt")
1919
}
2020
)
2121
// Definition of getter, setter, ...
@@ -39,6 +39,6 @@ public class InvalidatedPayload extends BaseEntity {
3939
private String payloadHash;
4040

4141
@NotNull
42-
private Instant validUntil;
42+
private Instant expiresAt;
4343

4444
}

captchaservice-backend/src/main/java/de/muenchen/captchaservice/repository/CaptchaRequestRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import java.util.UUID;
99

1010
public interface CaptchaRequestRepository extends PagingAndSortingRepository<CaptchaRequest, UUID>, CrudRepository<CaptchaRequest, UUID> {
11-
long countBySourceAddressHashIgnoreCaseAndValidUntilGreaterThanEqual(String sourceAddressHash, Instant validUntil);
11+
long countBySourceAddressHashIgnoreCaseAndExpiresAtGreaterThanEqual(String sourceAddressHash, Instant validUntil);
1212

13-
long deleteByValidUntilLessThan(Instant validUntil);
13+
long deleteByExpiresAtLessThan(Instant validUntil);
1414

1515
int countBySourceAddressHashIgnoreCase(String sourceAddressHash);
1616
}

captchaservice-backend/src/main/java/de/muenchen/captchaservice/repository/InvalidatedPayloadRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import java.util.UUID;
99

1010
public interface InvalidatedPayloadRepository extends PagingAndSortingRepository<InvalidatedPayload, UUID>, CrudRepository<InvalidatedPayload, UUID> {
11-
long countByPayloadHashIgnoreCaseAndValidUntilGreaterThanEqual(String payloadHash, Instant validUntil);
11+
long countByPayloadHashIgnoreCaseAndExpiresAtGreaterThanEqual(String payloadHash, Instant validUntil);
1212

13-
long deleteByValidUntilLessThan(Instant validUntil);
13+
long deleteByExpiresAtLessThan(Instant validUntil);
1414

1515
long countByPayloadHash(String payloadHash);
1616
}

captchaservice-backend/src/main/java/de/muenchen/captchaservice/service/captcha/CaptchaService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void invalidatePayload(final Altcha.Payload payload) {
7272
public boolean isPayloadInvalidated(final String siteKey, final Altcha.Payload payload) {
7373
final CaptchaSite site = captchaProperties.sites().get(siteKey);
7474
final String payloadHash = getPayloadHash(payload);
75-
final long payloadHashCount = invalidatedPayloadRepository.countByPayloadHashIgnoreCaseAndValidUntilGreaterThanEqual(payloadHash, Instant.now());
75+
final long payloadHashCount = invalidatedPayloadRepository.countByPayloadHashIgnoreCaseAndExpiresAtGreaterThanEqual(payloadHash, Instant.now());
7676
return payloadHashCount >= site.maxVerifiesPerPayload();
7777
}
7878

captchaservice-backend/src/main/java/de/muenchen/captchaservice/service/difficulty/DifficultyService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public long getDifficultyForSourceAddress(final String siteKey, final SourceAddr
4141
throw new IllegalArgumentException("siteKey not found");
4242
}
4343
final String sourceAddressHash = sourceAddress.getHash();
44-
final long sourceVisitCount = captchaRequestRepository.countBySourceAddressHashIgnoreCaseAndValidUntilGreaterThanEqual(sourceAddressHash,
44+
final long sourceVisitCount = captchaRequestRepository.countBySourceAddressHashIgnoreCaseAndExpiresAtGreaterThanEqual(sourceAddressHash,
4545
Instant.now());
4646
final Optional<DifficultyItem> difficultyItem = captchaSite
4747
.difficultyMap()
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package de.muenchen.captchaservice.service.invalidateddate;
1+
package de.muenchen.captchaservice.service.expireddata;
22

33
import de.muenchen.captchaservice.repository.CaptchaRequestRepository;
44
import de.muenchen.captchaservice.repository.InvalidatedPayloadRepository;
@@ -11,26 +11,26 @@
1111

1212
@Service
1313
@Slf4j
14-
public class InvalidatedDataService {
14+
public class ExpiredDataService {
1515
private final CaptchaRequestRepository captchaRequestRepository;
1616
private final InvalidatedPayloadRepository invalidatedPayloadRepository;
1717

1818
@SuppressFBWarnings(value = { "EI_EXPOSE_REP2" }, justification = "Dependency Injection")
19-
public InvalidatedDataService(final CaptchaRequestRepository captchaRequestRepository, final InvalidatedPayloadRepository invalidatedPayloadRepository) {
19+
public ExpiredDataService(final CaptchaRequestRepository captchaRequestRepository, final InvalidatedPayloadRepository invalidatedPayloadRepository) {
2020
this.captchaRequestRepository = captchaRequestRepository;
2121
this.invalidatedPayloadRepository = invalidatedPayloadRepository;
2222
}
2323

2424
@Transactional
25-
public void deleteInvalidatedData() {
25+
public void deleteExpiredData() {
2626
Instant now = Instant.now();
27-
final long deletedCaptchaRequestCount = captchaRequestRepository.deleteByValidUntilLessThan(now);
27+
final long deletedCaptchaRequestCount = captchaRequestRepository.deleteByExpiresAtLessThan(now);
2828
if (deletedCaptchaRequestCount > 0) {
29-
log.info("Deleted {} invalid CaptchaRequests", deletedCaptchaRequestCount);
29+
log.info("Deleted {} expired CaptchaRequests", deletedCaptchaRequestCount);
3030
}
31-
final long deletedInvalidatedPayloadCount = invalidatedPayloadRepository.deleteByValidUntilLessThan(now);
31+
final long deletedInvalidatedPayloadCount = invalidatedPayloadRepository.deleteByExpiresAtLessThan(now);
3232
if (deletedInvalidatedPayloadCount > 0) {
33-
log.info("Deleted {} invalid InvalidatedPayloads", deletedInvalidatedPayloadCount);
33+
log.info("Deleted {} expired InvalidatedPayloads", deletedInvalidatedPayloadCount);
3434
}
3535
}
3636
}
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package de.muenchen.captchaservice.task;
22

3-
import de.muenchen.captchaservice.service.invalidateddate.InvalidatedDataService;
3+
import de.muenchen.captchaservice.service.expireddata.ExpiredDataService;
44
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
55
import lombok.extern.slf4j.Slf4j;
66
import org.springframework.scheduling.annotation.Scheduled;
@@ -10,20 +10,20 @@
1010

1111
@Component
1212
@Slf4j
13-
public class DeleteInvalidatedDataTask {
14-
private final InvalidatedDataService invalidatedDataService;
13+
public class DeleteExpiredDataTask {
14+
private final ExpiredDataService expiredDataService;
1515

1616
@SuppressFBWarnings(value = { "EI_EXPOSE_REP2" }, justification = "Dependency Injection")
17-
public DeleteInvalidatedDataTask(final InvalidatedDataService invalidatedDataService) {
18-
this.invalidatedDataService = invalidatedDataService;
17+
public DeleteExpiredDataTask(final ExpiredDataService expiredDataService) {
18+
this.expiredDataService = expiredDataService;
1919
}
2020

2121
@Scheduled(fixedRate = 1, timeUnit = TimeUnit.HOURS)
22-
public void deleteInvalidatedData() {
22+
public void deleteExpiredData() {
2323
try {
24-
invalidatedDataService.deleteInvalidatedData();
24+
expiredDataService.deleteExpiredData();
2525
} catch (Exception e) {
26-
log.error("Failed to delete invalidated data", e);
26+
log.error("Failed to delete expired data", e);
2727
}
2828
}
2929
}
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
CREATE TABLE captcha_request
22
(
3-
id UUID NOT NULL,
4-
source_address_hash VARCHAR(64) NOT NULL,
5-
valid_until TIMESTAMP WITHOUT TIME ZONE NOT NULL,
3+
id UUID NOT NULL,
4+
source_address_hash VARCHAR(64) NOT NULL,
5+
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
66
CONSTRAINT pk_captcharequest PRIMARY KEY (id)
77
);
88

99
CREATE TABLE invalidated_payload
1010
(
11-
id UUID NOT NULL,
12-
payload_hash VARCHAR(64) NOT NULL,
13-
valid_until TIMESTAMP WITHOUT TIME ZONE NOT NULL,
11+
id UUID NOT NULL,
12+
payload_hash VARCHAR(64) NOT NULL,
13+
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
1414
CONSTRAINT pk_invalidatedpayload PRIMARY KEY (id)
1515
);
1616

17-
CREATE INDEX idx_captcha_request_source_address_hash ON captcha_request (source_address_hash);
17+
CREATE INDEX idx_captcha_request_expires_at ON captcha_request (expires_at);
1818

19-
CREATE INDEX idx_captcha_request_valid_until ON captcha_request (valid_until);
19+
CREATE INDEX idx_captcha_request_source_address_hash ON captcha_request (source_address_hash);
2020

21-
CREATE INDEX idx_invalidated_payload_payload_hash ON invalidated_payload (payload_hash);
21+
CREATE INDEX idx_invalidated_payload_expires_at ON invalidated_payload (expires_at);
2222

23-
CREATE INDEX idx_invalidated_payload_valid_until ON invalidated_payload (valid_until);
23+
CREATE INDEX idx_invalidated_payload_payload_hash ON invalidated_payload (payload_hash);
Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package de.muenchen.captchaservice.service.invalidateddate;
1+
package de.muenchen.captchaservice.service.expireddata;
22

33
import de.muenchen.captchaservice.TestConstants;
44
import de.muenchen.captchaservice.entity.CaptchaRequest;
@@ -25,7 +25,7 @@
2525

2626
@SpringBootTest
2727
@ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE })
28-
class InvalidatedDataServiceTest {
28+
class ExpiredDataServiceTest {
2929

3030
@Container
3131
@ServiceConnection
@@ -39,36 +39,36 @@ class InvalidatedDataServiceTest {
3939
@Autowired
4040
private InvalidatedPayloadRepository invalidatedPayloadRepository;
4141
@Autowired
42-
private InvalidatedDataService invalidatedDataService;
42+
private de.muenchen.captchaservice.service.expireddata.ExpiredDataService expiredDataService;
4343

4444
@Test
45-
void deleteInvalidatedData() {
45+
void deleteExpiredData() {
4646
databaseTestUtil.clearDatabase();
4747

48-
final String validHash = DigestUtils.sha256Hex("valid");
49-
final String invalidHash = DigestUtils.sha256Hex("invalid");
48+
final String notExpiredHash = DigestUtils.sha256Hex("not expired");
49+
final String expiredHash = DigestUtils.sha256Hex("expired");
5050

51-
// Invalid data
52-
captchaRequestRepository.save(new CaptchaRequest(validHash, Instant.now().plus(Period.ofDays(1))));
53-
captchaRequestRepository.save(new CaptchaRequest(validHash, Instant.now().plus(Period.ofDays(1))));
54-
invalidatedPayloadRepository.save(new InvalidatedPayload(validHash, Instant.now().plus(Period.ofDays(1))));
55-
invalidatedPayloadRepository.save(new InvalidatedPayload(validHash, Instant.now().plus(Period.ofDays(1))));
51+
// Not expired data
52+
captchaRequestRepository.save(new CaptchaRequest(notExpiredHash, Instant.now().plus(Period.ofDays(1))));
53+
captchaRequestRepository.save(new CaptchaRequest(notExpiredHash, Instant.now().plus(Period.ofDays(1))));
54+
invalidatedPayloadRepository.save(new InvalidatedPayload(notExpiredHash, Instant.now().plus(Period.ofDays(1))));
55+
invalidatedPayloadRepository.save(new InvalidatedPayload(notExpiredHash, Instant.now().plus(Period.ofDays(1))));
5656

57-
// Valid data
58-
captchaRequestRepository.save(new CaptchaRequest(invalidHash, Instant.now().minus(Period.ofDays(1))));
59-
captchaRequestRepository.save(new CaptchaRequest(invalidHash, Instant.now().minus(Period.ofDays(1))));
60-
invalidatedPayloadRepository.save(new InvalidatedPayload(invalidHash, Instant.now().minus(Period.ofDays(1))));
61-
invalidatedPayloadRepository.save(new InvalidatedPayload(invalidHash, Instant.now().minus(Period.ofDays(1))));
57+
// Expired data
58+
captchaRequestRepository.save(new CaptchaRequest(expiredHash, Instant.now().minus(Period.ofDays(1))));
59+
captchaRequestRepository.save(new CaptchaRequest(expiredHash, Instant.now().minus(Period.ofDays(1))));
60+
invalidatedPayloadRepository.save(new InvalidatedPayload(expiredHash, Instant.now().minus(Period.ofDays(1))));
61+
invalidatedPayloadRepository.save(new InvalidatedPayload(expiredHash, Instant.now().minus(Period.ofDays(1))));
6262

6363
assertEquals(4, invalidatedPayloadRepository.count());
6464
assertEquals(4, captchaRequestRepository.count());
6565

66-
invalidatedDataService.deleteInvalidatedData();
66+
expiredDataService.deleteExpiredData();
6767

6868
assertEquals(2, invalidatedPayloadRepository.count());
6969
assertEquals(2, captchaRequestRepository.count());
70-
assertEquals(2, captchaRequestRepository.countBySourceAddressHashIgnoreCase(validHash));
71-
assertEquals(2, invalidatedPayloadRepository.countByPayloadHash(validHash));
70+
assertEquals(2, captchaRequestRepository.countBySourceAddressHashIgnoreCase(notExpiredHash));
71+
assertEquals(2, invalidatedPayloadRepository.countByPayloadHash(notExpiredHash));
7272
}
7373

7474
}

0 commit comments

Comments
 (0)