@@ -240,3 +240,110 @@ func TestPermissionsList_Diff_LocalRemoteDiff(t *testing.T) {
240240 assert .Equal (t , "a" , diff .Changes [0 ].Add [0 ])
241241 assert .Equal (t , "c" , diff .Changes [0 ].Remove [0 ])
242242}
243+
244+ func TestShareGrantCreate (t * testing.T ) {
245+ qa.ResourceFixture {
246+ Fixtures : []qa.HTTPFixture {
247+ {
248+ Method : "GET" ,
249+ Resource : "/api/2.1/unity-catalog/shares/myshare/permissions" ,
250+ Response : PermissionsList {
251+ Assignments : []PrivilegeAssignment {},
252+ },
253+ },
254+ {
255+ Method : "PATCH" ,
256+ Resource : "/api/2.1/unity-catalog/shares/myshare/permissions" ,
257+ ExpectedRequest : permissionsDiff {
258+ Changes : []permissionsChange {
259+ {
260+ Principal : "me" ,
261+ Add : []string {"SELECT" },
262+ },
263+ },
264+ },
265+ },
266+ {
267+ Method : "GET" ,
268+ Resource : "/api/2.1/unity-catalog/shares/myshare/permissions" ,
269+ Response : PermissionsList {
270+ Assignments : []PrivilegeAssignment {
271+ {
272+ Principal : "me" ,
273+ Privileges : []string {"SELECT" },
274+ },
275+ },
276+ },
277+ },
278+ },
279+ Resource : ResourceGrants (),
280+ Create : true ,
281+ HCL : `
282+ share = "myshare"
283+
284+ grant {
285+ principal = "me"
286+ privileges = ["SELECT"]
287+ }` ,
288+ }.ApplyNoError (t )
289+ }
290+
291+ func TestShareGrantUpdate (t * testing.T ) {
292+ qa.ResourceFixture {
293+ Fixtures : []qa.HTTPFixture {
294+ {
295+ Method : "GET" ,
296+ Resource : "/api/2.1/unity-catalog/shares/myshare/permissions" ,
297+ Response : PermissionsList {
298+ Assignments : []PrivilegeAssignment {
299+ {
300+ Principal : "me" ,
301+ Privileges : []string {"SELECT" },
302+ },
303+ },
304+ },
305+ },
306+ {
307+ Method : "PATCH" ,
308+ Resource : "/api/2.1/unity-catalog/shares/myshare/permissions" ,
309+ ExpectedRequest : permissionsDiff {
310+ Changes : []permissionsChange {
311+ {
312+ Principal : "me" ,
313+ Remove : []string {"SELECT" },
314+ },
315+ {
316+ Principal : "you" ,
317+ Add : []string {"SELECT" },
318+ },
319+ },
320+ },
321+ },
322+ {
323+ Method : "GET" ,
324+ Resource : "/api/2.1/unity-catalog/shares/myshare/permissions" ,
325+ Response : PermissionsList {
326+ Assignments : []PrivilegeAssignment {
327+ {
328+ Principal : "you" ,
329+ Privileges : []string {"SELECT" },
330+ },
331+ },
332+ },
333+ },
334+ },
335+ Resource : ResourceGrants (),
336+ Update : true ,
337+ ID : "share/myshare" ,
338+ InstanceState : map [string ]string {
339+ "share" : "myshare" ,
340+ },
341+ HCL : `
342+ share = "myshare"
343+
344+ grant {
345+ principal = "you"
346+ privileges = ["SELECT"]
347+ }` ,
348+ }.ApplyNoError (t )
349+ }
0 commit comments