mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-12-12 15:57:44 +00:00
playwright: added initial db setup for playwright test (#18832)
* playwright: fixed service ingestion aut * updated the initial start of the playwright test
This commit is contained in:
parent
9d37ff0e34
commit
4720a8da2b
@ -62,6 +62,48 @@ export const DATA_STEWARD_RULES: PolicyRulesType[] = [
|
||||
},
|
||||
];
|
||||
|
||||
export const DATA_CONSUMER_RULES: PolicyRulesType[] = [
|
||||
{
|
||||
name: 'DataConsumerPolicy-EditRule',
|
||||
resources: ['All'],
|
||||
operations: [
|
||||
'EditDescription',
|
||||
'EditGlossaryTerms',
|
||||
'EditTags',
|
||||
'EditTier',
|
||||
'ViewAll',
|
||||
],
|
||||
effect: 'allow',
|
||||
},
|
||||
];
|
||||
|
||||
export const ORGANIZATION_POLICY_RULES: PolicyRulesType[] = [
|
||||
{
|
||||
name: 'OrganizationPolicy-NoOwner-Rule',
|
||||
description:
|
||||
'Allow any one to set the owner of an entity that has no owner set.',
|
||||
effect: 'allow',
|
||||
operations: ['EditOwners'],
|
||||
resources: ['All'],
|
||||
condition: 'noOwner()',
|
||||
},
|
||||
{
|
||||
name: 'OrganizationPolicy-Owner-Rule',
|
||||
description: 'Allow all the operations on an entity for the owner.',
|
||||
effect: 'allow',
|
||||
operations: ['All'],
|
||||
resources: ['All'],
|
||||
condition: 'isOwner()',
|
||||
},
|
||||
{
|
||||
name: 'OrganizationPolicy-ViewAll-Rule',
|
||||
description: 'Allow all users to discover data assets.',
|
||||
effect: 'allow',
|
||||
operations: ['ViewAll'],
|
||||
resources: ['All'],
|
||||
},
|
||||
];
|
||||
|
||||
export const GLOBAL_SETTING_PERMISSIONS: Record<
|
||||
string,
|
||||
{ testid: GlobalSettingOptions; isCustomProperty?: boolean }
|
||||
|
||||
@ -10,24 +10,39 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { test as setup } from '@playwright/test';
|
||||
import { Page, test as setup } from '@playwright/test';
|
||||
import { JWT_EXPIRY_TIME_MAP } from '../constant/login';
|
||||
import { AdminClass } from '../support/user/AdminClass';
|
||||
import { getApiContext } from '../utils/common';
|
||||
import { updateJWTTokenExpiryTime } from '../utils/login';
|
||||
import {
|
||||
updateDefaultDataConsumerPolicy,
|
||||
updateDefaultOrganizationPolicy,
|
||||
} from '../utils/permission';
|
||||
import { removeOrganizationPolicyAndRole } from '../utils/team';
|
||||
const adminFile = 'playwright/.auth/admin.json';
|
||||
|
||||
const initialSetup = async (page: Page) => {
|
||||
const { apiContext, afterAction } = await getApiContext(page);
|
||||
// Update JWT expiry time to 4 hours
|
||||
await updateJWTTokenExpiryTime(apiContext, JWT_EXPIRY_TIME_MAP['4 hours']);
|
||||
// Remove organization policy and role
|
||||
await removeOrganizationPolicyAndRole(apiContext);
|
||||
// update default Organization policy
|
||||
await updateDefaultOrganizationPolicy(apiContext);
|
||||
// update default Data consumer policy
|
||||
await updateDefaultDataConsumerPolicy(apiContext);
|
||||
|
||||
await afterAction();
|
||||
};
|
||||
|
||||
setup('authenticate as admin', async ({ page }) => {
|
||||
const admin = new AdminClass();
|
||||
|
||||
// login with admin user
|
||||
await admin.login(page);
|
||||
await page.waitForURL('**/my-data');
|
||||
const { apiContext, afterAction } = await getApiContext(page);
|
||||
await updateJWTTokenExpiryTime(apiContext, JWT_EXPIRY_TIME_MAP['4 hours']);
|
||||
await removeOrganizationPolicyAndRole(apiContext);
|
||||
await afterAction();
|
||||
await initialSetup(page);
|
||||
await admin.logout(page);
|
||||
await page.waitForURL('**/signin');
|
||||
await admin.login(page);
|
||||
|
||||
@ -27,6 +27,8 @@ export type PolicyRulesType = {
|
||||
resources: string[];
|
||||
operations: string[];
|
||||
effect: string;
|
||||
description?: string;
|
||||
condition?: string;
|
||||
};
|
||||
|
||||
export class PolicyClass {
|
||||
|
||||
@ -170,7 +170,7 @@ class ServiceBaseClass {
|
||||
|
||||
// Header available once page loads
|
||||
await page.waitForSelector('[data-testid="data-assets-header"]');
|
||||
await page.getByTestId('loader').waitFor({ state: 'detached' });
|
||||
await page.getByTestId('loader').first().waitFor({ state: 'detached' });
|
||||
await page.getByTestId('ingestions').click();
|
||||
await page
|
||||
.getByLabel('Ingestions')
|
||||
|
||||
@ -10,7 +10,11 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { expect, Page } from '@playwright/test';
|
||||
import { APIRequestContext, expect, Page } from '@playwright/test';
|
||||
import {
|
||||
DATA_CONSUMER_RULES,
|
||||
ORGANIZATION_POLICY_RULES,
|
||||
} from '../constant/permission';
|
||||
|
||||
export const checkNoPermissionPlaceholder = async (
|
||||
page: Page,
|
||||
@ -117,3 +121,45 @@ export const validateViewPermissions = async (
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
await checkNoPermissionPlaceholder(page, /Custom Properties/);
|
||||
};
|
||||
|
||||
export const updateDefaultDataConsumerPolicy = async (
|
||||
apiContext: APIRequestContext
|
||||
) => {
|
||||
const dataConsumerRoleResponse = await apiContext
|
||||
.get('/api/v1/policies/name/DataConsumerPolicy')
|
||||
.then((response) => response.json());
|
||||
|
||||
await apiContext.patch(`/api/v1/policies/${dataConsumerRoleResponse.id}`, {
|
||||
data: [
|
||||
{
|
||||
op: 'replace',
|
||||
path: '/rules',
|
||||
value: DATA_CONSUMER_RULES,
|
||||
},
|
||||
],
|
||||
headers: {
|
||||
'Content-Type': 'application/json-patch+json',
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const updateDefaultOrganizationPolicy = async (
|
||||
apiContext: APIRequestContext
|
||||
) => {
|
||||
const orgPolicyResponse = await apiContext
|
||||
.get('/api/v1/policies/name/OrganizationPolicy')
|
||||
.then((response) => response.json());
|
||||
|
||||
await apiContext.patch(`/api/v1/policies/${orgPolicyResponse.id}`, {
|
||||
data: [
|
||||
{
|
||||
op: 'replace',
|
||||
path: '/rules',
|
||||
value: ORGANIZATION_POLICY_RULES,
|
||||
},
|
||||
],
|
||||
headers: {
|
||||
'Content-Type': 'application/json-patch+json',
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user