@@ -1840,5 +1840,90 @@ public function testItemAddRemovePolicyuser()
1840
1840
$ this ->assertPolicyuserNonexistence (array (), array ($ adminItem ), $ targetUser );
1841
1841
}
1842
1842
1843
+ /** Test the item.list.permissions method */
1844
+ public function testItemListPermissions ()
1845
+ {
1846
+ $ userModel = MidasLoader::loadModel ('User ' );
1847
+ $ userDao = $ userModel ->load ('1 ' );
1848
+
1849
+ $ userDao = $ userModel ->load ('1 ' );
1850
+ $ itemModel = MidasLoader::loadModel ('Item ' );
1851
+ $ readItem = $ itemModel ->load ('1004 ' );
1852
+ $ writeItem = $ itemModel ->load ('1005 ' );
1853
+ $ adminItem = $ itemModel ->load ('1006 ' );
1854
+ $ nonAdmins = array ($ readItem , $ writeItem );
1855
+
1856
+ $ params = array ('method ' => 'midas.item.list.permissions ' ,
1857
+ 'token ' => $ this ->_loginAsUser ($ userDao ));
1843
1858
1859
+ // try to list permissions without admin, should fail
1860
+ foreach ($ nonAdmins as $ item )
1861
+ {
1862
+ $ this ->resetAll ();
1863
+ $ params ['item_id ' ] = $ item ->getItemId ();
1864
+ $ this ->params = $ params ;
1865
+ $ resp = $ this ->_callJsonApi ();
1866
+ $ this ->_assertStatusFail ($ resp , MIDAS_INVALID_POLICY );
1867
+ }
1868
+
1869
+ // now with admin perms
1870
+
1871
+ // first check both privacy statuses
1872
+ $ privacyCodes = array ("Public " => MIDAS_PRIVACY_PUBLIC , "Private " => MIDAS_PRIVACY_PRIVATE );
1873
+ $ privacyStatuses = array (MIDAS_PRIVACY_PUBLIC , MIDAS_PRIVACY_PRIVATE );
1874
+ $ privacyStrings = array (MIDAS_PRIVACY_PUBLIC => "Public " , MIDAS_PRIVACY_PRIVATE => "Private " );
1875
+
1876
+ foreach ($ privacyStatuses as $ privacyStatus )
1877
+ {
1878
+ $ this ->initializePrivacyStatus (array (), array ($ adminItem ), $ privacyStatus );
1879
+
1880
+ $ this ->resetAll ();
1881
+ $ params ['item_id ' ] = $ adminItem ->getItemId ();
1882
+ $ this ->params = $ params ;
1883
+ $ resp = $ this ->_callJsonApi ();
1884
+ $ this ->_assertStatusOk ($ resp );
1885
+
1886
+ $ this ->assertPrivacyStatus (array (), array ($ adminItem ), $ privacyStatus );
1887
+ }
1888
+
1889
+ // ensure user perms are correct from the most recent call
1890
+ $ privilegeCodes = array ("Admin " => MIDAS_POLICY_ADMIN , "Write " => MIDAS_POLICY_WRITE , "Read " => MIDAS_POLICY_READ );
1891
+ $ userPolicies = $ adminItem ->getItempolicyuser ();
1892
+ $ apiUserPolicies = $ resp ->data ->user ;
1893
+ foreach ($ userPolicies as $ userPolicy )
1894
+ {
1895
+ $ user = $ userPolicy ->getUser ();
1896
+ $ userId = (string )$ user ->getUserId ();
1897
+ $ userFound = false ;
1898
+ foreach ($ apiUserPolicies as $ apiUserPolicy )
1899
+ {
1900
+ if ($ apiUserPolicy ->user_id == $ userId )
1901
+ {
1902
+ $ userFound = true ;
1903
+ $ apiPolicyCode = $ privilegeCodes [$ apiUserPolicy ->policy ];
1904
+ $ this ->assertEquals ($ apiPolicyCode , $ userPolicy ->getPolicy ());
1905
+ }
1906
+ }
1907
+ $ this ->assertTrue ($ userFound , 'API call missing user ' . $ userId );
1908
+ }
1909
+ // ensure group perms are correct
1910
+ $ groupPolicies = $ adminItem ->getItempolicygroup ();
1911
+ $ apiGroupPolicies = $ resp ->data ->group ;
1912
+ foreach ($ groupPolicies as $ groupPolicy )
1913
+ {
1914
+ $ group = $ groupPolicy ->getGroup ();
1915
+ $ groupId = (string )$ group ->getGroupId ();
1916
+ $ groupFound = false ;
1917
+ foreach ($ apiGroupPolicies as $ apiGroupPolicy )
1918
+ {
1919
+ if ($ apiGroupPolicy ->group_id == $ groupId )
1920
+ {
1921
+ $ groupFound = true ;
1922
+ $ apiPolicyCode = $ privilegeCodes [$ apiGroupPolicy ->policy ];
1923
+ $ this ->assertEquals ($ apiPolicyCode , $ groupPolicy ->getPolicy ());
1924
+ }
1925
+ }
1926
+ $ this ->assertTrue ($ groupFound , 'API call missing group ' . $ groupId );
1927
+ }
1928
+ }
1844
1929
}
0 commit comments