diff --git a/packages/at_commons/CHANGELOG.md b/packages/at_commons/CHANGELOG.md index 16f8b636..16629dd1 100644 --- a/packages/at_commons/CHANGELOG.md +++ b/packages/at_commons/CHANGELOG.md @@ -1,3 +1,5 @@ +## 4.1.1 +- feat: Add "delete" operation to the enroll verb to allow deletion of denied enrollments ## 4.1.0 - feat: Add "unrevoke" operation to the enroll verb to restore revoked APKAM keys - fix: Add isEncrypted flag to notify command for both true and false diff --git a/packages/at_commons/lib/src/verb/operation_enum.dart b/packages/at_commons/lib/src/verb/operation_enum.dart index 67398d58..2e263e8b 100644 --- a/packages/at_commons/lib/src/verb/operation_enum.dart +++ b/packages/at_commons/lib/src/verb/operation_enum.dart @@ -27,9 +27,9 @@ enum EnrollOperationEnum { deny, revoke, list, - update, fetch, - unrevoke + unrevoke, + delete } String getEnrollOperation(EnrollOperationEnum? enrollOperationEnum) => diff --git a/packages/at_commons/lib/src/verb/syntax.dart b/packages/at_commons/lib/src/verb/syntax.dart index e71433ea..89fdae55 100644 --- a/packages/at_commons/lib/src/verb/syntax.dart +++ b/packages/at_commons/lib/src/verb/syntax.dart @@ -128,7 +128,7 @@ class VerbSyntax { static const notifyRemove = r'notify:remove:(?[\w\d\-\_]+)'; static const enroll = // The non-capturing group (?::)? matches ":" if the operation is request|approve|deny|revoke - r'^enroll:(?(?:(request|approve|deny|revoke|update|list|fetch|unrevoke)))(:(?force))?(?::)?((?.+)|(<=list:).?)?$'; + r'^enroll:(?(?:(request|approve|deny|revoke|list|fetch|unrevoke|delete)))(:(?force))?(?::)?((?.+)|(<=list:).?)?$'; static const otp = r'^otp:(?get|put)(:(?(?<=put:)\w{6,}))?(:(?:ttl:(?\d+)))?$'; static const keys = r'^keys:((?put|get|delete):?)' diff --git a/packages/at_commons/pubspec.yaml b/packages/at_commons/pubspec.yaml index f6b998e7..e84b265b 100644 --- a/packages/at_commons/pubspec.yaml +++ b/packages/at_commons/pubspec.yaml @@ -1,6 +1,6 @@ name: at_commons description: A library of Dart and Flutter utility classes that are used across other components of the atPlatform. -version: 4.1.0 +version: 4.1.1 repository: https://github.com/atsign-foundation/at_libraries homepage: https://atsign.dev diff --git a/packages/at_commons/test/enroll_verb_builder_test.dart b/packages/at_commons/test/enroll_verb_builder_test.dart index 2132b899..51a9a216 100644 --- a/packages/at_commons/test/enroll_verb_builder_test.dart +++ b/packages/at_commons/test/enroll_verb_builder_test.dart @@ -98,5 +98,13 @@ void main() { expect(enrollVerbBuilder.buildCommand(), 'enroll:unrevoke:{"enrollmentId":"123"}\n'); }); + + test('A test to validate enroll delete command', () { + EnrollVerbBuilder enrollVerbBuilder = EnrollVerbBuilder() + ..operation = EnrollOperationEnum.delete + ..enrollmentId = '4785'; + expect(enrollVerbBuilder.buildCommand(), + 'enroll:delete:{"enrollmentId":"4785"}\n'); + }); }); } diff --git a/packages/at_commons/test/syntax_test.dart b/packages/at_commons/test/syntax_test.dart index 2bda5fa7..999c12e0 100644 --- a/packages/at_commons/test/syntax_test.dart +++ b/packages/at_commons/test/syntax_test.dart @@ -312,6 +312,15 @@ void main() { e is InvalidSyntaxException && e.message == 'command does not match the regex'))); }); + + test('A test to validate enroll delete command', () { + String command = 'enroll:delete:{"enrollmentId":"4567"}\n'; + var enrollVerbParams = + VerbUtil.getVerbParam(VerbSyntax.enroll, command.trim()); + expect(enrollVerbParams!['operation'], 'delete'); + var enrollmentInfo = jsonDecode(enrollVerbParams['enrollParams']!); + expect(enrollmentInfo['enrollmentId'], '4567'); + }); }); group('A group of tests related to otp verb', () {