Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export { GetUpdatedResources } from "./get-updated-resources.js";
export { PostResourceAndPolicy, PostPolicy, PostResource } from "./post-resource-and-policy.js";
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { check } from "k6";
import { ResourceRegistryApiClient } from "../../../../clients/authentication/index.js";

/**
*
* @param {ResourceRegistryApiClient} resourceRegistryClient A client to interact with the Resource Registry API
* @param {string} resourceId - resource id
* @param {string} org - organization number
* @param {string} orgCode - organization code
* @returns {Object} Parsed JSON response
*/
export function PostResourceAndPolicy(resourceRegistryClient, resourceId, org, orgCode) {
const res = resourceRegistryClient.PostResource(resourceId, org, orgCode);
let succeed = true;
let succeedPolicy = false;

succeed = check(res, {
"GetUpdatedResources - status code is 201": (r) => r.status === 201,
});

if (succeed) {
const resPolicy = resourceRegistryClient.PostPolicy(resourceId);
succeedPolicy = check(resPolicy, {
"PostPolicy - status code is 201": (r) => r.status === 201,
});
if (!succeedPolicy) {
console.log("Post policy response status:", resPolicy.status);
console.log("Post policy response body:", resPolicy.body);
}
} else {
console.log("Post resource esponse status:", res.status);
}

return [succeed, succeedPolicy];
}

/**
*
* @param {ResourceRegistryApiClient} resourceRegistryClient A client to interact with the Resource Registry API
* @param {string} resourceId - resource id
* @param {string} org - organization number
* @param {string} orgCode - organization code
* @returns {Object} Parsed JSON response
*/
export function PostResource(resourceRegistryClient, resourceId, org, orgCode) {
const res = resourceRegistryClient.PostResource(resourceId, org, orgCode);

const succeed = check(res, {
"GetUpdatedResources - status code is 201": (r) => r.status === 201,
});

if (!succeed) {
console.log("Post resource response status:", res.status);
console.warn("Post resource response body");
}

return res;
}

