Browse Source

check it when authority is string and currentAuthority is array. And update CheckPermissions test

ubbcou 7 years ago
parent
commit
f347ead84d

+ 8 - 0
src/components/Authorized/CheckPermissions.js

@@ -45,6 +45,14 @@ const checkPermissions = (authority, currentAuthority, target, Exception) => {
     if (authority === currentAuthority) {
       return target;
     }
+    if (Array.isArray(currentAuthority)) {
+      for (let i = 0; i < currentAuthority.length; i += 1) {
+        const element = currentAuthority[i];
+        if (authority.indexOf(element) >= 0) {
+          return target;
+        }
+      }
+    }
     return Exception;
   }
 

+ 18 - 0
src/components/Authorized/CheckPermissions.test.js

@@ -34,4 +34,22 @@ describe('test CheckPermissions', () => {
   it('Correct Function permission authentication', () => {
     expect(checkPermissions(() => true, 'guest', target, error)).toEqual('ok');
   });
+  it('authority is string, currentAuthority is array, return ok', () => {
+    expect(checkPermissions('user', ['user'], target, error)).toEqual('ok');
+  });
+  it('authority is string, currentAuthority is array, return ok', () => {
+    expect(checkPermissions('user', ['user', 'admin'], target, error)).toEqual('ok');
+  });
+  it('authority is array, currentAuthority is array, return ok', () => {
+    expect(checkPermissions(['user', 'admin'], ['user', 'admin'], target, error)).toEqual('ok');
+  });
+  it('Wrong Function permission authentication', () => {
+    expect(checkPermissions(() => false, ['user'], target, error)).toEqual('error');
+  });
+  it('Correct Function permission authentication', () => {
+    expect(checkPermissions(() => true, ['user'], target, error)).toEqual('ok');
+  });
+  it('authority is undefined , return ok', () => {
+    expect(checkPermissions(null, ['user'], target, error)).toEqual('ok');
+  });
 });