Skip to content

Commit

Permalink
Merge branch 'EW-1057' into EW-1083
Browse files Browse the repository at this point in the history
  • Loading branch information
mkreuzkam-cap committed Jan 20, 2025
2 parents 6768816 + ffc1e28 commit 6e6e1e5
Show file tree
Hide file tree
Showing 56 changed files with 116 additions and 68 deletions.
2 changes: 1 addition & 1 deletion apps/server/src/infra/sync/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export * from './tsp';
export * from './media-licenses';
export { TspSyncConfig, TspSyncStrategy } from './strategy/tsp';
2 changes: 1 addition & 1 deletion apps/server/src/infra/sync/service/sync.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { createMock } from '@golevelup/ts-jest';
import { faker } from '@faker-js/faker';
import { Logger } from '@src/core/logger';
import { SyncService } from './sync.service';
import { TspSyncStrategy } from '../tsp/tsp-sync.strategy';
import { TspSyncStrategy } from '../strategy/tsp/tsp-sync.strategy';
import { SyncStrategyTarget } from '../sync-strategy.types';
import { InvalidTargetLoggable } from '../errors/invalid-target.loggable';

Expand Down
2 changes: 1 addition & 1 deletion apps/server/src/infra/sync/service/sync.service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Injectable, Optional } from '@nestjs/common';
import { Logger } from '@src/core/logger';
import { TspSyncStrategy } from '../tsp/tsp-sync.strategy';
import { TspSyncStrategy } from '../strategy/tsp/tsp-sync.strategy';
import { SyncStrategy } from '../strategy/sync-strategy';
import { SyncStrategyTarget } from '../sync-strategy.types';
import { InvalidTargetLoggable } from '../errors/invalid-target.loggable';
Expand Down
2 changes: 2 additions & 0 deletions apps/server/src/infra/sync/strategy/sync.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface SyncConfig {}
File renamed without changes.
12 changes: 12 additions & 0 deletions apps/server/src/infra/sync/strategy/tsp/loggable/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
export { TspDataFetchedLoggable } from './tsp-data-fetched.loggable';
export { TspLegacyMigrationStartLoggable } from './tsp-legacy-migration-start.loggable';
export { TspLegacySchoolMigrationCountLoggable } from './tsp-legacy-school-migration-count.loggable';
export { TspLegacySchoolMigrationSuccessLoggable } from './tsp-legacy-school-migration-success.loggable';
export { TspMissingExternalIdLoggable } from './tsp-missing-external-id.loggable';
export { TspSchoolsFetchedLoggable } from './tsp-schools-fetched.loggable';
export { TspSchoolsSyncedLoggable } from './tsp-schools-synced.loggable';
export { TspSchulnummerMissingLoggable } from './tsp-schulnummer-missing.loggable';
export { TspSyncedUsersLoggable } from './tsp-synced-users.loggable';
export { TspSyncingUsersLoggable } from './tsp-syncing-users.loggable';
export { TspSystemNotFoundLoggableException } from './tsp-system-not-found.loggable-exception';
export { TspUsersMigratedLoggable } from './tsp-users-migrated.loggable';
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import { faker } from '@faker-js/faker';
import { createMock, DeepMocked } from '@golevelup/ts-jest';
import { Test, TestingModule } from '@nestjs/testing';
import { AxiosErrorLoggable, ErrorLoggable } from '@src/core/error/loggable';
import { AxiosError, AxiosResponse } from 'axios';
import { Logger } from '@src/core/logger';
import { OauthConfigMissingLoggableException } from '@modules/oauth/loggable';
import { systemFactory } from '@modules/system/testing';
import { AxiosErrorLoggable, ErrorLoggable } from '@src/core/error/loggable';
import {
ExportApiInterface,
RobjExportKlasse,
Expand All @@ -12,10 +15,7 @@ import {
RobjExportSchuelerMigration,
RobjExportSchule,
TspClientFactory,
} from '@src/infra/tsp-client';
import { OauthConfigMissingLoggableException } from '@src/modules/oauth/loggable';
import { systemFactory } from '@src/modules/system/testing';
import { AxiosError, AxiosResponse } from 'axios';
} from '../../../tsp-client';
import { TspFetchService } from './tsp-fetch.service';

