Skip to content

Commit 713c494

Browse files
committed
New test test_create_metadata_admin_role() in create_tests.move
1 parent 395a68f commit 713c494

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

audit-trail-move/tests/create_tests.move

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,80 @@ fun test_create_multiple_trails() {
279279

280280
ts::end(scenario);
281281
}
282+
283+
/// Test creating a MetaDataAdmin role with metadata_admin_permissions.
284+
///
285+
/// This test verifies that:
286+
/// 1. A creator can create an AuditTrail and receive an admin capability
287+
/// 2. The admin capability can be transferred to another user
288+
/// 3. The user can use the capability to create a new MetaDataAdmin role
289+
/// 4. The new role has the correct permissions (meta_data_update and meta_data_delete)
290+
#[test]
291+
fun test_create_metadata_admin_role() {
292+
let creator = @0xA;
293+
let user = @0xB;
294+
let mut scenario = ts::begin(creator);
295+
296+
// Creator creates the audit trail
297+
{
298+
let mut clock = clock::create_for_testing(ts::ctx(&mut scenario));
299+
clock.set_for_testing(1000);
300+
301+
let locking_config = locking::new(std::option::none(), std::option::some(0));
302+
let trail_metadata = main::new_trail_metadata(
303+
std::option::some(string::utf8(b"Test Trail for MetaDataAdmin")),
304+
std::option::some(string::utf8(b"Testing metadata admin role creation")),
305+
);
306+
307+
let (admin_cap, trail_id) = main::create<TestData>(
308+
std::option::none(),
309+
std::option::none(),
310+
locking_config,
311+
trail_metadata,
312+
std::option::some(string::utf8(b"Initial metadata")),
313+
&clock,
314+
ts::ctx(&mut scenario),
315+
);
316+
317+
// Verify admin capability was created
318+
assert!(admin_cap.role() == initial_admin_role_name(), 0);
319+
assert!(admin_cap.trail_id() == trail_id, 1);
320+
321+
// Transfer the admin capability to the user
322+
transfer::public_transfer(admin_cap, user);
323+
324+
clock::destroy_for_testing(clock);
325+
};
326+
327+
// User receives the capability and creates the MetaDataAdmin role
328+
ts::next_tx(&mut scenario, user);
329+
{
330+
let admin_cap = ts::take_from_sender<Capability>(&scenario);
331+
let mut trail = ts::take_shared<AuditTrail<TestData>>(&scenario);
332+
333+
// Create the MetaDataAdmin role using the admin capability
334+
let metadata_admin_role_name = string::utf8(b"MetaDataAdmin");
335+
let metadata_admin_perms = audit_trail::permission::metadata_admin_permissions();
336+
337+
trail.create_role(
338+
&admin_cap,
339+
metadata_admin_role_name,
340+
metadata_admin_perms,
341+
ts::ctx(&mut scenario),
342+
);
343+
344+
// Verify the role was created by fetching its permissions
345+
let role_perms = trail.get_role_permissions(&string::utf8(b"MetaDataAdmin"));
346+
347+
// Verify the role has the correct permissions
348+
assert!(audit_trail::permission::has_permission(role_perms, &audit_trail::permission::meta_data_update()), 2);
349+
assert!(audit_trail::permission::has_permission(role_perms, &audit_trail::permission::meta_data_delete()), 3);
350+
assert!(iota::vec_set::size(role_perms) == 2, 4);
351+
352+
// Clean up
353+
ts::return_to_sender(&scenario, admin_cap);
354+
ts::return_shared(trail);
355+
};
356+
357+
ts::end(scenario);
358+
}

audit-trail-move/tests/permission_tests.move

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ fun test_from_vec_multiple_permission() {
8989
assert!(!permission::has_permission(&set, &permission::record_correct()), 0);
9090
}
9191

92+
#[test]
93+
fun test_metadata_admin_permissions() {
94+
let perms = permission::metadata_admin_permissions();
95+
96+
assert!(permission::has_permission(&perms, &permission::meta_data_update()), 0);
97+
assert!(permission::has_permission(&perms, &permission::meta_data_delete()), 0);
98+
assert!(iota::vec_set::size(&perms) == 2, 0);
99+
}
100+
92101
#[test]
93102
#[expected_failure(abort_code = vec_set::EKeyAlreadyExists)]
94103
fun test_from_vec_duplicate_permission() {

0 commit comments

Comments
 (0)