Browse Source

membership: tests role registration

Mokhtar Naamani 5 years ago
parent
commit
e3cfaa5abd
2 changed files with 64 additions and 8 deletions
  1. 2 8
      src/membership/members.rs
  2. 62 0
      src/membership/tests.rs

+ 2 - 8
src/membership/members.rs

@@ -616,10 +616,7 @@ impl<T: Trait> Module<T> {
         let member_id = Self::ensure_is_member_controller_account(controller_account)?;
 
         // policy check
-        ensure!(
-            Self::can_register_role_on_member(controller_account, role_id).is_ok(),
-            "registering role not allowed"
-        );
+        Self::can_register_role_on_member(controller_account, role_id)?;
 
         // guard against duplicate ActorInRole
         let actor_in_role = ActorInRole { role_id, actor_id };
@@ -666,10 +663,7 @@ impl<T: Trait> Module<T> {
         role_id: T::RoleId,
         actor_id: T::ActorId,
     ) -> Result<(), &'static str> {
-        ensure!(
-            Self::can_unregister_role_on_member(controller_account, role_id, actor_id).is_ok(),
-            "unregistering role not allowed"
-        );
+        Self::can_unregister_role_on_member(controller_account, role_id, actor_id)?;
 
         let member_id = Self::ensure_is_member_controller_account(controller_account)?;
         let mut profile = Self::ensure_profile(member_id)?;

+ 62 - 0
src/membership/tests.rs

@@ -369,3 +369,65 @@ fn set_primary_key() {
         },
     );
 }
+
+#[test]
+fn registering_and_unregistering_roles_on_member() {
+    let initial_members = [1, 2];
+
+    with_externalities(
+        &mut ExtBuilder::default()
+            .members(initial_members.to_vec())
+            .build(),
+        || {
+            const DUMMY_ROLE: u32 = 50;
+            const DUMMY_ACTOR_ID: u32 = 100;
+
+            // no initial roles for member
+            assert!(!Members::member_is_in_role(&1, DUMMY_ROLE));
+
+            // REGISTERING
+
+            // successful registration
+            assert_ok!(Members::register_role_on_member(
+                &1,
+                DUMMY_ROLE,
+                DUMMY_ACTOR_ID
+            ));
+            assert!(Members::member_is_in_role(&1, DUMMY_ROLE));
+
+            // enter role a second time should fail
+            assert_dispatch_error_message(
+                Members::register_role_on_member(&1, DUMMY_ROLE, DUMMY_ACTOR_ID),
+                "member already in role",
+            );
+
+            // registering another member in same role and actorid combination should fail
+            assert_dispatch_error_message(
+                Members::register_role_on_member(&2, DUMMY_ROLE, DUMMY_ACTOR_ID),
+                "role actor already exists",
+            );
+
+            // UNREGISTERING
+
+            // trying to unregister non existant actor role should fail
+            assert_dispatch_error_message(
+                Members::unregister_role_on_member(&1, 111, 222),
+                "role actor not found",
+            );
+
+            // trying to unregister actor role on wrong member should fail
+            assert_dispatch_error_message(
+                Members::unregister_role_on_member(&2, DUMMY_ROLE, DUMMY_ACTOR_ID),
+                "role actor not for member",
+            );
+
+            // successfully unregister role
+            assert_ok!(Members::unregister_role_on_member(
+                &1,
+                DUMMY_ROLE,
+                DUMMY_ACTOR_ID
+            ));
+            assert!(!Members::member_is_in_role(&1, DUMMY_ROLE));
+        },
+    );
+}