describe(TspFetchService.name, () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { createMock, DeepMocked } from '@golevelup/ts-jest';
import { MongoMemoryDatabaseModule } from '@infra/database';
import { EntityManager } from '@mikro-orm/mongodb';
import { SystemType } from '@modules/system';
import { Test, TestingModule } from '@nestjs/testing';
import { SchoolEntity } from '@shared/domain/entity';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { SchoolFeature } from '@shared/domain/types';
import { Logger } from '@src/core/logger';
import { SystemType } from '@src/modules/system';
import { cleanupCollections } from '@testing/cleanup-collections';
import { schoolEntityFactory } from '@testing/factory/school-entity.factory';
import { systemEntityFactory } from '@testing/factory/systemEntityFactory';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import {
OauthDataDto,
ProvisioningSystemDto,
} from '@modules/provisioning';
import { BadDataLoggableException } from '@modules/provisioning/loggable';
import { schoolFactory } from '@modules/school/testing';
import { systemFactory } from '@modules/system/testing';
import { Test, TestingModule } from '@nestjs/testing';
import { RoleName } from '@shared/domain/interface';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { Logger } from '@src/core/logger';
import { RobjExportKlasse, RobjExportLehrer, RobjExportSchueler } from '@src/infra/tsp-client';
import { BadDataLoggableException } from '@src/modules/provisioning/loggable';
import { schoolFactory } from '@src/modules/school/testing';
import { systemFactory } from '@src/modules/system/testing';
import { RobjExportKlasse, RobjExportLehrer, RobjExportSchueler } from '../../../tsp-client';
import { TspMissingExternalIdLoggable } from './loggable/tsp-missing-external-id.loggable';
import { TspOauthDataMapper } from './tsp-oauth-data.mapper';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { Injectable } from '@nestjs/common';
import { BadDataLoggableException } from '@modules/provisioning/loggable';
import { System } from '@modules/system';
import { RoleName } from '@shared/domain/interface';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { School } from '@modules/school';
import {
ExternalClassDto,
ExternalSchoolDto,
ExternalUserDto,
OauthDataDto,
ProvisioningSystemDto,
} from '@modules/provisioning';
import { School } from '@modules/school';
import { System } from '@modules/system';
import { Injectable } from '@nestjs/common';
import { RoleName } from '@shared/domain/interface';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { Logger } from '@src/core/logger';
import { RobjExportKlasse, RobjExportLehrer, RobjExportSchueler } from '@src/infra/tsp-client';
import { BadDataLoggableException } from '@src/modules/provisioning/loggable';
import { RobjExportKlasse, RobjExportLehrer, RobjExportSchueler } from '../../../tsp-client';
import { TspMissingExternalIdLoggable } from './loggable/tsp-missing-external-id.loggable';

@Injectable()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export interface TspSyncConfig {
import { SyncConfig } from '../sync.config';

export interface TspSyncConfig extends SyncConfig {
TSP_SYNC_SCHOOL_LIMIT: number;
TSP_SYNC_SCHOOL_DAYS_TO_FETCH: number;
TSP_SYNC_DATA_LIMIT: number;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { faker } from '@faker-js/faker';
import { createMock, DeepMocked } from '@golevelup/ts-jest';
import { FederalStateService, SchoolYearService } from '@modules/legacy-school';
import { School, SchoolService } from '@modules/school';
import { FileStorageType, SchoolProps } from '@modules/school/domain';
import { FederalStateEntityMapper, SchoolYearEntityMapper } from '@modules/school/repo/mikro-orm/mapper';
import { schoolFactory } from '@modules/school/testing';
import { SystemService, SystemType } from '@modules/system';
import { systemFactory } from '@modules/system/testing';
import { Test, TestingModule } from '@nestjs/testing';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { FederalStateService, SchoolYearService } from '@src/modules/legacy-school';
import { FileStorageType, SchoolProps } from '@src/modules/school/domain';
import { FederalStateEntityMapper, SchoolYearEntityMapper } from '@src/modules/school/repo/mikro-orm/mapper';
import { schoolFactory } from '@src/modules/school/testing';
import { systemFactory } from '@src/modules/system/testing';
import { federalStateFactory } from '@testing/factory/federal-state.factory';
import { schoolYearFactory } from '@testing/factory/schoolyear.factory';
import { TspSyncService } from './tsp-sync.service';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { FederalStateService, SchoolYearService } from '@modules/legacy-school';
import { FederalStateNames } from '@modules/legacy-school/types';
import { School, SchoolService } from '@modules/school';
import { FederalState, FileStorageType } from '@modules/school/domain';
import { SchoolFactory } from '@modules/school/domain/factory';
import { SchoolPermissions } from '@modules/school/domain/type';
import { FederalStateEntityMapper, SchoolYearEntityMapper } from '@modules/school/repo/mikro-orm/mapper';
import { System, SystemService, SystemType } from '@modules/system';
import { Injectable } from '@nestjs/common';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { SchoolFeature } from '@shared/domain/types';
import { FederalStateNames } from '@src/modules/legacy-school/types';
import { FederalState, FileStorageType } from '@src/modules/school/domain';
import { SchoolFactory } from '@src/modules/school/domain/factory';
import { SchoolPermissions } from '@src/modules/school/domain/type';
import { FederalStateEntityMapper, SchoolYearEntityMapper } from '@src/modules/school/repo/mikro-orm/mapper';
import { ObjectId } from 'bson';
import { TspSystemNotFoundLoggableException } from './loggable/tsp-system-not-found.loggable-exception';
import { TspSystemNotFoundLoggableException } from './loggable';

@Injectable()
export class TspSyncService {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,25 @@ import {
RobjExportSchuelerMigration,
RobjExportSchule,
} from '@infra/tsp-client';
import { Account } from '@modules/account';
import { ExternalUserDto, OauthDataDto, ProvisioningService, ProvisioningSystemDto } from '@modules/provisioning';
import { School } from '@modules/school';
import { schoolFactory } from '@modules/school/testing';
import { System } from '@modules/system';
import { systemFactory } from '@modules/system/testing';
import { ConfigService } from '@nestjs/config';
import { Test, TestingModule } from '@nestjs/testing';
import { UserDO } from '@shared/domain/domainobject';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { Logger } from '@src/core/logger';
import { Account } from '@src/modules/account';
import { ExternalUserDto, OauthDataDto, ProvisioningService, ProvisioningSystemDto } from '@src/modules/provisioning';
import { School } from '@src/modules/school';
import { schoolFactory } from '@src/modules/school/testing';
import { System } from '@src/modules/system';
import { systemFactory } from '@src/modules/system/testing';
import { SyncStrategyTarget } from '../sync-strategy.types';
import { SyncStrategyTarget } from '../../sync-strategy.types';
import { TspFetchService } from './tsp-fetch.service';
import { TspLegacyMigrationService } from './tsp-legacy-migration.service';
import { TspOauthDataMapper } from './tsp-oauth-data.mapper';
import { TspSyncMigrationService } from './tsp-sync-migration.service';
import { TspSyncConfig } from './tsp-sync.config';
import { TspSyncService } from './tsp-sync.service';
import { TspSyncStrategy } from './tsp-sync.strategy';
import { TspSyncMigrationService } from './tsp-sync-migration.service';

describe(TspSyncStrategy.name, () => {
let module: TestingModule;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { Logger } from '@src/core/logger';
import { ProvisioningService } from '@src/modules/provisioning';
import { System } from '@src/modules/system';
import pLimit from 'p-limit';
import { SyncStrategy } from '../strategy/sync-strategy';
import { SyncStrategyTarget } from '../sync-strategy.types';
import { SyncStrategy } from '../sync-strategy';
import { SyncStrategyTarget } from '../../sync-strategy.types';
import { TspDataFetchedLoggable } from './loggable/tsp-data-fetched.loggable';
import { TspSchoolsFetchedLoggable } from './loggable/tsp-schools-fetched.loggable';
import { TspSchoolsSyncedLoggable } from './loggable/tsp-schools-synced.loggable';
Expand Down
18 changes: 9 additions & 9 deletions apps/server/src/infra/sync/sync.module.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
import { Configuration } from '@hpi-schul-cloud/commons/lib';
import { ConsoleWriterModule } from '@infra/console';
import { EncryptionModule } from '@infra/encryption';
import { RabbitMQWrapperModule } from '@infra/rabbitmq';
import { TspClientModule } from '@infra/tsp-client/tsp-client.module';
import { EncryptionModule } from '@infra/encryption';
import { VidisClientModule } from '@infra/vidis-client';
import { AccountModule } from '@modules/account';
import { LegacySchoolModule } from '@modules/legacy-school';
import { MediaSourceModule } from '@modules/media-source/media-source.module';
import { ProvisioningModule } from '@modules/provisioning';
import { SchoolModule } from '@modules/school';
import { SchoolLicenseModule } from '@modules/school-license/school-license.module';
import { SystemModule } from '@modules/system';
import { UserModule } from '@modules/user';
import { Module } from '@nestjs/common';
import { LoggerModule } from '@src/core/logger';
import { ProvisioningModule } from '@src/modules/provisioning';
import { SyncConsole } from './console/sync.console';
import { VidisFetchService, VidisSyncService, VidisSyncStrategy } from './media-licenses';
import { SyncService } from './service/sync.service';
import { TspLegacyMigrationService } from './tsp/tsp-legacy-migration.service';
import { TspOauthDataMapper } from './tsp/tsp-oauth-data.mapper';
import { TspSyncService } from './tsp/tsp-sync.service';
import { TspSyncStrategy } from './tsp/tsp-sync.strategy';
import { TspFetchService } from './strategy/tsp/tsp-fetch.service';
import { TspLegacyMigrationService } from './strategy/tsp/tsp-legacy-migration.service';
import { TspOauthDataMapper } from './strategy/tsp/tsp-oauth-data.mapper';
import { TspSyncMigrationService } from './strategy/tsp/tsp-sync-migration.service';
import { TspSyncService } from './strategy/tsp/tsp-sync.service';
import { TspSyncStrategy } from './strategy/tsp/tsp-sync.strategy';
import { SyncUc } from './uc/sync.uc';
import { TspFetchService } from './tsp/tsp-fetch.service';
import { TspSyncMigrationService } from './tsp/tsp-sync-migration.service';
import { VidisSyncService, VidisSyncStrategy, VidisFetchService } from './media-licenses';

@Module({
imports: [
Expand Down
24 changes: 19 additions & 5 deletions apps/server/src/infra/tsp-client/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
export * from './generated/api';
export * from './generated/models';
export * from './tsp-client-config';
export * from './tsp-client-factory';
export * from './tsp-client.module';
export {
ExportApi,
ExportApiAxiosParamCreator,
ExportApiFactory,
ExportApiFp,
ExportApiInterface,
} from './generated/api';
export {
RobjExportKlasse,
RobjExportLehrer,
RobjExportLehrerMigration,
RobjExportSchueler,
RobjExportSchuelerMigration,
RobjExportSchule,
VersionResponse,
} from './generated/models';
export { TspClientConfig } from './tsp-client-config';
export { TspClientFactory } from './tsp-client-factory';
export { TspClientModule } from './tsp-client.module';
6 changes: 3 additions & 3 deletions apps/server/src/infra/tsp-client/tsp-client-factory.spec.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { faker } from '@faker-js/faker';
import { DeepMocked, createMock } from '@golevelup/ts-jest';
import { OauthAdapterService } from '@modules/oauth';
import { ServerConfig } from '@modules/server';
import { ConfigService } from '@nestjs/config';
import { Test, TestingModule } from '@nestjs/testing';
import axios, { AxiosError } from 'axios';
import { ServerConfig } from '@modules/server';
import { OauthAdapterService } from '@modules/oauth';
import { AxiosErrorLoggable, ErrorLoggable } from '@src/core/error/loggable';
import { Logger } from '@src/core/logger';
import axios, { AxiosError } from 'axios';
import { DefaultEncryptionService, EncryptionService } from '../encryption';
import { TspClientFactory } from './tsp-client-factory';

Expand Down
26 changes: 22 additions & 4 deletions apps/server/src/modules/provisioning/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
export * from './provisioning.module';
export * from './dto';
export * from './service/provisioning.service';
export * from './strategy';
export { ProvisioningModule } from './provisioning.module';
export {
ExternalClassDto,
ExternalGroupDto,
ExternalGroupUserDto,
ExternalLicenseDto,
ExternalSchoolDto,
ExternalUserDto,
OauthDataDto,
OauthDataStrategyInputDto,
ProvisioningDto,
ProvisioningSystemDto,
} from './dto';
export { ProvisioningService } from './service/provisioning.service';
export {
IservProvisioningStrategy,
OidcMockProvisioningStrategy,
ProvisioningStrategy,
SanisProvisioningStrategy,
SchulconnexProvisioningStrategy,
SchulconnexResponseMapper,
} from './strategy';
export { ProvisioningConfig } from './provisioning.config';
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { systemFactory } from '@modules/system/testing';
import { InternalServerErrorException } from '@nestjs/common';
import { Test, TestingModule } from '@nestjs/testing';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { IservProvisioningStrategy, OidcMockProvisioningStrategy, SanisProvisioningStrategy } from '..';
import { OauthDataDto, OauthDataStrategyInputDto, ProvisioningDto, ProvisioningSystemDto } from '../dto';
import { IservProvisioningStrategy, OidcMockProvisioningStrategy, SanisProvisioningStrategy } from '../strategy';
import { TspProvisioningStrategy } from '../strategy/tsp/tsp.strategy';
import { externalUserDtoFactory } from '../testing';
import { ProvisioningService } from './provisioning.service';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { faker } from '@faker-js/faker';
import { createMock, DeepMocked } from '@golevelup/ts-jest';
import { IdTokenExtractionFailureLoggableException } from '@modules/oauth/loggable';
import { schoolFactory } from '@modules/school/testing';
import { Test, TestingModule } from '@nestjs/testing';
import { RoleName } from '@shared/domain/interface';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { IdTokenExtractionFailureLoggableException } from '@src/modules/oauth/loggable';
import { userDoFactory } from '@testing/factory/user.do.factory';
import jwt from 'jsonwebtoken';
import {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Injectable } from '@nestjs/common';
import { RoleName } from '@shared/domain/interface';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { IdTokenExtractionFailureLoggableException } from '@src/modules/oauth/loggable';
import { validate } from 'class-validator';
import jwt, { JwtPayload } from 'jsonwebtoken';
import { RoleName } from '@shared/domain/interface';
import { SystemProvisioningStrategy } from '@shared/domain/interface/system-provisioning.strategy';
import { IdTokenExtractionFailureLoggableException } from '@modules/oauth/loggable';
import {
ExternalClassDto,
ExternalSchoolDto,
Expand Down

0 comments on commit 6e6e1e5

Please sign in to comment.