feat: Lizenzkontingente im Manager durchsetzen
This commit is contained in:
@@ -104,6 +104,75 @@ final class LizenzpruefungTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testZweiLizenzierteBoilerWerdenFreigegeben(): void
|
||||
{
|
||||
$lease = $this->lease('manager_standard');
|
||||
$lease['entitlements'][] = [
|
||||
'sku' => 'ENX-BOILER-MULTI',
|
||||
'catalog_key' => 'boiler_multi',
|
||||
'quantity' => 2,
|
||||
'status' => 'active',
|
||||
];
|
||||
|
||||
self::assertSame(2, Lizenzpruefung::berechtigungsMenge($lease, 'boiler_multi'));
|
||||
Lizenzpruefung::pruefeVerbrauchermengen($lease, ['boiler_multi' => 2]);
|
||||
|
||||
self::assertTrue(true);
|
||||
}
|
||||
|
||||
public function testDritterBoilerBeiZweiLizenzenWirdAbgelehnt(): void
|
||||
{
|
||||
$lease = $this->lease('manager_standard');
|
||||
$lease['entitlements'][] = [
|
||||
'sku' => 'ENX-BOILER-MULTI',
|
||||
'catalog_key' => 'boiler_multi',
|
||||
'quantity' => 2,
|
||||
'status' => 'active',
|
||||
];
|
||||
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage(
|
||||
'Lizenzkontingent fuer boiler_multi ueberschritten: 3 verwendet, 2 lizenziert.'
|
||||
);
|
||||
Lizenzpruefung::pruefeVerbrauchermengen($lease, ['boiler_multi' => 3]);
|
||||
}
|
||||
|
||||
public function testVerbraucherkontingenteWerdenJeTypSummiertUndGetrenntGeprueft(): void
|
||||
{
|
||||
$lease = $this->lease('manager_standard');
|
||||
$lease['entitlements'] = array_merge($lease['entitlements'], [
|
||||
[
|
||||
'catalog_key' => 'boiler_multi',
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
],
|
||||
[
|
||||
'catalog_key' => 'boiler_multi',
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
],
|
||||
[
|
||||
'catalog_key' => 'battery',
|
||||
'quantity' => 1,
|
||||
'status' => 'active',
|
||||
],
|
||||
[
|
||||
'catalog_key' => 'battery',
|
||||
'quantity' => 10,
|
||||
'status' => 'revoked',
|
||||
],
|
||||
]);
|
||||
|
||||
self::assertSame(2, Lizenzpruefung::berechtigungsMenge($lease, 'boiler_multi'));
|
||||
self::assertSame(1, Lizenzpruefung::berechtigungsMenge($lease, 'battery'));
|
||||
Lizenzpruefung::pruefeVerbrauchermengen($lease, [
|
||||
'boiler_multi' => 2,
|
||||
'battery' => 1,
|
||||
]);
|
||||
|
||||
self::assertTrue(true);
|
||||
}
|
||||
|
||||
public function testLizenzcodeWirdWieAufDemServerNormalisiert(): void
|
||||
{
|
||||
self::assertSame(
|
||||
|
||||
@@ -52,6 +52,7 @@ final class ManagerModulstrukturTest extends TestCase
|
||||
'LoggingEin',
|
||||
'Lizenzcode',
|
||||
'LizenzPruefen',
|
||||
'LizenzVerwalten',
|
||||
'LizenzInstallationID',
|
||||
'LizenzInformation',
|
||||
'VerbraucherAktualisieren',
|
||||
@@ -69,6 +70,8 @@ final class ManagerModulstrukturTest extends TestCase
|
||||
self::assertStringContainsString($bereich, $json);
|
||||
}
|
||||
self::assertSame('Lizenzierung', $formular['elements'][0]['caption']);
|
||||
self::assertStringContainsString('https://license.enelix.ch', $json);
|
||||
self::assertStringContainsString('"link":true', $json);
|
||||
self::assertStringContainsString(
|
||||
"'SuchbereichID' => \$SuchbereichID",
|
||||
$json
|
||||
@@ -111,6 +114,44 @@ final class ManagerModulstrukturTest extends TestCase
|
||||
self::assertStringContainsString("RegisterAttributeString('LizenzcodeHash'", $inhalt);
|
||||
self::assertStringContainsString('STATUS_LIZENZ_UNGUELTIG', $inhalt);
|
||||
self::assertStringContainsString('aktualisiereLizenzfreigabe(', $inhalt);
|
||||
self::assertStringContainsString('pruefeVerbraucherlizenzen(', $inhalt);
|
||||
self::assertStringContainsString('lizenzBerechtigungenPassen(', $inhalt);
|
||||
self::assertStringContainsString('peakShavingLizenziert(', $inhalt);
|
||||
self::assertStringContainsString('Aus (Peak-Shaving-Lizenz fehlt)', $inhalt);
|
||||
self::assertStringContainsString('Aus (Peak-Shaving-Lizenz verfuegbar)', $inhalt);
|
||||
self::assertStringContainsString(
|
||||
'Konstant und Monatlich benoetigen eine Peak-Shaving-Lizenz.',
|
||||
$inhalt
|
||||
);
|
||||
foreach (['battery', 'buffer_storage', 'ev_charger', 'consumer_single', 'boiler_multi'] as $katalog) {
|
||||
self::assertStringContainsString("'Katalog' => '" . $katalog . "'", $inhalt);
|
||||
}
|
||||
foreach ([
|
||||
'{B7C54AF4-AD7D-4FE4-B75D-203693906251}',
|
||||
'{15879A4E-D0C2-4495-83DE-46E1E462591E}',
|
||||
'{0D94913C-0F31-4C29-A685-6EB4AE58E55D}',
|
||||
'{32F65988-BE55-4FD6-9FFF-CF1C4C8628F8}',
|
||||
'{C92D5EEF-9632-47A5-9659-4B02BF40FBE9}',
|
||||
'{437FB683-517F-4FEC-8CCB-FE6B0A62B69E}',
|
||||
] as $modulID) {
|
||||
self::assertStringContainsString("'" . $modulID . "' =>", $inhalt);
|
||||
}
|
||||
self::assertStringContainsString("'Name' => 'Pufferspeicher'", $inhalt);
|
||||
self::assertStringContainsString("'Name' => 'Batteriespeicher'", $inhalt);
|
||||
self::assertStringContainsString(
|
||||
'Bitte Auswahl reduzieren oder Lizenz erweitern.',
|
||||
$inhalt
|
||||
);
|
||||
foreach ([
|
||||
"'NichtGeregelt'",
|
||||
"'NichtGeregelteGeraete'",
|
||||
"'InstanzStatus'",
|
||||
"'LetzteMeldung'",
|
||||
"'GemeldeteBetriebsart'",
|
||||
"'Verfuegbar'",
|
||||
] as $detailfeld) {
|
||||
self::assertStringContainsString($detailfeld, $inhalt);
|
||||
}
|
||||
self::assertStringNotContainsString("'publicKey' =>", $inhalt);
|
||||
}
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ return static function (TestContext $test): void {
|
||||
if ($lizenzcode === '') {
|
||||
$test->runCase('Manager bleibt ohne Lizenz sicher gesperrt', static function (
|
||||
TestContext $test
|
||||
) use ($managerId): void {
|
||||
) use ($managerId, $verbraucherstatus): void {
|
||||
IPS_RequestAction($managerId, 'Aktiv', true);
|
||||
IPS_RequestAction($managerId, 'Regeln', true);
|
||||
$test->assertInstanceStatus($managerId, 203);
|
||||
@@ -171,6 +171,21 @@ return static function (TestContext $test): void {
|
||||
'Inaktiv',
|
||||
GetValue($test->objectByIdent('Betriebsart', $managerId))
|
||||
);
|
||||
|
||||
$daten = $verbraucherstatus();
|
||||
$test->assertSame(false, $daten['Synchronisiert'] ?? null);
|
||||
$test->assertSame(3, count($daten['NichtGeregelt'] ?? []));
|
||||
foreach ($daten['NichtGeregelt'] as $detail) {
|
||||
$test->assertTrue(is_int($detail['InstanzID'] ?? null));
|
||||
$test->assertTrue(is_string($detail['Name'] ?? null));
|
||||
$test->assertTrue(is_string($detail['Typ'] ?? null));
|
||||
$test->assertSame('Lizenz nicht freigegeben', $detail['Grund'] ?? null);
|
||||
}
|
||||
$detailtext = (string) GetValue(
|
||||
$test->objectByIdent('NichtGeregelteGeraete', $managerId)
|
||||
);
|
||||
$test->assertTrue(str_contains($detailtext, 'Boiler'));
|
||||
$test->assertTrue(str_contains($detailtext, 'Lizenz nicht freigegeben'));
|
||||
});
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user