Installer workflow is done - Docker container is working fine

This commit is contained in:
2026-07-26 23:37:23 +05:30
parent 3cf5c83264
commit d684931bc5
1313 changed files with 778 additions and 408752 deletions

View File

@@ -2,6 +2,8 @@ package com.cygnus.cloud.identity.api;
import com.cygnus.cloud.identity.service.AuthenticationException;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
@@ -9,10 +11,12 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class IdentityErrorHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(IdentityErrorHandler.class);
@ExceptionHandler(AuthenticationException.class)
@ResponseStatus(HttpStatus.UNAUTHORIZED)
Map<String, String> authenticationFailure() {
Map<String, String> authenticationFailure(AuthenticationException exception) {
LOGGER.warn("Identity authentication rejected: {}", exception.getMessage());
return Map.of("code", "AUTHENTICATION_FAILED", "message", "Authentication failed");
}
}

View File

@@ -38,8 +38,8 @@ public class ClientAdministrationController {
@PostMapping("/tenants/{tenantId}/installations/{installationId}/decommission")
public Mono<?> decommission(
@PathVariable UUID tenantId,
@PathVariable UUID installationId,
@PathVariable("tenantId") UUID tenantId,
@PathVariable("installationId") UUID installationId,
@Valid @RequestBody RetireInstallationRequest request,
Authentication authentication) {
return installationLifecycleService.retire(
@@ -52,8 +52,8 @@ public class ClientAdministrationController {
@PostMapping("/tenants/{tenantId}/installations/{installationId}/revoke")
public Mono<?> revoke(
@PathVariable UUID tenantId,
@PathVariable UUID installationId,
@PathVariable("tenantId") UUID tenantId,
@PathVariable("installationId") UUID installationId,
@Valid @RequestBody RetireInstallationRequest request,
Authentication authentication) {
return installationLifecycleService.retire(
@@ -103,7 +103,7 @@ public class ClientAdministrationController {
@PostMapping("/client-registrations/{registrationId}/tenants")
public Mono<Map<String, UUID>> tenant(
@PathVariable UUID registrationId,
@PathVariable("registrationId") UUID registrationId,
@Valid @RequestBody CreateTenantRequest request) {
UUID id = UUID.randomUUID();
return repository.createTenant(
@@ -115,7 +115,7 @@ public class ClientAdministrationController {
@PostMapping("/tenants/{tenantId}/licenses")
public Mono<Map<String, UUID>> license(
@PathVariable UUID tenantId,
@PathVariable("tenantId") UUID tenantId,
@Valid @RequestBody CreateLicenseRequest request) {
if (!request.validUntil().isAfter(request.validFrom())) {
return Mono.error(new IllegalArgumentException(
@@ -138,8 +138,8 @@ public class ClientAdministrationController {
@PostMapping("/tenants/{tenantId}/licenses/{licenseId}/activation-key")
public Mono<Map<String, String>> activationKey(
@PathVariable UUID tenantId,
@PathVariable UUID licenseId,
@PathVariable("tenantId") UUID tenantId,
@PathVariable("licenseId") UUID licenseId,
@Valid @RequestBody IssueLicenseKeyRequest request,
Authentication authentication) {
return licenseKeyService.issue(
@@ -149,7 +149,7 @@ public class ClientAdministrationController {
.switchIfEmpty(Mono.error(
new IllegalArgumentException("Tenant or license not found")))
.flatMap(details -> emailService.sendLicense(
request.recipientEmail(),
details.primaryContactEmail(),
details.clientCode(),
details.tenantSlug(),
details.packageCode(),

View File

@@ -1,6 +1,7 @@
package com.cygnus.cloud.tenant.api;
import com.cygnus.cloud.tenant.service.InstallationActivationException;
import com.cygnus.cloud.tenant.service.InstallationCodeConflictException;
import com.cygnus.cloud.tenant.service.LicenseKeyException;
import com.cygnus.cloud.tenant.service.ActivationRateLimitException;
import java.util.Map;
@@ -12,6 +13,15 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class InstallationActivationErrorHandler {
@ExceptionHandler(InstallationCodeConflictException.class)
@ResponseStatus(HttpStatus.CONFLICT)
Map<String, String> installationCodeConflict(
InstallationCodeConflictException exception) {
return Map.of(
"code", "INSTALLATION_CODE_ALREADY_EXISTS",
"message", exception.getMessage());
}
@ExceptionHandler({LicenseKeyException.class, InstallationActivationException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
Map<String, String> activationFailure() {

View File

@@ -1,11 +1,8 @@
package com.cygnus.cloud.tenant.api;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.time.OffsetDateTime;
public record IssueLicenseKeyRequest(
@NotNull OffsetDateTime expiresAt,
@NotBlank @Email String recipientEmail) {
@NotNull OffsetDateTime expiresAt) {
}

View File

@@ -4,4 +4,5 @@ public record LicenseDeliveryDetails(
String clientCode,
String tenantSlug,
String packageCode,
int maximumInstallations) {}
int maximumInstallations,
String primaryContactEmail) {}

View File

@@ -46,6 +46,7 @@ public class ClientAdministrationRepository {
private static final String FIND_LICENSE_DELIVERY_DETAILS = """
SELECT registration.client_code,
registration.primary_contact_email,
account.client_slug,
license.package_code,
license.max_installations
@@ -118,7 +119,8 @@ public class ClientAdministrationRepository {
row.getString("client_code"),
row.getString("client_slug"),
row.getString("package_code"),
row.getInteger("max_installations")));
row.getInteger("max_installations"),
row.getString("primary_contact_email")));
});
}
}

View File

@@ -20,7 +20,8 @@ public class InstallationActivationRepository {
activation_session_id, activation_key_id, registration_id,
tenant_id, license_id, installation_uuid, token_hash,
status, expires_at, source_ip, installer_version)
VALUES ($1, $2, $3, $4, $5, $6, $7, 'PENDING', $8, $9::inet, $10)
VALUES ($1, $2, $3, $4, $5, $6, $7, 'PENDING', $8,
CAST($9 AS text)::inet, $10)
""";
private static final String LOCK_SESSION_AND_LICENSE = """

View File

@@ -94,7 +94,10 @@ public class LicenseActivationRepository {
private static final String REVOKE_KEY = """
UPDATE identity.license_activation_key
SET status = 'REVOKED',
locked_until = NULL
locked_until = NULL,
revoked_at = now(),
revoked_by = 'system',
revocation_reason = 'Activation-key delivery failed'
WHERE activation_key_id = $1
AND status IN ('ACTIVE', 'LOCKED')
""";

View File

@@ -17,6 +17,7 @@ import java.time.ZoneOffset;
import java.util.Base64;
import java.util.Set;
import java.util.UUID;
import io.vertx.pgclient.PgException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;
@@ -83,6 +84,11 @@ public class InstallationActivationService {
softwareVersion,
environment,
now)
.onErrorMap(
error -> error instanceof PgException pgException
&& "23505".equals(pgException.getSqlState()),
error -> new InstallationCodeConflictException(
installationCode))
.onErrorMap(
error -> !(error instanceof InstallationActivationException),
error -> new InstallationActivationException(

View File

@@ -0,0 +1,9 @@
package com.cygnus.cloud.tenant.service;
public class InstallationCodeConflictException
extends InstallationActivationException {
public InstallationCodeConflictException(String installationCode) {
super("Installation code already exists: " + installationCode);
}
}

View File

@@ -33,6 +33,10 @@ public class RegistrationEmailService {
OffsetDateTime validUntil,
IssuedLicenseKey issued) {
return Mono.fromRunnable(() -> {
if (recipient == null || recipient.isBlank()) {
throw new IllegalStateException(
"The client registration has no primary contact email");
}
JavaMailSender mailSender = mailSenderProvider.getIfAvailable();
if (mailSender == null) {
throw new IllegalStateException(

View File

@@ -0,0 +1,49 @@
package com.cygnus.cloud.tenant.repository;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.cygnus.cloud.database.ReactiveDatabaseClient;
import io.vertx.sqlclient.Tuple;
import java.time.OffsetDateTime;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import reactor.core.publisher.Mono;
class InstallationActivationRepositoryTest {
@Test
void sourceIpIsBoundAsTextBeforePostgresInetConversion() {
ReactiveDatabaseClient database = mock(ReactiveDatabaseClient.class);
when(database.preparedUpdate(anyString(), any(Tuple.class)))
.thenReturn(Mono.just(1));
InstallationActivationRepository repository =
new InstallationActivationRepository(database);
assertThat(repository.insertSession(
UUID.randomUUID(),
UUID.randomUUID(),
UUID.randomUUID(),
UUID.randomUUID(),
UUID.randomUUID(),
UUID.randomUUID(),
"token-hash",
OffsetDateTime.now().plusMinutes(10),
"127.0.0.1",
"1.0.0")
.block())
.isTrue();
ArgumentCaptor<String> sql = ArgumentCaptor.forClass(String.class);
ArgumentCaptor<Tuple> parameters = ArgumentCaptor.forClass(Tuple.class);
verify(database).preparedUpdate(sql.capture(), parameters.capture());
assertThat(sql.getValue()).contains("CAST($9 AS text)::inet");
assertThat(parameters.getValue().getString(8)).isEqualTo("127.0.0.1");
}
}

View File

@@ -0,0 +1,37 @@
package com.cygnus.cloud.tenant.repository;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.cygnus.cloud.database.ReactiveDatabaseClient;
import io.vertx.sqlclient.Tuple;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import reactor.core.publisher.Mono;
class LicenseActivationRepositoryTest {
@Test
void revocationPopulatesRequiredAuditColumns() {
ReactiveDatabaseClient database = mock(ReactiveDatabaseClient.class);
when(database.preparedUpdate(anyString(), any(Tuple.class)))
.thenReturn(Mono.just(1));
LicenseActivationRepository repository =
new LicenseActivationRepository(database);
assertThat(repository.revoke(UUID.randomUUID()).block()).isTrue();
ArgumentCaptor<String> sql = ArgumentCaptor.forClass(String.class);
verify(database).preparedUpdate(sql.capture(), any(Tuple.class));
assertThat(sql.getValue())
.contains("status = 'REVOKED'")
.contains("revoked_at = now()")
.contains("revoked_by = 'system'")
.contains("revocation_reason = 'Activation-key delivery failed'");
}
}

View File

@@ -0,0 +1,72 @@
package com.cygnus.cloud.tenant.service;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.cygnus.cloud.tenant.model.IssuedLicenseKey;
import java.time.OffsetDateTime;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
class RegistrationEmailServiceTest {
@Test
void sendsActivationKeyToRegisteredPrimaryContact() {
JavaMailSender mailSender = mock(JavaMailSender.class);
@SuppressWarnings("unchecked")
ObjectProvider<JavaMailSender> provider = mock(ObjectProvider.class);
when(provider.getIfAvailable()).thenReturn(mailSender);
RegistrationEmailService service =
new RegistrationEmailService(provider, "noreply@technobee.test");
service.sendLicense(
"registered@example.com",
"MATRIX",
"matrix",
"STANDARD",
1,
OffsetDateTime.parse("2027-07-26T23:59:59+05:30"),
new IssuedLicenseKey(
UUID.randomUUID(),
"CYGNUS-TEST-LICENSE-KEY",
"ENSEKEY"))
.block();
ArgumentCaptor<SimpleMailMessage> message =
ArgumentCaptor.forClass(SimpleMailMessage.class);
verify(mailSender).send(message.capture());
assertThat(message.getValue().getTo()).containsExactly("registered@example.com");
assertThat(message.getValue().getText()).contains("CYGNUS-TEST-LICENSE-KEY");
}
@Test
void rejectsRegistrationWithoutPrimaryContactEmail() {
@SuppressWarnings("unchecked")
ObjectProvider<JavaMailSender> provider = mock(ObjectProvider.class);
RegistrationEmailService service =
new RegistrationEmailService(provider, "noreply@technobee.test");
assertThatThrownBy(() -> service.sendLicense(
" ",
"MATRIX",
"matrix",
"STANDARD",
1,
OffsetDateTime.parse("2027-07-26T23:59:59+05:30"),
new IssuedLicenseKey(
UUID.randomUUID(),
"CYGNUS-TEST-LICENSE-KEY",
"ENSEKEY"))
.block())
.isInstanceOf(IllegalStateException.class)
.hasMessage(
"The client registration has no primary contact email");
}
}

View File

@@ -1,21 +1,39 @@
com/cygnus/cloud/tenant/repository/InstallationActivationRepository.class
com/cygnus/cloud/security/JwtReplayProtectionService.class
com/cygnus/cloud/tenant/service/LicenseKeyException.class
com/cygnus/cloud/security/TokenResponse.class
com/cygnus/cloud/identity/api/IdentityErrorHandler.class
com/cygnus/cloud/security/MachineTokenController.class
com/cygnus/cloud/tenant/api/InstallationRegistrationRequest.class
com/cygnus/cloud/database/ReactiveDatabaseClient.class
com/cygnus/cloud/tenant/repository/TenantRegistrationRepository.class
com/cygnus/cloud/tenant/service/InstallationActivationException.class
com/cygnus/cloud/tenant/api/IssueLicenseKeyRequest.class
com/cygnus/cloud/tenant/repository/InstallationLifecycleRepository.class
com/cygnus/cloud/identity/api/EncryptedLoginRequest.class
com/cygnus/cloud/security/AccessTokenIssuer.class
com/cygnus/cloud/tenant/model/IssuedLicenseKey.class
com/cygnus/cloud/tenant/api/ActivationValidationRequest.class
com/cygnus/cloud/security/MachineTokenErrorHandler.class
com/cygnus/cloud/tenant/api/InstallationActivationController.class
com/cygnus/cloud/tenant/service/ActivationRateLimiter.class
com/cygnus/cloud/security/MachineClientPrincipal.class
com/cygnus/cloud/security/CommunicationSecurityProperties.class
com/cygnus/cloud/tenant/api/RetireInstallationRequest.class
com/cygnus/cloud/tenant/model/ClientStatus.class
com/cygnus/cloud/system/SystemConfiguration.class
com/cygnus/cloud/tenant/service/InstallationActivationService.class
com/cygnus/cloud/security/MachineAuthenticationException.class
com/cygnus/cloud/tenant/service/ActivationRateLimitException.class
com/cygnus/cloud/tenant/model/RegisteredInstallation.class
com/cygnus/cloud/tenant/repository/ClientAdministrationRepository.class
com/cygnus/cloud/database/VertxDatabaseConfiguration.class
com/cygnus/cloud/identity/repository/IdentityRepository.class
com/cygnus/cloud/tenant/model/ActivationKeyStatus.class
com/cygnus/cloud/identity/service/LegacyPasswordVerifier.class
com/cygnus/cloud/tenant/api/CreateTenantRequest.class
com/cygnus/cloud/tenant/repository/InstallationActivationRepository$RegistrationContext.class
com/cygnus/cloud/tenant/model/LicenseActivationContext.class
com/cygnus/cloud/identity/model/MenuItem.class
com/cygnus/cloud/identity/model/AuthenticatedIdentity.class
com/cygnus/cloud/identity/api/CloudLoginController.class
@@ -23,22 +41,39 @@ com/cygnus/cloud/security/ClientAssertionValidator.class
com/cygnus/cloud/tenant/api/ClientAdministrationController.class
com/cygnus/cloud/identity/model/IdentityUser.class
com/cygnus/cloud/identity/repository/IdentityRowMapper.class
com/cygnus/cloud/tenant/repository/LicenseActivationRepository.class
com/cygnus/cloud/cache/CacheProperties.class
com/cygnus/cloud/tenant/api/InstallationActivationErrorHandler.class
com/cygnus/cloud/identity/service/AuthenticationException.class
com/cygnus/cloud/security/AudienceValidator.class
com/cygnus/cloud/tenant/model/LicenseStatus.class
com/cygnus/cloud/security/MachineSecurityConfigurationValidator.class
com/cygnus/cloud/tenant/service/LicenseKeyService.class
com/cygnus/cloud/tenant/model/ClientAccount.class
com/cygnus/cloud/tenant/service/RegistrationEmailService.class
com/cygnus/cloud/identity/api/LoginEncryptionProperties.class
com/cygnus/cloud/identity/service/LoginRequestReplayService.class
com/cygnus/cloud/tenant/service/TenantRegistrationService.class
com/cygnus/cloud/identity/service/IdentityAuthenticationService.class
com/cygnus/cloud/tenant/model/ClientInstallation.class
com/cygnus/cloud/tenant/api/ActivationValidationResponse.class
com/cygnus/cloud/tenant/model/ClientLicense.class
com/cygnus/cloud/tenant/model/ClientRegistration.class
com/cygnus/cloud/system/SystemInfoResponse.class
com/cygnus/cloud/tenant/api/CreateLicenseRequest.class
com/cygnus/cloud/identity/api/LoginPayload.class
com/cygnus/cloud/tenant/service/InstallationCodeConflictException.class
com/cygnus/cloud/tenant/model/LicenseDeliveryDetails.class
com/cygnus/cloud/security/PemKeyLoader.class
com/cygnus/cloud/tenant/model/LicenseActivationKey.class
com/cygnus/cloud/security/CloudSecurityConfiguration.class
com/cygnus/cloud/tenant/model/ActivationSession.class
com/cygnus/cloud/tenant/model/RegistrationStatus.class
com/cygnus/cloud/system/SystemInfoController.class
com/cygnus/cloud/CygnusCloudServiceApplication.class
com/cygnus/cloud/cache/ReactiveCacheService.class
com/cygnus/cloud/tenant/model/InstallationLifecycleResult.class
com/cygnus/cloud/tenant/service/InstallationLifecycleService.class
com/cygnus/cloud/tenant/api/CreateClientRegistrationRequest.class
com/cygnus/cloud/identity/api/RsaLoginPayloadDecryptor.class
com/cygnus/cloud/database/DatabaseProperties.class

View File

@@ -1,77 +1,78 @@
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/CygnusCloudServiceApplication.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/cache/CacheProperties.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/cache/ReactiveCacheService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/database/DatabaseProperties.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/database/ReactiveDatabaseClient.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/database/VertxDatabaseConfiguration.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/CloudLoginController.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/EncryptedLoginRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/IdentityErrorHandler.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/LoginEncryptionProperties.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/LoginPayload.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/RsaLoginPayloadDecryptor.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/model/AuthenticatedIdentity.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/model/IdentityUser.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/model/MenuItem.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/repository/IdentityRepository.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/repository/IdentityRowMapper.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/AuthenticationException.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/IdentityAuthenticationService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/LegacyPasswordVerifier.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/LoginRequestReplayService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/AccessTokenIssuer.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/AudienceValidator.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/ClientAssertionValidator.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/CloudSecurityConfiguration.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/CommunicationSecurityProperties.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/JwtReplayProtectionService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineAuthenticationException.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineClientPrincipal.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineSecurityConfigurationValidator.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineTokenController.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineTokenErrorHandler.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/PemKeyLoader.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/TokenResponse.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/system/SystemConfiguration.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/system/SystemInfoController.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/system/SystemInfoResponse.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/ActivationValidationRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/ActivationValidationResponse.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/ClientAdministrationController.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/CreateClientRegistrationRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/CreateLicenseRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/CreateTenantRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/InstallationActivationController.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/InstallationActivationErrorHandler.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/InstallationRegistrationRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/IssueLicenseKeyRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/RetireInstallationRequest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ActivationKeyStatus.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ActivationSession.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientAccount.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientInstallation.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientLicense.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientRegistration.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientStatus.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/InstallationLifecycleResult.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/IssuedLicenseKey.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseActivationContext.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseActivationKey.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseDeliveryDetails.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseStatus.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/RegisteredInstallation.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/RegistrationStatus.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/ClientAdministrationRepository.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/InstallationActivationRepository.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/InstallationLifecycleRepository.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/LicenseActivationRepository.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/TenantRegistrationRepository.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/ActivationRateLimitException.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/ActivationRateLimiter.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationActivationException.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationActivationService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationLifecycleService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/LicenseKeyException.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/LicenseKeyService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/RegistrationEmailService.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/TenantRegistrationService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/CygnusCloudServiceApplication.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/cache/CacheProperties.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/cache/ReactiveCacheService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/database/DatabaseProperties.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/database/ReactiveDatabaseClient.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/database/VertxDatabaseConfiguration.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/CloudLoginController.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/EncryptedLoginRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/IdentityErrorHandler.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/LoginEncryptionProperties.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/LoginPayload.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/api/RsaLoginPayloadDecryptor.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/model/AuthenticatedIdentity.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/model/IdentityUser.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/model/MenuItem.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/repository/IdentityRepository.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/repository/IdentityRowMapper.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/AuthenticationException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/IdentityAuthenticationService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/LegacyPasswordVerifier.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/identity/service/LoginRequestReplayService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/AccessTokenIssuer.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/AudienceValidator.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/ClientAssertionValidator.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/CloudSecurityConfiguration.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/CommunicationSecurityProperties.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/JwtReplayProtectionService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineAuthenticationException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineClientPrincipal.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineSecurityConfigurationValidator.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineTokenController.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/MachineTokenErrorHandler.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/PemKeyLoader.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/security/TokenResponse.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/system/SystemConfiguration.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/system/SystemInfoController.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/system/SystemInfoResponse.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/ActivationValidationRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/ActivationValidationResponse.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/ClientAdministrationController.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/CreateClientRegistrationRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/CreateLicenseRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/CreateTenantRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/InstallationActivationController.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/InstallationActivationErrorHandler.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/InstallationRegistrationRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/IssueLicenseKeyRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/api/RetireInstallationRequest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ActivationKeyStatus.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ActivationSession.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientAccount.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientInstallation.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientLicense.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientRegistration.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/ClientStatus.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/InstallationLifecycleResult.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/IssuedLicenseKey.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseActivationContext.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseActivationKey.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseDeliveryDetails.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/LicenseStatus.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/RegisteredInstallation.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/model/RegistrationStatus.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/ClientAdministrationRepository.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/InstallationActivationRepository.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/InstallationLifecycleRepository.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/LicenseActivationRepository.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/repository/TenantRegistrationRepository.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/ActivationRateLimitException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/ActivationRateLimiter.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationActivationException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationActivationService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationCodeConflictException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/InstallationLifecycleService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/LicenseKeyException.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/LicenseKeyService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/RegistrationEmailService.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/main/java/com/cygnus/cloud/tenant/service/TenantRegistrationService.java

View File

@@ -1,6 +1,13 @@
com/cygnus/cloud/tenant/repository/InstallationActivationRepositoryTest.class
com/cygnus/cloud/tenant/service/TenantRegistrationServiceTest.class
com/cygnus/cloud/tenant/repository/LicenseActivationRepositoryTest.class
com/cygnus/cloud/tenant/service/RegistrationEmailServiceTest.class
com/cygnus/cloud/tenant/service/LicenseKeyServiceTest.class
com/cygnus/cloud/InfrastructureConfigurationTest.class
com/cygnus/cloud/tenant/model/ClientLicenseTest.class
com/cygnus/cloud/system/SystemInfoControllerTest$FixedClockConfiguration.class
com/cygnus/cloud/tenant/service/ActivationRateLimiterTest.class
com/cygnus/cloud/identity/service/IdentityAuthenticationServiceTest.class
com/cygnus/cloud/system/SystemInfoControllerTest.class
com/cygnus/cloud/InfrastructureConfigurationTest.class
com/cygnus/cloud/identity/service/LegacyPasswordVerifierTest.class
com/cygnus/cloud/security/MachineTokenFlowTest.class
com/cygnus/cloud/system/SystemInfoControllerTest$FixedClockConfiguration.class

View File

@@ -1,9 +1,12 @@
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/InfrastructureConfigurationTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/identity/service/IdentityAuthenticationServiceTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/identity/service/LegacyPasswordVerifierTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/security/MachineTokenFlowTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/system/SystemInfoControllerTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/model/ClientLicenseTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/ActivationRateLimiterTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/LicenseKeyServiceTest.java
/Users/maddy/Projects/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/TenantRegistrationServiceTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/InfrastructureConfigurationTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/identity/service/IdentityAuthenticationServiceTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/identity/service/LegacyPasswordVerifierTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/security/MachineTokenFlowTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/system/SystemInfoControllerTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/model/ClientLicenseTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/repository/InstallationActivationRepositoryTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/repository/LicenseActivationRepositoryTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/ActivationRateLimiterTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/LicenseKeyServiceTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/RegistrationEmailServiceTest.java
/Users/maddy/Projects/cygnus/matrix/cygnus-cloud-service/src/test/java/com/cygnus/cloud/tenant/service/TenantRegistrationServiceTest.java

Some files were not shown because too many files have changed in this diff Show More