/**
*
* @param {ResourceRegistryApiClient} resourceRegistryClient A client to interact with the Resource Registry API
* @param {string} resourceId - resource id
* @param {string} org - organization number
* @param {string} orgCode - organization code
* @returns {Object} Parsed JSON response
*/
export function PostPolicy(resourceRegistryClient, resourceId, policyDefinition = null) {
const res = resourceRegistryClient.PostPolicy(resourceId, policyDefinition);

const succeed = check(res, {
"GetUpdatedResources - status code is 201": (r) => r.status === 201,
});

if (!succeed) {
console.log("Post policy response status:", res.status);
console.warn("Post policy response body:", res.body);
}

return res;
}



Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,17 @@ export function CreateDialog(
serviceOwner,
label = null,
noTransmissionsActivities = false,
title = null,
otherResource = null,
) {
const res = serviceOwnerApiClient.PostDialog(
endUser,
serviceResource,
serviceOwner,
label,
noTransmissionsActivities,
title,
otherResource,
);

const success = check(res, {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Example script to create a policy in the Resource Registry for testing purposes.
* No resource is created in this script, it is assumed that the resource already exists.
* A predefined policy XML is used for the creation, but can be modified as needed.
* See policy-builder.js for building custom policies.
* Run: k6 run create-policy.js
* Set environment variables:
* ENVIRONMENT - the target environment (e.g., "yt01", "at23", "tt02")
* BASE_URL - the base URL of the Resource Registry API
* Example:
* ENVIRONMENT=yt01 BASE_URL=https://platform.yt01.altinn.cloud k6 run create-policy.js
* TOKEN_GENERATOR_USERNAME and TOKEN_GENERATOR_PASSWORD must also be set in the environment for token generation
*/
import { ResourceRegistryApiClient } from "../../../../clients/authentication/index.js";
import { EnterpriseTokenGenerator } from "../../../../common-imports.js";
import { buildPolicy, getDefaultPolicyXml } from "./templates/policy-builder.js";

let resourceRegistryApiClient = undefined;

export default function () {
if (resourceRegistryApiClient == undefined) {
const tokenOpts = new Map();
tokenOpts.set("env", __ENV.ENVIRONMENT);
tokenOpts.set("ttl", 3600);
tokenOpts.set("scopes", "altinn:resourceregistry/resource.write altinn:resourceregistryresource.read altinn:resourceregistry/resource.admin");
const tokenGenerator = new EnterpriseTokenGenerator(tokenOpts);
resourceRegistryApiClient = new ResourceRegistryApiClient(__ENV.BASE_URL, tokenGenerator);
}

const resourceName = "k6-resource-example";

const policy = getDefaultPolicyXml(resourceName); //buildPolicy(policyDefinition, resourceName);
const policyResp = resourceRegistryApiClient.PostPolicy(resourceName, policy);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Example script to create a resource
* Run: k6 run create-resource-example.js
* Set environment variables:
* ENVIRONMENT - the target environment (e.g., "yt01", "at23", "tt02")
* BASE_URL - the base URL of the resource registry API
* Example:
* ENVIRONMENT=yt01 BASE_URL=https://platform.yt01.altinn.cloud k6 run create-access-package-resource.js
* Also the TOKEN_GENERATOR_USERNAME and TOKEN_GENERATOR_PASSWORD must be set in the environment for token generation
*/

import { ResourceRegistryApiClient } from "../../../../clients/authentication/index.js";
import { EnterpriseTokenGenerator } from "../../../../common-imports.js";
import { getResourceBody } from "./templates/resource-templates.js";
import { getDefaultPolicyXml } from "./templates/policy-builder.js";

let resourceRegistryApiClient = undefined;

export default function () {
// OrgNo for ttd is 991825827 except in yt01 where it is 713431400.
let orgNo = "991825827";
if (__ENV.ENVIRONMENT === "yt01") {
orgNo = "713431400";
}
const orgCode = "ttd";

if (resourceRegistryApiClient == undefined) {
const tokenOpts = new Map();
tokenOpts.set("env", __ENV.ENVIRONMENT);
tokenOpts.set("ttl", 3600);
tokenOpts.set("scopes", "altinn:resourceregistry/resource.write altinn:resourceregistryresource.read altinn:resourceregistry/resource.admin");
const tokenGenerator = new EnterpriseTokenGenerator(tokenOpts);
resourceRegistryApiClient = new ResourceRegistryApiClient(__ENV.BASE_URL, tokenGenerator);
}

const resourceId = "k6-resource-example";
const resourceBody = getResourceBody("default", resourceId, orgNo, orgCode);

const resourceResp = resourceRegistryApiClient.PostResource(resourceBody);
if (resourceResp.status === 201) {
console.log(`Resource created: ${resourceId}`);
const policyXml = getDefaultPolicyXml(resourceId);
const policyResp = resourceRegistryApiClient.PostPolicy(resourceId, policyXml);
if (policyResp.status === 201) {
console.log(`Policy created for resource: ${resourceId}`);
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Script to create access package resources with PRIV in policy file in addition to access package
* Run: k6 run create-access-package-priv-resource.js
* Set environment variables:
* ENVIRONMENT - the target environment (e.g., "yt01", "at23", "tt02")
* BASE_URL - the base URL of the resource registry API
* Example:
* ENVIRONMENT=yt01 BASE_URL=https://platform.yt01.altinn.cloud k6 run create-access-package-priv-resource.js
* TOKEN_GENERATOR_USERNAME and TOKEN_GENERATOR_PASSWORD must also be set in the environment for token generation
*/
import { ResourceRegistryApiClient, AccessPackagesApiClient } from "../../../../../clients/authentication/index.js";
import { EnterpriseTokenGenerator } from "../../../../../common-imports.js";
import { getResourceBody } from "../templates/resource-templates.js";
import { getAccessPackageWithPrivPolicyXml } from "../templates/policy-builder.js";

let resourceRegistryApiClient = undefined;
let accessPackagesApiClient = undefined;

export default function () {
// OrgNo for ttd is 991825827 except in yt01 where it is 713431400.
let orgNo = "991825827";
if (__ENV.ENVIRONMENT === "yt01") {
orgNo = "713431400";
}
const orgCode = "ttd";

if (resourceRegistryApiClient == undefined) {
const tokenOpts = new Map();
tokenOpts.set("env", __ENV.ENVIRONMENT);
tokenOpts.set("ttl", 3600);
tokenOpts.set("scopes", "altinn:resourceregistry/resource.write altinn:resourceregistryresource.read altinn:resourceregistry/resource.admin");
const tokenGenerator = new EnterpriseTokenGenerator(tokenOpts);
resourceRegistryApiClient = new ResourceRegistryApiClient(__ENV.BASE_URL, tokenGenerator);
}

// Get all access packages
accessPackagesApiClient = new AccessPackagesApiClient(__ENV.BASE_URL);
const searchOpt = { typeName: "person" };
const accessPackageResp = accessPackagesApiClient.Search(searchOpt);
const resp = JSON.parse(accessPackageResp.body);

// Create resource and policy for each access package
for (const item of resp) {
const accessPackage = item.object.urn.split(":").pop();
const resourceId = `k6-test-${accessPackage}-with-priv`;
const resourceBody = getResourceBody("access-package-with-priv", resourceId, orgNo, orgCode, accessPackage);

const resourceResp = resourceRegistryApiClient.PostResource(resourceBody);
if (resourceResp.status === 201) {
console.log(`Resource created: ${resourceId}`);
const policyXml = getAccessPackageWithPrivPolicyXml(resourceId, accessPackage);
const policyResp = resourceRegistryApiClient.PostPolicy(resourceId, policyXml);
if (policyResp.status === 201) {
console.log(`Policy created for resource: ${resourceId}`);
}
} else {
console.log(`Failed to create resource: ${resourceId}. Status: ${resourceResp.status}`);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/*
* Script to create resources and policies for access packages in the resource registry.
* Run: k6 run create-access-package-resource.js
* Set environment variables:
* ENVIRONMENT - the target environment (e.g., "yt01", "at23", "tt02")
* BASE_URL - the base URL of the resource registry API
* Example:
* ENVIRONMENT=yt01 BASE_URL=https://platform.yt01.altinn.cloud k6 run create-access-package-resource.js
* Also the TOKEN_GENERATOR_USERNAME and TOKEN_GENERATOR_PASSWORD must be set in the environment for token generation
*/

import { ResourceRegistryApiClient, AccessPackagesApiClient } from "../../../../../clients/authentication/index.js";
import { EnterpriseTokenGenerator } from "../../../../../common-imports.js";
import { getResourceBody } from "../templates/resource-templates.js";
import { getAccessPackagePolicyXml } from "../templates/policy-builder.js";

let resourceRegistryApiClient = undefined;
let accessPackagesApiClient = undefined;

export default function () {
// OrgNo for ttd is 991825827 except in yt01 where it is 713431400.
let orgNo = "991825827";
if (__ENV.ENVIRONMENT === "yt01") {
orgNo = "713431400";
}
const orgCode = "ttd";

if (resourceRegistryApiClient == undefined) {
const tokenOpts = new Map();
tokenOpts.set("env", __ENV.ENVIRONMENT);
tokenOpts.set("ttl", 3600);
tokenOpts.set("scopes", "altinn:resourceregistry/resource.write altinn:resourceregistryresource.read altinn:resourceregistry/resource.admin");
const tokenGenerator = new EnterpriseTokenGenerator(tokenOpts);
resourceRegistryApiClient = new ResourceRegistryApiClient(__ENV.BASE_URL, tokenGenerator);
}

accessPackagesApiClient = new AccessPackagesApiClient(__ENV.BASE_URL);
const searchOpt = { typeName: "person" };
const accessPackageResp = accessPackagesApiClient.Search(searchOpt);

const resp = JSON.parse(accessPackageResp.body);
for (const item of resp) {
const accessPackage = item.object.urn.split(":").pop();
const resourceId = `k6-test-${accessPackage}`;
const resourceBody = getResourceBody("access-package", resourceId, orgNo, orgCode, accessPackage);

const resourceResp = resourceRegistryApiClient.PostResource(resourceBody);
if (resourceResp.status === 201) {
console.log(`Resource created: ${resourceId}`);
const policyXml = getAccessPackagePolicyXml(resourceId, accessPackage);
const policyResp = resourceRegistryApiClient.PostPolicy(resourceId, policyXml);
if (policyResp.status === 201) {
console.log(`Policy created for resource: ${resourceId}`);
}
}
break;
}

}

Loading