/vmdir/testing/integration_tests/acls/domainclientsrights.c

https://github.com/vmware/lightwave · C · 304 lines · 237 code · 52 blank · 15 comment · 0 complexity · 3513d38c87f3d4d560de9d21a3201bf0 MD5 · raw file

  1. /*
  2. * Copyright © 2012-2016 VMware, Inc. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the “License”); you may not
  5. * use this file except in compliance with the License. You may obtain a copy
  6. * of the License at http://www.apache.org/licenses/LICENSE-2.0
  7. *
  8. * Unless required by applicable law or agreed to in writing, software
  9. * distributed under the License is distributed on an “AS IS” BASIS, without
  10. * warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
  11. * License for the specific language governing permissions and limitations
  12. * under the License.
  13. */
  14. #include "includes.h"
  15. DWORD
  16. DomainClientsShouldBeAbleToDeleteObject(
  17. PVMDIR_TEST_STATE pState,
  18. PCSTR pszContainer // TODO
  19. )
  20. {
  21. DWORD dwError = 0;
  22. PSTR pszUserName = NULL;
  23. dwError = VmDirTestGetGuid(&pszUserName);
  24. TestAssertEquals(dwError, 0); // TODO
  25. dwError = VmDirTestCreateUser(pState, pszContainer, pszUserName, NULL);
  26. TestAssertEquals(dwError, 0);
  27. dwError = VmDirTestDeleteUser(pState, pszContainer, pszUserName);
  28. TestAssertEquals(dwError, 0);
  29. VMDIR_SAFE_FREE_STRINGA(pszUserName);
  30. return dwError;
  31. }
  32. DWORD
  33. DomainClientsShouldBeAbleToReadProperties(
  34. PVMDIR_TEST_STATE pState,
  35. PCSTR pszContainer
  36. )
  37. {
  38. DWORD dwError = 0;
  39. PSTR pszAttribute = NULL;
  40. PSTR pszUserName = NULL;
  41. PSTR pszUserDn = NULL;
  42. dwError = VmDirTestGetGuid(&pszUserName);
  43. TestAssertEquals(dwError, 0); // TODO
  44. dwError = VmDirTestCreateUser(pState, pszContainer, pszUserName, NULL);
  45. TestAssertEquals(dwError, 0);
  46. dwError = VmDirAllocateStringPrintf(
  47. &pszUserDn,
  48. "cn=%s,cn=%s,%s",
  49. pszUserName,
  50. pszContainer,
  51. pState->pszBaseDN);
  52. TestAssertEquals(dwError, 0);
  53. dwError = _VdcSearchForEntryAndAttribute(
  54. pState->pLd,
  55. pszUserDn,
  56. ATTR_SAM_ACCOUNT_NAME,
  57. &pszAttribute);
  58. TestAssertEquals(dwError, 0);
  59. TestAssertStrEquals(pszAttribute, pszUserName);
  60. VMDIR_SAFE_FREE_STRINGA(pszAttribute);
  61. return dwError;
  62. }
  63. DWORD
  64. DomainClientsShouldBeAbleToReadSD(
  65. PVMDIR_TEST_STATE pState,
  66. PCSTR pszContainer
  67. )
  68. {
  69. DWORD dwError = 0;
  70. PSTR pszAttribute = NULL;
  71. PSTR pszUserName = NULL;
  72. PSTR pszUserDn = NULL;
  73. dwError = VmDirTestGetGuid(&pszUserName);
  74. TestAssertEquals(dwError, 0); // TODO
  75. dwError = VmDirTestCreateUser(pState, pszContainer, pszUserName, NULL);
  76. TestAssertEquals(dwError, 0);
  77. dwError = VmDirAllocateStringPrintf(
  78. &pszUserDn,
  79. "cn=%s,cn=%s,%s",
  80. pszUserName,
  81. pszContainer,
  82. pState->pszBaseDN);
  83. TestAssertEquals(dwError, 0);
  84. dwError = _VdcSearchForEntryAndAttribute(
  85. pState->pLd,
  86. pszUserDn,
  87. ATTR_ACL_STRING,
  88. &pszAttribute);
  89. TestAssertEquals(dwError, 0);
  90. TestAssert(strlen(pszAttribute) > 0);
  91. VMDIR_SAFE_FREE_STRINGA(pszAttribute);
  92. return dwError;
  93. }
  94. DWORD
  95. DomainClientsShouldBeAbleToWriteProperties(
  96. PVMDIR_TEST_STATE pState,
  97. PCSTR pszContainer
  98. )
  99. {
  100. DWORD dwError = 0;
  101. PSTR ppszAttributeValues[] = { NULL, NULL };
  102. PSTR pszUserName = NULL;
  103. PSTR pszUserDn = NULL;
  104. dwError = VmDirTestGetGuid(&pszUserName);
  105. TestAssertEquals(dwError, 0); // TODO
  106. dwError = VmDirTestCreateUser(pState, pszContainer, pszUserName, NULL);
  107. TestAssertEquals(dwError, 0);
  108. dwError = VmDirAllocateStringPrintf(
  109. &pszUserDn,
  110. "cn=%s,cn=%s,%s",
  111. pszUserName,
  112. pszContainer,
  113. pState->pszBaseDN);
  114. TestAssertEquals(dwError, 0);
  115. ppszAttributeValues[0] = "206-555-1212";
  116. dwError = VmDirTestAddAttributeValues(
  117. pState->pLd,
  118. pszUserDn,
  119. "telephoneNumber",
  120. (PCSTR*)ppszAttributeValues);
  121. TestAssertEquals(dwError, 0);
  122. return dwError;
  123. }
  124. DWORD
  125. DomainClientsShouldBeAbleToWriteSD(
  126. PVMDIR_TEST_STATE pState,
  127. PCSTR pszContainer
  128. )
  129. {
  130. DWORD dwError = 0;
  131. PSTR ppszAttributeValues[] = { NULL, NULL };
  132. PSTR pszUserName = NULL;
  133. PSTR pszUserDn = NULL;
  134. PSTR pszDomainSid = NULL;
  135. dwError = VmDirTestGetGuid(&pszUserName);
  136. TestAssertEquals(dwError, 0); // TODO
  137. dwError = VmDirTestCreateUser(pState, pszContainer, pszUserName, NULL);
  138. TestAssertEquals(dwError, 0);
  139. dwError = VmDirAllocateStringPrintf(
  140. &pszUserDn,
  141. "cn=%s,cn=%s,%s",
  142. pszUserName,
  143. pszContainer,
  144. pState->pszBaseDN);
  145. TestAssertEquals(dwError, 0);
  146. dwError = VmDirTestGetDomainSid(pState, pState->pszBaseDN, &pszDomainSid);
  147. BAIL_ON_VMDIR_ERROR(dwError);
  148. // Random SD. Actual values don't (entirely) matter.
  149. dwError = VmDirAllocateStringPrintf(
  150. &ppszAttributeValues[0],
  151. "O:BAG:BAD:(A;;RCRPWPWDSD;;;%s-500)",
  152. pszDomainSid);
  153. BAIL_ON_VMDIR_ERROR(dwError);
  154. dwError = VmDirTestReplaceAttributeValues(
  155. pState->pLd,
  156. pszUserDn,
  157. ATTR_ACL_STRING,
  158. (PCSTR*)ppszAttributeValues);
  159. TestAssertEquals(dwError, 0);
  160. cleanup:
  161. VMDIR_SAFE_FREE_STRINGA(ppszAttributeValues[0]);
  162. VMDIR_SAFE_FREE_STRINGA(pszDomainSid);
  163. VMDIR_SAFE_FREE_STRINGA(pszUserName);
  164. VMDIR_SAFE_FREE_STRINGA(pszUserDn);
  165. return dwError;
  166. error:
  167. goto cleanup;
  168. }
  169. DWORD
  170. DomainClientsShouldBeAbleToListObject(
  171. PVMDIR_TEST_STATE pState,
  172. PCSTR pszContainer
  173. )
  174. {
  175. DWORD dwError = 0;
  176. PSTR pszDn = NULL;
  177. PSTR pszUserName = NULL;
  178. dwError = VmDirTestGetGuid(&pszUserName);
  179. TestAssertEquals(dwError, 0); // TODO
  180. dwError = VmDirTestCreateUser(pState, pszContainer, pszUserName, NULL);
  181. TestAssertEquals(dwError, 0);
  182. dwError = VmDirAllocateStringPrintf(
  183. &pszDn,
  184. "cn=%s,cn=%s,%s",
  185. pszUserName,
  186. pszContainer,
  187. pState->pszBaseDN);
  188. BAIL_ON_VMDIR_ERROR(dwError);
  189. dwError = _VdcSearchForEntryAndAttribute(
  190. pState->pLd,
  191. pszDn,
  192. NULL,
  193. NULL);
  194. TestAssertEquals(dwError, 0);
  195. cleanup:
  196. VMDIR_SAFE_FREE_STRINGA(pszUserName);
  197. VMDIR_SAFE_FREE_STRINGA(pszDn);
  198. return dwError;
  199. error:
  200. goto cleanup;
  201. }
  202. DWORD
  203. DomainClientsShouldBeAbleToListChildObjects(
  204. PVMDIR_TEST_STATE pState,
  205. PCSTR pszContainerName
  206. )
  207. {
  208. DWORD dwError = 0;
  209. PSTR pszUserName = NULL;
  210. PSTR pszContainerDn = NULL;
  211. dwError = VmDirTestGetGuid(&pszUserName);
  212. TestAssertEquals(dwError, 0); // TODO
  213. dwError = VmDirTestCreateUser(pState, pszContainerName, pszUserName, NULL);
  214. TestAssertEquals(dwError, 0);
  215. dwError = VmDirAllocateStringPrintf(
  216. &pszContainerDn,
  217. "cn=%s,%s",
  218. pszContainerName,
  219. pState->pszBaseDN);
  220. TestAssertEquals(dwError, 0);
  221. dwError = VmDirTestGetObjectList(pState->pLd, pszContainerDn, NULL, NULL, NULL);
  222. TestAssertEquals(dwError, 0);
  223. return dwError;
  224. }
  225. DWORD
  226. TestStandardRightsForDomainClients(
  227. PVMDIR_TEST_STATE pState
  228. )
  229. {
  230. DWORD dwError = 0;
  231. PCSTR pszContainerName = VmDirTestGetTestContainerCn(pState);
  232. // TODO -- Create user and add to DCClients group
  233. dwError = DomainClientsShouldBeAbleToListChildObjects(pState, pszContainerName);
  234. BAIL_ON_VMDIR_ERROR(dwError);
  235. dwError = DomainClientsShouldBeAbleToDeleteObject(pState, pszContainerName);
  236. BAIL_ON_VMDIR_ERROR(dwError);
  237. dwError = DomainClientsShouldBeAbleToReadProperties(pState, pszContainerName);
  238. BAIL_ON_VMDIR_ERROR(dwError);
  239. dwError = DomainClientsShouldBeAbleToReadSD(pState, pszContainerName);
  240. BAIL_ON_VMDIR_ERROR(dwError);
  241. dwError = DomainClientsShouldBeAbleToWriteProperties(pState, pszContainerName);
  242. BAIL_ON_VMDIR_ERROR(dwError);
  243. dwError = DomainClientsShouldBeAbleToWriteSD(pState, pszContainerName);
  244. BAIL_ON_VMDIR_ERROR(dwError);
  245. dwError = DomainClientsShouldBeAbleToListObject(pState, pszContainerName);
  246. BAIL_ON_VMDIR_ERROR(dwError);
  247. cleanup:
  248. return dwError;
  249. error:
  250. TestAssertEquals(dwError, 0);
  251. goto cleanup;
  252. }