Object Backup Permissions Tests

This page describes the proper behavior for the object backup feature in certain permission scenarios. We use it to check that the code is working right.

Export
The guiding principle for exporting is "effective full permissions". "Full permissions" means you have Modify, Copy, and Transfer permissions. "Effective full permissions" means:


 * The user is the owner of the object, and have full permissions for the object. Content permissions are irrelevant in this case.
 * Or, the user could possibly take a copy of the object and would then have full permissions for the copy they took. (That means: "Allow anyone to copy", or "Share with group" and the user is in the object's group; and the owner of the object has at least Copy permissions for all the contents in all the prims. Otherwise you couldn't take a copy.)

Scenarios
Here are some examples of scenarios in which you should or should not be able to export an object. There might be other scenarios not mentioned here; if so, they should be evaluated according to the "effective full permissions" guideline.

You should be able to export when...
 * 1) The object is rezzed in world, you own it, and you have full perms for the object and all its contents.
 * 2) Ditto, except you don't have full perms for some or all of the contents.
 * 3) The object is attached to your avatar, and you have full perms for the object and all of its contents.
 * 4) Ditto, except you don't have full perms for some or all of the contents.
 * 5) The object is rezzed in world, someone else owns it, the owner has at least Copy perms for all the contents in all the prims, "Share with group" is set,  the object's group is set to a group you are a member of, and you have the "Manipulate (move, copy, modify) group-owned objects" ability for the group, and you have that group tag active.
 * 6) Ditto, except you do not have another group's tag active.
 * 7) Ditto, except you have no group tag active at all.
 * 8) The object is rezzed in world, someone else owns it, the owner has at least Copy perms for all the contents in all the prims, and "Allow anyone to copy" is set.

You should not be able to export when...
 * 1) The object is rezzed in world, you own it, but you do not have full perms for the object.
 * 2) The object is rezzed in world, someone else owns it, and neither "Share with group" nor "Allow anyone to copy" is set.
 * 3) The object is rezzed in world, someone else owns it, "Allow anyone to copy" is set, but the owner does not have Copy perms for one or more of the object contents in one or more of the object's prims.
 * 4) The object is rezzed in world, someone else owns it, "Share with group" is set, but the object is not set to a group.
 * 5) The object is rezzed in world, someone else owns it, "Share with group" is set, but the object group is set to a group you are not a member of.
 * 6) The object is rezzed in world, someone else owns it, "Share with group" is set, the object is set to a group you are a member of, but you do not have the "Manipulate (move, copy, modify) group-owned objects" abilit for the group.
 * 7) The object is rezzed in world, someone else owns it, "Share with group" is set, the object is set to a group you are a member of, you have the "Manipulate (move, copy, modify) group-owned objects" ability for the group, but the owner does not have Copy perms for one or more of the object contents in one or more of the object's prims.
 * 8) The object is attached to your avatar, but you do not have full perms for the object.
 * 9) The object is attached to somebody else.

Import
The main concern with import is that you are able to build in the current area (and possibly the surrounding areas, for large objects).
 * You are allowed to rez an object on the current parcel.
 * The current parcel is below its maximum prim capacity.
 * If a prim would be moved to another parcel after being rezzed (e.g. for a large object): You are allowed to move objects into the other parcel.
 * If you are also uploading the textures: you have enough L$ to upload the texture(s).

If rezzing, moving, or uploading fails at any time, the import process should be aborted and an alert shown to the user explaining the problem.