How to Set OWD or Default Sharing Settings for Unit Testing session?

326    Asked by ankur_3579 in Salesforce , Asked on Apr 16, 2021

Is it possible to control the OWD Salesforce or Default Sharing Settings in effect when we run unit tests? Ideally we should be able to set different OWDs as a step in test setup so we can ensure the code will behave correctly under different OWDs that could be set in different organizations where the package/code is installed? How do I know what OWDs are set by default for a test run session? EDIT: I've noticed that if I set OWDs for my DEV org, then that's what applied for the unit-test session, which makes sense. But the issue is how do I change it as part of unit tests. My application behavior changes the OWD setting for the Contact object. If Contact OWD is 'Public Read/Write' it does one thing and does another if it's 'Public Read Only' or less. I'd like to test this change with a unit test, that it behaves correctly under different configurations.Does anyone know how to do either of the following:  Set the OWDs applicable for the unittest session using Apex in a test setup method? (Original Question) Run the same set of unittests targeting different DEV organizations on which I set different OWD configurations manually? (Not the ideal, but something is better than nothing).

You can use the Organization object though to find out the default OWD's for the org you are in.

This allows you to query for the default access for standard objects

      Organization myOrg = [Select Id, DefaultAccountAccess, DefaultContactAccess from Organization]; System.debug(myOrg);

Unfortunately, the fields are not updateable so you can't change the OWD in this manner, only query for them. Here is the documentation on the Organization object. note that it states 'Only one organization object exists per organization.'

Here are the owd Salesforce setting steps:

In Setup, use the Quick Find box to find Sharing Settings.

Click Edit in the Organization-Wide Defaults area.

For each object, select the default access you want to give everyone.

Your Answer


Parent Categories