package com.yau.digitalrmb.identity; import com.yau.digitalrmb.identity.application.PlatformCredentialInitializer; import com.yau.digitalrmb.identity.application.PlatformIdentityProjectionService; import com.yau.digitalrmb.platformintegration.application.PlatformCredentialRepository; import com.yau.digitalrmb.platformintegration.application.PlatformIdentityRepository; import com.yau.digitalrmb.platformintegration.config.PlatformIntegrationProperties; import com.yau.digitalrmb.platformintegration.domain.PlatformActor; import com.yau.digitalrmb.platformintegration.domain.PlatformCredential; import com.yau.digitalrmb.platformintegration.domain.PlatformRole; import org.junit.jupiter.api.Test; import org.springframework.boot.DefaultApplicationArguments; import java.time.Instant; import java.util.List; import java.util.Optional; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class PlatformCredentialInitializerTest { @Test void initializesOnlyConfiguredPlatformAccount() throws Exception { PlatformIdentityRepository identities = mock(PlatformIdentityRepository.class); PlatformCredentialRepository credentials = mock(PlatformCredentialRepository.class); PlatformIdentityProjectionService projection = mock(PlatformIdentityProjectionService.class); PlatformIntegrationProperties properties = new PlatformIntegrationProperties(); properties.getLocalLogin().setInitialAccounts(List.of("tzs001")); PlatformActor actor = new PlatformActor(301L, 3L, "tzs001", "教师", PlatformRole.TEACHER, Instant.parse("2026-01-01T00:00:00Z")); PlatformCredential credential = new PlatformCredential(actor, "123qwe"); when(identities.findBySchoolAccount("tzs001")).thenReturn(Optional.of(actor)); when(credentials.findCredential(301L)).thenReturn(Optional.of(credential)); new PlatformCredentialInitializer(properties, identities, credentials, projection) .run(new DefaultApplicationArguments()); verify(projection).project(credential); } }