diff --git a/.circleci/config.yml b/.circleci/config.yml index c86be2c..b567e88 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,6 +3,9 @@ parameters: run_automatedtesting: default: false type: boolean + run_performancetesting: + default: false + type: boolean run_basedeployment: default: true type: boolean @@ -54,7 +57,7 @@ builddeploy_steps: &builddeploy_steps --url https://circleci.com/api/v2/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pipeline \ --header "Circle-Token: ${QA_USER_TOKEN}" \ --header 'content-type: application/json' \ - --data '{"branch":"'"$CIRCLE_BRANCH"'","parameters":{"run_automatedtesting":true , "run_basedeployment": false}}' + --data '{"branch":"'"$CIRCLE_BRANCH"'","parameters":{"run_performancetesting":true , "run_automatedtesting":true, "run_basedeployment": false}}' fi @@ -107,8 +110,44 @@ jobs: npm run test:newman:clear npm run test:newman npm run test:newman:clear + + "Performance-Testing": + docker: + # specify the version you desire here + - image: circleci/openjdk:8-jdk + + # Specify service dependencies here if necessary + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + # - image: circleci/postgres:9.4 + + working_directory: ~/repo + + environment: + # Customize the JVM maximum heap limit + MAVEN_OPTS: -Xmx3200m + + steps: + - checkout + + # Download and cache dependencies + - restore_cache: + keys: + - v1-dependencies-{{ checksum "pom.xml" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + + - run: mvn dependency:go-offline + + - save_cache: + paths: + - ~/.m2 + key: v1-dependencies-{{ checksum "pom.xml" }} + + - run: mvn verify + - store_artifacts: - path: ./newman + path: target/jmeter/reports workflows: version: 2 @@ -146,3 +185,19 @@ workflows: only: - develop - dev-circleci + + Performance Testing: + when: << pipeline.parameters.run_performancetesting >> + jobs: + # Performance Test is executed on "feature/performance" "develop" and "performance" branches only. + - Hold [Performance-Testing]: + type: approval + - Performance-Testing: + context : org-global + requires: + - Hold [Performance-Testing] + filters: + branches: + only: + - develop + - performance \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..104a7d6 --- /dev/null +++ b/pom.xml @@ -0,0 +1,230 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>com.ubikingenierie.ubikloadpack</groupId> + <artifactId>jmeter-maven-plugin-demo</artifactId> + <version>0.0.1-SNAPSHOT</version> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <jmeter-maven-plugin.version>2.9.0</jmeter-maven-plugin.version> + <jmeterScript>Resource API.jmx</jmeterScript> + </properties> + <dependencies> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.11</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.25</version> + </dependency> + <dependency> + <groupId>org.apache.jmeter</groupId> + <artifactId>ApacheJMeter_core</artifactId> + <version>5.1</version> + </dependency> + </dependencies> + <build> + <plugins> + + </plugins> + </build> + <profiles> + <profile> + <id>standalone</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>com.lazerycode.jmeter</groupId> + <artifactId>jmeter-maven-plugin</artifactId> + <version>${jmeter-maven-plugin.version}</version> + <configuration> + <generateReports>true</generateReports> + <errorRateThresholdInPercent>60</errorRateThresholdInPercent> + <testResultsTimestamp>true</testResultsTimestamp> + <propertiesJMeter> + <BUILD_TAG>${project.version}</BUILD_TAG> + <threads>7</threads> + <duration>30</duration> + </propertiesJMeter> + <jmeterExtensions> + <artifact>kg.apc:jmeter-plugins-casutg:2.8</artifact> + </jmeterExtensions> + <testPlanLibraries> + <artifact>com.ubikingenierie.ubikloadpack:jmeter-maven-plugin-demo:${project.version}</artifact> + </testPlanLibraries> + <excludedArtifacts> + <exclusion>org.slf4j:slf4j-nop</exclusion> + <exclusion>avalon-framework:*</exclusion> + <exclusion>org.apache.tika:*</exclusion> + <exclusion>excalibur-datasource:excalibur-datasource</exclusion> + <exclusion>excalibur-instrument:excalibur-instrument</exclusion> + <exclusion>excalibur-logger:excalibur-logger</exclusion> + <exclusion>excalibur-pool:*</exclusion> + <exclusion>org.beanshell:bsh:jar:2.0b5</exclusion> + </excludedArtifacts> + <jMeterProcessJVMSettings> + <arguments> + <argument>-XX:MaxMetaspaceSize=512m</argument> + <argument>-Xmx2048m</argument> + <argument>-Xms2048m</argument> + </arguments> + </jMeterProcessJVMSettings> + <testFilesIncluded> + <jMeterTestFile>${jmeterScript}</jMeterTestFile> + </testFilesIncluded> + <testFilesDirectory>./test/jmeter</testFilesDirectory> + </configuration> + <executions> + <execution> + <id>jmeter-tests</id> + <phase>verify</phase> + <goals> + <goal>jmeter</goal> + <goal>results</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>worker</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <phase>generate-resources</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source> + project.properties["hostname"] = InetAddress.getLocalHost().getHostName() + </source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>com.lazerycode.jmeter</groupId> + <artifactId>jmeter-maven-plugin</artifactId> + <version>${jmeter-maven-plugin.version}</version> + <configuration> + <propertiesJMeter> + <server.rmi.ssl.disable>true</server.rmi.ssl.disable> + </propertiesJMeter> + <jmeterExtensions> + <artifact>kg.apc:jmeter-plugins-casutg:2.8</artifact> + </jmeterExtensions> + <testPlanLibraries> + <artifact>com.ubikingenierie.ubikloadpack:jmeter-maven-plugin-demo:${project.version}</artifact> + </testPlanLibraries> + <excludedArtifacts> + <exclusion>org.slf4j:slf4j-nop</exclusion> + <exclusion>avalon-framework:*</exclusion> + <exclusion>org.apache.tika:*</exclusion> + <exclusion>excalibur-datasource:excalibur-datasource</exclusion> + <exclusion>excalibur-instrument:excalibur-instrument</exclusion> + <exclusion>excalibur-logger:excalibur-logger</exclusion> + <exclusion>excalibur-pool:*</exclusion> + <exclusion>org.beanshell:bsh:jar:2.0b5</exclusion> + </excludedArtifacts> + <jMeterProcessJVMSettings> + <arguments> + <argument>-XX:MaxMetaspaceSize=512m</argument> + <argument>-Xmx2048m</argument> + <argument>-Xms2048m</argument> + </arguments> + </jMeterProcessJVMSettings> + <exportedRmiHostname>${hostname}</exportedRmiHostname> + <serverPort>3010</serverPort> + </configuration> + <executions> + <execution> + <id>start-jmeter-server</id> + <goals> + <goal>remote-server</goal> + </goals> + <phase>verify</phase> + <configuration> + <runInBackground>false</runInBackground> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>controller</id> + <build> + <plugins> + <plugin> + <groupId>com.lazerycode.jmeter</groupId> + <artifactId>jmeter-maven-plugin</artifactId> + <version>${jmeter-maven-plugin.version}</version> + <configuration> + <propertiesUser> + <server.rmi.ssl.disable>true</server.rmi.ssl.disable> + </propertiesUser> + <propertiesGlobal> + <BUILD_TAG>${project.version}</BUILD_TAG> + <threads>7</threads> + <duration>30</duration> + </propertiesGlobal> + <generateReports>true</generateReports> + <jmeterExtensions> + <artifact>kg.apc:jmeter-plugins-casutg:2.8</artifact> + </jmeterExtensions> + <testPlanLibraries> + <artifact>com.ubikingenierie.ubikloadpack:jmeter-maven-plugin-demo:${project.version}</artifact> + </testPlanLibraries> + <excludedArtifacts> + <exclusion>org.slf4j:slf4j-nop</exclusion> + <exclusion>avalon-framework:*</exclusion> + <exclusion>org.apache.tika:*</exclusion> + <exclusion>excalibur-datasource:excalibur-datasource</exclusion> + <exclusion>excalibur-instrument:excalibur-instrument</exclusion> + <exclusion>excalibur-logger:excalibur-logger</exclusion> + <exclusion>excalibur-pool:*</exclusion> + <exclusion>org.beanshell:bsh:jar:2.0b5</exclusion> + </excludedArtifacts> + <jMeterProcessJVMSettings> + <arguments> + <argument>-XX:MaxMetaspaceSize=512m</argument> + <argument>-Xmx2048m</argument> + <argument>-Xms2048m</argument> + </arguments> + </jMeterProcessJVMSettings> + <remoteConfig> + <serverList>${serverList}</serverList> + <startAndStopServersForEachTest>true</startAndStopServersForEachTest> + </remoteConfig> + </configuration> + <executions> + <execution> + <id>performance-test</id> + <goals> + <goal>jmeter</goal> + <goal>results</goal> + </goals> + <phase>verify</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> \ No newline at end of file diff --git a/test/jmeter/JsonSample.groovy b/test/jmeter/JsonSample.groovy new file mode 100644 index 0000000..23c935c --- /dev/null +++ b/test/jmeter/JsonSample.groovy @@ -0,0 +1,52 @@ +import groovy.json.JsonSlurper +import groovy.json.JsonOutput +import org.apache.jmeter.services.FileServer +import java.util.concurrent.ConcurrentLinkedQueue +import java.util.concurrent.ConcurrentHashMap + +class JsonSampleHolder { + static samples = + MapWithDefault.newInstance( + new ConcurrentHashMap<String, JsonSample>(), { String f -> new JsonSample(f) } + ) + + static def next(file) { + return samples.get(file).next() + } +} + +class JsonSample { + def data = null + def ite = null + + JsonSample(file) { + if(data == null) { + def inputPath = FileServer.getFileServer().getBaseDir() + file + File inputFile = new File(inputPath) + def slurper = new JsonSlurper() + data = new ConcurrentLinkedQueue(slurper.parse(inputFile)) + ite = data.iterator() + } + } + synchronized def next() { + if(!ite.hasNext()) { + ite = data.iterator() + } + return ite.next() + } +} + + +Thread thread = Thread.currentThread(); +Long threadNum = thread.getId(); +def value = JsonSampleHolder.next(args[0]) +def json = JsonOutput.toJson(value) +log.info(threadNum + " : " + value) +vars.putObject(args[1], value) +vars.put(args[1] + "_json", json) + +if(binding.hasVariable('SampleResult')) { + SampleResult.setContentType("application/json") + SampleResult.setResponseCodeOK() + SampleResult.setResponseData(json, "utf-8") +} diff --git a/test/jmeter/README.md b/test/jmeter/README.md new file mode 100644 index 0000000..dab4061 --- /dev/null +++ b/test/jmeter/README.md @@ -0,0 +1,210 @@ +# Topcoder - JMeter Performance Testing Framework - Part 1 + +## Requirements +- [Java VM >= 8](https://www.java.com/en/download/) +- [Apache maven >= ](https://maven.apache.org/download.cgi) +- [Apache jmeter >= 5.4.1](https://jmeter.apache.org/download_jmeter.cgi) + +## Project structure +- env/ + - _Default env vars to test locally_ +- test/jmeter + - data/ + - _Json Datasets_ + - JsonSample.groovy + - _Custom Json sampler in groovy_ + - Resource API.jmx + - _JMeter test plan file_ +- pom.xml + - _Maven configuration file_ +## What is provided in this project? + + +### Sensitive variables +Sensitive informations are now loaded though environments variables. +- User credentials +- M2M credentials +- TopCoder API URL + - This one is not sensitive but loading it through env var instead of csv or json is more convenient. + +Addind new one is as simple as adding new user variable within JMeter. The value of the variable has just to be set to : +```groovy +${__groovy(System.getenv("ENV_VAR_NAME"))} +``` +You can see exemples in the current JMeter test file +- Authentication/Crendentials +- Resource API[DEV]/API Variables + +As these env vars are copied to standard JMeter vars, they can be used anywhere in the test plan with `${var}`. + +## Json datasets +A groovy script `JsonSample.groovy` is provided to load data from Json files. +It has been implemented using [these datasets](https://github.com/topcoder-platform/resources-api/tree/develop/test/postman/testData/resource-role) under `Create Resource Role`of the test plan. + +THe script is fully generic and can be used for any Json file that has an array as the root object (see bellow). + +### Format requirements +The JSon root object must be an array, the content of it is not restricted. +```json +[ + { + "memberHandle": "handle1", + "httpCode": 200 + }, + { + "memberHandle": "handle2", + "httpCode": 200 + } +] +``` + +### Usage +The has to be used as a `JSR223 Sampler` or `JSR223 PreProcessor` with groovy interpreter. + +Here are the required parameters +- File Name: `JsonSample.groovy` (script path relative to test directory) + +- Parameters: json dataset location + destination var, separated by space. + - ie: /data/sample.json myvar + +### Exemples +You can see an exemple of using the parser as a Sample in the `create-resource-role-by-admin` section of the test plan + +An exemple using it as a pre-processor is available with `create-resource-role-by-m2m`, an inline groovy script is then used to remove unneeded fileds from data, but it can also be written as a plain groovy script. See the body of the `Create active, read and write access resource role by M2M`request. +```groovy +${__groovy( + import groovy.json.JsonOutput + JsonOutput.toJson(vars.getObject("resource_role_m2m").findAll {k\,v -> !['httpCode'\, 'message'].contains(k)} ) +)} +``` + +### Behaviour + +Each of the JMeter gets a different value, very similar to the CSV Dataset Behaviour. + +If there is no more data to load, the reading restarts at the beginning. + +Each element of the Json array is stored as Object to the JMeter variable whose is name from the second groovy script parameter (see Parameters above). + +The result is also stored as the `SampleResult` if used as a Sample and can be use by the orginal Jmeter parsers (ie. JsonPath extractor) + +Finally the element json string is stored inside the `varname_json` var. + +The result can alos be processed by any of the JMeter scripting languages, an exemple is provided in the JMeter test plan. + +```groovy +// Extracting simple json object (no children) to vars named with the keys of the json data +def data = vars.getObject("tokens") +data.entrySet().each { + vars.put(it.getKey(), it.getValue()) +} +``` + +## Testing + +## JMeter GUI +Default env file are provided to allow testing the project without executing CI. + +```bash +source env/api.env +source env/credentials.env +source env/m2m.env +jmeter -t "test/jmeter/Resource API.jmx" +``` + +## Testing with maven +```bash +mvn clean verify + +... + +INFO] ------------------------------------------------------- +[INFO] C O N F I G U R I N G J M E T E R +[INFO] ------------------------------------------------------- +[INFO] +[INFO] Building JMeter directory structure... +[INFO] Configuring JMeter artifacts... +[INFO] Populating JMeter directory... +[INFO] Copying extensions to JMeter lib/ext directory /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/lib/ext with downloadExtensionDependencies set to true... +[WARNING] The POM for commons-math3:commons-math3:jar:3.4.1 is missing, no dependency information available +[WARNING] The POM for commons-pool2:commons-pool2:jar:2.3 is missing, no dependency information available +[INFO] Copying JUnit libraries to JMeter junit lib directory /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/lib/junit with downloadLibraryDependencies set to true... +[INFO] Copying test libraries to JMeter lib directory /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/lib with downloadLibraryDependencies set to true... +[WARNING] The POM for xom:xom:jar:1.2.10 is missing, no dependency information available +[INFO] Configuring JMeter properties... +[INFO] Generating JSON Test config... +[INFO] +[INFO] <<< jmeter-maven-plugin:2.9.0:jmeter (jmeter-tests) < :configure @ jmeter-maven-plugin-demo <<< +[INFO] +[INFO] +[INFO] --- jmeter-maven-plugin:2.9.0:jmeter (jmeter-tests) @ jmeter-maven-plugin-demo --- +[INFO] +[INFO] ------------------------------------------------------- +[INFO] P E R F O R M A N C E T E S T S +[INFO] ------------------------------------------------------- +[INFO] +[INFO] Will generate HTML report in /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/reports/Resource API +[INFO] Executing test: Resource API.jmx +[INFO] Arguments for forked JMeter JVM: [java, -Xms512M, -Xmx512M, -XX:MaxMetaspaceSize=512m, -Xmx2048m, -Xms2048m, -Djava.awt.headless=true, -jar, ApacheJMeter-5.1.1.jar, -d, /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter, -e, -j, /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/logs/Resource API.jmx.log, -l, /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/results/20210803-Resource API.csv, -n, -o, /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/reports/Resource API, -t, /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/testFiles/Resource API.jmx, -Dsun.net.http.allowRestrictedHeaders, true] +[INFO] +[INFO] WARNING: An illegal reflective access operation has occurred +[INFO] WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/lib/xstream-1.4.11.jar) to field java.util.TreeMap.comparator +[INFO] WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields +[INFO] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations +[INFO] WARNING: All illegal access operations will be denied in a future release +[INFO] Warning: Nashorn engine is planned to be removed from a future JDK release +[INFO] Creating summariser <summary> +[INFO] Created the tree successfully using /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/testFiles/Resource API.jmx +[INFO] Starting the test @ Tue Aug 03 16:12:31 CEST 2021 (1627999951676) +[INFO] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 +[INFO] Warning: Nashorn engine is planned to be removed from a future JDK release +[INFO] summary + 1 in 00:00:03 = 0,3/s Avg: 2915 Min: 2915 Max: 2915 Err: 0 (0,00%) Active: 1 Started: 1 Finished: 0 +[INFO] summary + 22 in 00:00:18 = 1,3/s Avg: 518 Min: 1 Max: 1880 Err: 8 (36,36%) Active: 0 Started: 1 Finished: 1 +[INFO] summary = 23 in 00:00:21 = 1,1/s Avg: 623 Min: 1 Max: 2915 Err: 8 (34,78%) +[INFO] Tidying up ... @ Tue Aug 03 16:12:53 CEST 2021 (1627999973022) +[INFO] ... end of run +[INFO] Completed Test: /Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/testFiles/Resource API.jmx +[INFO] +[INFO] +[INFO] --- jmeter-maven-plugin:2.9.0:results (jmeter-tests) @ jmeter-maven-plugin-demo --- +[INFO] +[INFO] ------------------------------------------------------- +[INFO] S C A N N I N G F O R R E S U L T S +[INFO] ------------------------------------------------------- +[INFO] +[INFO] Will scan results using format: CSV +[INFO] +[INFO] Parsing results file '/Users/gmagniez/Work/topcoder/jmeter/submission/target/jmeter/results/20210803-Resource API.csv' as type: CSV +[INFO] Number of failures in '20210803-Resource API.csv': 8 +[INFO] Number of successes in '20210803-Resource API.csv': 15 +[INFO] +[INFO] ------------------------------------------------------- +[INFO] P E R F O R M A N C E T E S T R E S U L T S +[INFO] ------------------------------------------------------- +[INFO] +[INFO] Result (.csv) files scanned: 1 +[INFO] Successful requests: 15 +[INFO] Failed requests: 8 +[INFO] Failures: 34.782608% (60.0% accepted) +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 33.142 s +[INFO] Finished at: 2021-08-03T16:12:54+02:00 +[INFO] ------------------------------------------------------------------------ +[INFO] Shutdown detected, destroying JMeter process... +[INFO] +``` + +## Integration with CircleCI +Use a classic Maven/Java pipeline : [Language Guide: Java (with Maven)](https://circleci.com/docs/2.0/language-java-maven/) + +Provided required environment variables : [Using Environment Variables](https://circleci.com/docs/2.0/env-vars/) + + +## Errors +All errors reported by JMeter where already present in the provided tests plan, it was not asked to solve them. +- User 2&3 Invalid credentials +- RessourceRole creation + - Provided ids already exists, not modified to avoid creating millions of entries in the ressource-role database. diff --git a/test/jmeter/Resource API.jmx b/test/jmeter/Resource API.jmx new file mode 100644 index 0000000..642e5ba --- /dev/null +++ b/test/jmeter/Resource API.jmx @@ -0,0 +1,7258 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4.1"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Resource API" enabled="true"> + <stringProp name="TestPlan.comments">Check the Performance of the Resource API</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="basedir" elementType="Argument"> + <stringProp name="Argument.name">basedir</stringProp> + <stringProp name="Argument.value">${__groovy(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__groovy(File.separator)}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="Authentication" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">1</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp> + </SetupThreadGroup> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Credentials data" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSON Credentials Data Set" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="parameters">/data/credentials.json credentials</stringProp> + <stringProp name="script"></stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Json Credentials to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("credentials") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + </hashTree> + <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="Credentials" enabled="false"> + <collectionProp name="Arguments.arguments"> + <elementProp name="adminusername" elementType="Argument"> + <stringProp name="Argument.name">adminusername</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("ADMIN_USERNAME"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="adminpassword" elementType="Argument"> + <stringProp name="Argument.name">adminpassword</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("ADMIN_PASSWORD"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="managerusername" elementType="Argument"> + <stringProp name="Argument.name">managerusername</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("MANAGER_USERNAME"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="managerpassword" elementType="Argument"> + <stringProp name="Argument.name">managerpassword</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("MANAGER_PASSWORD"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="copilotusername" elementType="Argument"> + <stringProp name="Argument.name">copilotusername</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("COPILOT_USERNAME"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="copilotpassword" elementType="Argument"> + <stringProp name="Argument.name">copilotpassword</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("COPILOT_PASSWORD"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="user1username" elementType="Argument"> + <stringProp name="Argument.name">user1username</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("USER1_USERNAME"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="user1password" elementType="Argument"> + <stringProp name="Argument.name">user1password</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("USER1_PASSWORD"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="user2username" elementType="Argument"> + <stringProp name="Argument.name">user2username</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("USER2_USERNAME"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="user2password" elementType="Argument"> + <stringProp name="Argument.name">user2password</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("USER2_PASSWORD"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="user3username" elementType="Argument"> + <stringProp name="Argument.name">user3username</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("USER3_USERNAME"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="user3password" elementType="Argument"> + <stringProp name="Argument.name">user3password</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("USER3_PASSWORD"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="m2m_all_client_id" elementType="Argument"> + <stringProp name="Argument.name">m2m_all_client_id</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("M2M_ALL_CLIENT_ID"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="m2m_all_client_secret" elementType="Argument"> + <stringProp name="Argument.name">m2m_all_client_secret</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("M2M_ALL_CLIENT_SECRET"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="m2m_read_client_id" elementType="Argument"> + <stringProp name="Argument.name">m2m_read_client_id</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("M2M_READ_CLIENT_ID"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="m2m_read_client_secret" elementType="Argument"> + <stringProp name="Argument.name">m2m_read_client_secret</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("M2M_READ_CLIENT_SECRET"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="m2m_modify_client_id" elementType="Argument"> + <stringProp name="Argument.name">m2m_modify_client_id</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("M2M_MODIFY_CLIENT_ID"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="m2m_modify_client_secret" elementType="Argument"> + <stringProp name="Argument.name">m2m_modify_client_secret</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("M2M_MODIFY_CLIENT_SECRET"))}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </Arguments> + <hashTree/> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin User" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v2 token for ${adminusername}" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="username" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${adminusername}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">username</stringProp> + </elementProp> + <elementProp name="password" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${adminpassword}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">password</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">JFDo7HMkf0q2CkVFHojy3zHWafziprhT</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="sso" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">sso</stringProp> + </elementProp> + <elementProp name="scope" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">openid profile offline_access</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">scope</stringProp> + </elementProp> + <elementProp name="response_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">token</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">response_type</stringProp> + </elementProp> + <elementProp name="connection" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">TC-User-Database</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">connection</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">password</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="device" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">Browser</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">device</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/ro</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="refresh_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {refresh_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {id_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">id_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_token, ${id_token})}; +${__setProperty(refresh_token, ${refresh_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v3 token for ${adminusername}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "param": {
 + "externalToken": "${__property(id_token)}",
 + "refreshToken": "${__property(refresh_token)}"
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">api.topcoder-dev.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v3/authorizations</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(id_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">cache-control</stringProp> + <stringProp name="Header.value">no-cache</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="adminusertoken Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">adminusertoken</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.result[*].token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion - ${adminusertoken}" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(adminusertoken, ${adminusertoken})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Manager User" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v2 token for ${managerusername}" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="username" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${managerusername}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">username</stringProp> + </elementProp> + <elementProp name="password" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${managerpassword}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">password</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">JFDo7HMkf0q2CkVFHojy3zHWafziprhT</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="sso" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">sso</stringProp> + </elementProp> + <elementProp name="scope" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">openid profile offline_access</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">scope</stringProp> + </elementProp> + <elementProp name="response_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">token</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">response_type</stringProp> + </elementProp> + <elementProp name="connection" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">TC-User-Database</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">connection</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">password</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="device" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">Browser</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">device</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/ro</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="refresh_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {refresh_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {id_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">id_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_token, ${id_token})}; +${__setProperty(refresh_token, ${refresh_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v3 token for ${managerusername}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "param": {
 + "externalToken": "${__property(id_token)}",
 + "refreshToken": "${__property(refresh_token)}"
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">api.topcoder-dev.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v3/authorizations</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(id_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">cache-control</stringProp> + <stringProp name="Header.value">no-cache</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="managerusertoken Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">managerusertoken</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.result[*].token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion - ${managerusertoken}" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(managerusertoken, ${managerusertoken})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Copilot User" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v2 token for ${copilotusername}" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="username" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${copilotusername}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">username</stringProp> + </elementProp> + <elementProp name="password" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${copilotpassword}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">password</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">JFDo7HMkf0q2CkVFHojy3zHWafziprhT</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="sso" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">sso</stringProp> + </elementProp> + <elementProp name="scope" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">openid profile offline_access</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">scope</stringProp> + </elementProp> + <elementProp name="response_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">token</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">response_type</stringProp> + </elementProp> + <elementProp name="connection" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">TC-User-Database</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">connection</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">password</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="device" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">Browser</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">device</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/ro</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="refresh_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {refresh_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {id_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">id_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_token, ${id_token})}; +${__setProperty(refresh_token, ${refresh_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v3 token for ${copilotusername}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "param": {
 + "externalToken": "${__property(id_token)}",
 + "refreshToken": "${__property(refresh_token)}"
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">api.topcoder-dev.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v3/authorizations</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(id_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">cache-control</stringProp> + <stringProp name="Header.value">no-cache</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="copilotusertoken Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">copilotusertoken</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.result[*].token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion - ${copilotusertoken}" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(copilotusertoken, ${copilotusertoken})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Normal User" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v2 token for ${user1username}" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="username" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${user1username}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">username</stringProp> + </elementProp> + <elementProp name="password" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${user1password}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">password</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">JFDo7HMkf0q2CkVFHojy3zHWafziprhT</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="sso" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">sso</stringProp> + </elementProp> + <elementProp name="scope" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">openid profile offline_access</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">scope</stringProp> + </elementProp> + <elementProp name="response_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">token</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">response_type</stringProp> + </elementProp> + <elementProp name="connection" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">TC-User-Database</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">connection</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">password</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="device" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">Browser</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">device</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/ro</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="refresh_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {refresh_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {id_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">id_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_token, ${id_token})}; +${__setProperty(refresh_token, ${refresh_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v3 token for ${user1username}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "param": {
 + "externalToken": "${__property(id_token)}",
 + "refreshToken": "${__property(refresh_token)}"
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">api.topcoder-dev.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v3/authorizations</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(id_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">cache-control</stringProp> + <stringProp name="Header.value">no-cache</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="normalusertoken Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">normaluser_1_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.result[*].token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion - ${normaluser_1_token}" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(normaluser_1_token, ${normaluser_1_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Normal User" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v2 token for ${user2username}" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="username" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${user2username}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">username</stringProp> + </elementProp> + <elementProp name="password" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${user2password}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">password</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">JFDo7HMkf0q2CkVFHojy3zHWafziprhT</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="sso" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">sso</stringProp> + </elementProp> + <elementProp name="scope" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">openid profile offline_access</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">scope</stringProp> + </elementProp> + <elementProp name="response_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">token</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">response_type</stringProp> + </elementProp> + <elementProp name="connection" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">TC-User-Database</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">connection</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">password</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="device" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">Browser</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">device</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/ro</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="refresh_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {refresh_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {id_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">id_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_token, ${id_token})}; +${__setProperty(refresh_token, ${refresh_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v3 token for ${user2username}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "param": {
 + "externalToken": "${__property(id_token)}",
 + "refreshToken": "${__property(refresh_token)}"
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">api.topcoder-dev.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v3/authorizations</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(id_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">cache-control</stringProp> + <stringProp name="Header.value">no-cache</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="normalusertoken Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">normaluser_2_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.result[*].token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion - ${normaluser_2_token}" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(normaluser_2_token, ${normaluser_2_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Normal User" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v2 token for ${user3username}" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="username" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${user3username}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">username</stringProp> + </elementProp> + <elementProp name="password" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${user3password}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">password</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">JFDo7HMkf0q2CkVFHojy3zHWafziprhT</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="sso" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">sso</stringProp> + </elementProp> + <elementProp name="scope" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">openid profile offline_access</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">scope</stringProp> + </elementProp> + <elementProp name="response_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">token</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">response_type</stringProp> + </elementProp> + <elementProp name="connection" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">TC-User-Database</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">connection</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">password</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="device" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">Browser</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">device</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/ro</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="refresh_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {refresh_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">refresh_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {id_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">id_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_token, ${id_token})}; +${__setProperty(refresh_token, ${refresh_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get v3 token for ${user3username}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "param": {
 + "externalToken": "${__property(id_token)}",
 + "refreshToken": "${__property(refresh_token)}"
 + }
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">api.topcoder-dev.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v3/authorizations</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(id_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">cache-control</stringProp> + <stringProp name="Header.value">no-cache</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="normalusertoken Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">normaluser_3_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">$.result[*].token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion - ${normaluser_3_token}" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(normaluser_3_token, ${normaluser_3_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="M2M Token - All" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="audience" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">https://m2m.topcoder-dev.com/</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">audience</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">client_credentials</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="content-type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">application/json</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">content-type</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${m2m_all_client_id}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="client_secret" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${m2m_all_client_secret}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_secret</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/token</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="access_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {access_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">m2m_token</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">access_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(m2m_token, ${m2m_token})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="M2M Token - Read" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="audience" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">https://m2m.topcoder-dev.com/</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">audience</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">client_credentials</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="content-type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">application/json</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">content-type</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${m2m_read_client_id}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="client_secret" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${m2m_read_client_secret}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_secret</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/token</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="access_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {access_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">m2m_token_read</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">access_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(m2m_token_read, ${m2m_token_read})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="M2M Token - Modify" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="audience" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">https://m2m.topcoder-dev.com/</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">audience</stringProp> + </elementProp> + <elementProp name="grant_type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">client_credentials</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">grant_type</stringProp> + </elementProp> + <elementProp name="content-type" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">application/json</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">content-type</stringProp> + </elementProp> + <elementProp name="client_id" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${m2m_modify_client_id}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_id</stringProp> + </elementProp> + <elementProp name="client_secret" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${m2m_modify_client_secret}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + <boolProp name="HTTPArgument.use_equals">true</boolProp> + <stringProp name="Argument.name">client_secret</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">topcoder-dev.auth0.com</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/oauth/token</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="access_token Extractor" enabled="true"> + <stringProp name="TestPlan.comments">Get the {access_token}</stringProp> + <stringProp name="JSONPostProcessor.referenceNames">m2m_token_modify</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">access_token</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id_token} and ${refresh_token}]" enabled="true"> + <stringProp name="TestPlan.comments">Set the {access_token} globally</stringProp> + <stringProp name="BeanShellAssertion.query">${__setProperty(m2m_token_modify, ${m2m_token_modify})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Resource API [Dev] " enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">1</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="API Variables" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="server-url" elementType="Argument"> + <stringProp name="Argument.name">server-url</stringProp> + <stringProp name="Argument.value">${__groovy(System.getenv("SERVER_URL") ?: "api.topcoder-dev.com")}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </Arguments> + <hashTree/> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Token data" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSON Token Data Set" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="parameters">/data/token-data.json tokens</stringProp> + <stringProp name="script"></stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Json Token to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("tokens") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Challenge Data" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSON Challenge Data Set" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="parameters">/data/challenge-data.json challenge</stringProp> + <stringProp name="script"></stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Json Challenge to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("challenge") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Health Check" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources/health</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">health check</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">checksRun</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">checksRun</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(checksRun, ${checksRun})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller (If API Health is OK; Proceed with the Testing)" enabled="true"> + <stringProp name="IfController.condition">${JMeterThread.last_sample_ok}</stringProp> + <boolProp name="IfController.evaluateAll">false</boolProp> + <boolProp name="IfController.useExpression">true</boolProp> + </IfController> + <hashTree> + <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer (Delay the HTTP requests by 1.5 sec)" enabled="true"> + <stringProp name="ConstantTimer.delay">1500</stringProp> + </ConstantTimer> + <hashTree/> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Resource Roles" enabled="true"/> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Create Resource Role [✔]" enabled="true"/> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-resource-role-by-admin" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="groovy request" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role/create-resource-role-by-admin.json resource_role_admin</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("resource_role_admin") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource role by admin" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "${name}",
 + "fullReadAccess": ${fullReadAccess},
 + "fullWriteAccess": ${fullWriteAccess},
 + "isActive": ${isActive},
 + "selfObtainable": ${selfObtainable}
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create active read only access resource role by admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">id_admin_copilot_resource_role</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_admin_copilot_resource_role, ${id_admin_copilot_resource_role})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-resource-role-by-m2m" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="groovy request" enabled="false"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">../postman/testData/resource-role/create-resource-role-by-admin.json resource_role_m2m</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="false"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("resource_role_m2m") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="create-resource-role-by-m2m" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${__groovy(
 + import groovy.json.JsonOutput
 + JsonOutput.toJson(vars.getObject("resource_role_m2m").findAll {k\,v -> !['httpCode'\, 'message'].contains(k)} )
 +)}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create-resource-role-by-m2m</stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="resource_role_m2m PreProcessor" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role/create-resource-role-by-admin.json resource_role_m2m</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script">${basedir}/JsonSample.groovy</stringProp> + </JSR223PreProcessor> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-resource-role-by-admin-invalid-data" enabled="false"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="create-resource-role-by-admin" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role/create-resource-role-with-invalid-data.json resource_role_admin_invalid_data</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("resource_role_admin_invalid_data") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="resource role by Admin invalid data" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "${name}",
 + "fullReadAccess": ${fullReadAccess},
 + "fullWriteAccess": ${fullWriteAccess},
 + "required_field_1": "${required_field_1}",
 + "required_field_2": "${required_field_2}",
 + "isActive": ${isActive},
 + "selfObtainable": ${selfObtainable}
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create active, read and write access resource role by M2M</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">id_m2m_submitter_resource_role</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(id_m2m_submitter_resource_role, ${id_m2m_submitter_resource_role})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">message_received</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">.message</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Code Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Message Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="2074754861">${message}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">true</boolProp> + <intProp name="Assertion.test_type">8</intProp> + <stringProp name="Assertion.scope">variable</stringProp> + <stringProp name="Scope.variable">message_received</stringProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-resource-role-by-admin-invalid-token" enabled="false"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="create-resource-role-by-admin" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role/create-resource-role-with-invalid-tokens.json resource_role_admin_invalid_token</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("resource_role_admin_invalid_token") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="resource role by Admin invalid token" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "IGNORE",
 + "fullReadAccess": false,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create active, read and write access resource role by Admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">${jwtToken}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">message_received</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">.message</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Code Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Message Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="2074754861">${message}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> + <boolProp name="Assertion.assume_success">true</boolProp> + <intProp name="Assertion.test_type">8</intProp> + <stringProp name="Assertion.scope">variable</stringProp> + <stringProp name="Scope.variable">message_received</stringProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="false"> + <boolProp name="displayJMeterProperties">false</boolProp> + <boolProp name="displayJMeterVariables">true</boolProp> + <boolProp name="displaySystemProperties">false</boolProp> + </DebugSampler> + <hashTree/> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Update Resource Role [✔]" enabled="true"/> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="update-resource-role-by-admin" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="groovy request" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role/update-resource-role-by-admin.json update_resource_role_admin</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("update_resource_role_admin") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role via admin" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "${name}",
 + "fullReadAccess": ${fullReadAccess},
 + "fullWriteAccess": ${fullWriteAccess},
 + "isActive": ${isActive},
 + "selfObtainable": ${selfObtainable}
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role via admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="update-resource-role-by-m2m" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="create-resource-role-by-m2m" enabled="false"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">../postman/testData/resource-role/create-resource-role-by-admin.json resource_role_m2m</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="false"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("resource_role_m2m") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="update-resource-role-by-m2m" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${__groovy(
 + import groovy.json.JsonOutput
 + JsonOutput.toJson(vars.getObject("resource_role_m2m").findAll {k\,v -> !['httpCode'\, 'message'].contains(k)} )
 +)}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update-resource-role-by-m2m</stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="resource_role_m2m PreProcessor" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role/update-resource-role-by-m2m.json resource_role_m2m</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script">${basedir}/JsonSample.groovy</stringProp> + </JSR223PreProcessor> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role invalid id | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/test</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Update resource role invalid id 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role missing parameter | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role missing parameter 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role without token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role without token 401</stringProp> + </HTTPSamplerProxy> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role invalid token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role invalid token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role expired token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role expired token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role by user | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role by user 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_3_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role using invalid m2m token | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_m2m_submitter_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role using invalid m2m token 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_m2m_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role not-found | 404" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "failure-test",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/12345</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role not-found 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update resource role name duplication | 409" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "name": "JMeter Submitter (M2M | Active) Edit",
 + "fullReadAccess": true,
 + "fullWriteAccess": false,
 + "isActive": true,
 + "selfObtainable": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/${id_admin_copilot_resource_role}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update resource role name duplication 409</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Get Resource Role [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get all resource roles" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get all resource roles</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Failure Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Failure Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Team Captain]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Team Captain</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Specification Submitter]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Specification Submitter</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Final Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Final Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Copilot]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Copilot</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Iterative Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Iterative Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Test resource role]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Test resource role</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Submitter]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Submitter</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Screener]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Screener</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Post-Mortem Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Post-Mortem Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Aggregator]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Aggregator</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Manager]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Manager</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Stress Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Stress Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Specification Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Specification Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Accuracy Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Accuracy Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Free Agent]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Free Agent</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Payment Manager]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Payment Manager</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Observer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Observer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Approver]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Approver</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Primary Screener]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Primary Screener</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Client Manager]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Client Manager</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Checkpoint Reviewer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Checkpoint Reviewer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Checkpoint Screener]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Checkpoint Screener</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource role by name [Designer]" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?name=Designer</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resource role by name</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Active/Inactive resource roles [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get active resource roles" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get active resource roles</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get inactive resource roles" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=false</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Get inactive resource roles</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles with invalid parameter | 400" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=invalid</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles with invalid parameter 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles using expire token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using expire token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles without token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using expire token 401</stringProp> + </HTTPSamplerProxy> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles using invalid token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using invalid token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles using invalid m2m token | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using invalid m2m token 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_m2m_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Resource Role Phase Dependencies" enabled="true"/> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Create Dependency [✔]" enabled="true"/> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-dependency-by-admin" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="groovy request" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role-phase-dependency/create-dependency.json create_dependency_admin</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("create_dependency_admin") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency {Admin}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_1}",
 + "phaseState": ${phaseState}
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create dependency by admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_admin</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_admin, ${dependency_id_admin})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-dependency-by-m2m" enabled="true"/> + <hashTree> + <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="groovy request" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role-phase-dependency/create-dependency.json create_dependency_m2m</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script"></stringProp> + </JSR223Sampler> + <hashTree/> + <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="ressource-roles to Vars" enabled="true"> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="filename"></stringProp> + <stringProp name="parameters"></stringProp> + <stringProp name="script">def data = vars.getObject("create_dependency_m2m") +data.entrySet().each { + vars.put(it.getKey(), String.valueOf(it.getValue())) +} +</stringProp> + <stringProp name="scriptLanguage">groovy</stringProp> + </JSR223PostProcessor> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency {M2M}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_1}",
 + "phaseState": ${phaseState}
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Create dependency {M2M}</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="create-dependency-by-m2m" enabled="false"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="create-dependency-by-m2m" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">${__groovy(
 + import groovy.json.JsonOutput
 + JsonOutput.toJson(vars.getObject("create_dependency_role_m2m").findAll {k\,v -> !['httpCode'\, 'message'].contains(k)} )
 +)}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create-dependency-by-m2m</stringProp> + </HTTPSamplerProxy> + <hashTree> + <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="resource_role_m2m PreProcessor" enabled="true"> + <stringProp name="scriptLanguage">groovy</stringProp> + <stringProp name="parameters">/data/resource-role-phase-dependency/create-dependency.json create_dependency_role_m2m</stringProp> + <stringProp name="filename">${basedir}/JsonSample.groovy</stringProp> + <stringProp name="cacheKey">true</stringProp> + <stringProp name="script">${basedir}/JsonSample.groovy</stringProp> + </JSR223PreProcessor> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="HTTP Response Assertion" enabled="true"> + <collectionProp name="Asserion.test_strings"> + <stringProp name="1486727569">${httpCode}</stringProp> + </collectionProp> + <stringProp name="Assertion.custom_message"></stringProp> + <stringProp name="Assertion.test_field">Assertion.response_code</stringProp> + <boolProp name="Assertion.assume_success">false</boolProp> + <intProp name="Assertion.test_type">8</intProp> + </ResponseAssertion> + <hashTree/> + </hashTree> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency {M2M}" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create dependency by M2M</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency with invalid body | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "abc",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Create dependency with invalid body 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency without token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - create dependency without token 401</stringProp> + </HTTPSamplerProxy> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency with expired token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create dependency with expired token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency by user | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create dependency by user 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_3_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency with conflict | 409" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create dependency with conflict 409</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create dependency with not found phase id | 404" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "a93544bc-c165-4af4-b55e-18f3593b4570",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create dependency with not found phase id 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Get Dependencies [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get all dependencies" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get all dependencies</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get matched dependencies" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies?phaseId=${phase_id}&resourceRoleId=${id_resource_role_2}&phaseState=false</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get matched dependencies</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get dependencies with invalid query | 400" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies?phaseId=abc&resourceRoleId=123&phaseState=abc</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get dependencies with invalid query 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get dependencies with forbidden M2M | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get dependencies with forbidden M2M 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token_modify)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get dependencies with forbidden user | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get dependencies with forbidden user 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_3_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Update Dependency [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update dependency via admin" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "ac953811-8268-403a-ac06-fd88a100c9c7",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_admin)}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update dependency via admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update dependency via M2M" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "ac953811-8268-403a-ac06-fd88a100c9c7",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_m2m)}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update dependency via m2m</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update dependency with not found role id | 404" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "ac953811-8268-403a-0000-fd88a100c9c7",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_admin)}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update dependency with not found role id 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update not found dependency | 404" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "${id_resource_role_2}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${id_resource_role_2}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update not found dependency 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update dependency with invalid body | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "resourceRoleId": "${id_resource_role_1}",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_admin)}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update dependency with invalid body 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update dependency via forbidden m2m | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "phaseId": "${phase_id}",
 + "resourceRoleId": "ac953811-8268-403a-ac06-fd88a100c9c7",
 + "phaseState": false
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_admin)}</stringProp> + <stringProp name="HTTPSampler.method">PUT</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">update dependency via forbidden m2m 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token_read)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Delete Dependency [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete dependency via admin" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_admin)}</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete dependency via admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete dependency via M2M" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_m2m)}</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete dependency via m2m</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete not found dependency | 404" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/cfe12b3f-2a12-4639-9d8b-ec86726f76b0</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - delete not found dependency 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token_modify)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete dependency via invalid id | 400" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/12345</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete dependency via invalid id 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token_modify)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete dependency via forbidden m2m | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_m2m)}</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete dependency via forbidden m2m 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token_read)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete dependency via forbidden user | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles/Phase-dependencies/${__property(dependency_id_m2m)}</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete dependency via forbidden user 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_3_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Resources" enabled="true"/> + <hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Create Resource [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource {Admin}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_5}",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_admin</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_admin, ${dependency_id_admin})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create another resource for ${handle}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create another resource for hohosky</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource {User}" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_2}",
 + "memberHandle": "${handle_3}",
 + "roleId": "${id_resource_role_observer}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource by user</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(copilotusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource {M2M}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource using m2m token</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource for challenge ${challenge_id_2}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_2}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_review}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource for challenge 2</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource for challenge ${challenge_id_3}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_observer}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource for challenge 3</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="id Extractor" enabled="true"> + <stringProp name="JSONPostProcessor.referenceNames">dependency_id_m2m</stringProp> + <stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp> + <stringProp name="JSONPostProcessor.match_numbers"></stringProp> + </JSONPostProcessor> + <hashTree/> + <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion [${id}]" enabled="true"> + <stringProp name="BeanShellAssertion.query">${__setProperty(dependency_id_m2m, ${dependency_id_m2m})};</stringProp> + <stringProp name="BeanShellAssertion.filename"></stringProp> + <stringProp name="BeanShellAssertion.parameters"></stringProp> + <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> + </BeanShellAssertion> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource using inactive role | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "469341ed-19b7-44a4-a8ac-c2bf74544748"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource using inactive role 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource using unexisted role | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "unexisted_role"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource using unexisted role 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource invalid challengeId | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "fe6d0a58ce7d4521-8501-11112b1c0391",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_observer}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource invalid challengeId 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource invalid parameter | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle1": "${handle_Invalid}",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource invalid parameter 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource member doesn't exist | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "abc_Invalid",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource member doesn't exist 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource using invalid token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource using invalid token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource using expired token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource using expired token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create resource challengeId missing | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">create resource challengeId missing 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Get Resource [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by admin" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources by admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by admin with member ID" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}&memberId=${member_id_4}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources by admin with member ID</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by admin with member handle" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}&memberHandle=${handle_3}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources by admin with member handle</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by user has full-access permission" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources by user has full-access permission</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(copilotusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by user has full-access permission with member ID" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}&memberId=${member_id_1}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources by user has full-access permission with member ID</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by user has full-access permission with member handle" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}&memberId=${handle_1}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Get resources by user has full-access permission with member handle</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources using m2m token" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources using m2m token</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources using m2m token with member ID" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}&memberId=${member_id_1}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources using m2m token with member ID</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources using m2m token with member handle" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}&memberId=${handle_1}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources using m2m token with member handle</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources invalid challenge id | 400" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=invalid</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources invalid challenge id 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources using invalid token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources using invalid token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources using expire token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources using expire token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources by user without full-access permission | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources by user without full-access permission 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_3_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources using invalid m2m token | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources using invalid m2m token 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resources challenge not found | 404" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources?challengeId=${challenge_id_not_found}</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get resources challenge not found 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="List challenge by Member [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get challenges hohosky can access" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources/16096823/challenges</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Get challenges hohosky can access</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get challenges ghostar can access" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources/151743/challenges</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get challenges ghostar can access</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get challenges ghostar can access with filter" enabled="true"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources/151743/challenges?resourceRoleId=318b9c07-079a-42d9-a81f-b96be1dc1099</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get challenges ghostar can access with filter</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get challenges for a non existed user 400" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources/111111111/challenges</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">get challenges for a non existed user | 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles using expire token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using expire token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles without token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles without token 401</stringProp> + </HTTPSamplerProxy> + <hashTree/> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles using invalid token | 401" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using invalid token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get resource roles using invalid m2m token | 403" enabled="false"> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resource-roles?isActive=true</stringProp> + <stringProp name="HTTPSampler.method">GET</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">failure - get resource roles using invalid m2m token 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Delete Resource [✔]" enabled="true"/> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource {Admin}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_5}",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource by admin</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete another resource for ${handle}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Create another resource for ${handle}</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource {User}" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_2}",
 + "memberHandle": "${handle_3}",
 + "roleId": "${id_resource_role_observer}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource by user</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(copilotusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource {M2M}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource using m2m token</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource for challenge ${challenge_id_2}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_2}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_review}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource for challenge ${challenge_id_2}</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource for challenge ${challenge_id_3}" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_observer}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource for challenge ${challenge_id_3}</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete obtainable resource by user itself" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_1}",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete obtainable resource by user itself</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(copilotusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete other's self obtainable resource by user | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "lars2520",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete other's self obtainable resource by user 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_1_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource that user doesn't have | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "hohoSKY",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource that user doesn't have 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource invalid challenge id | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "invalid",
 + "memberHandle": "hohoSKY",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">Delete resource invalid challenge id 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource using unexisted role | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_2}",
 + "roleId": "2a4dc376-a31c-4d00-b173-13934d89e200"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource using unexisted role 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource member doesn't exist | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "${handle_Invalid}",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource member doesn't exist 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource invalid parameter | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": true,
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource invalid parameter 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource using invalid token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource using invalid token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${invalid_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource using expired token | 401" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_observer}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource using expired token 401</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${expire_token}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource with invalid user | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource with invalid user 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(normaluser_1_token)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource using invalid m2m token | 403" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "${challenge_id_3}",
 + "memberHandle": "tonyj",
 + "roleId": "${id_resource_role_submitter}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource using invalid m2m token 403</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(m2m_token_read)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource challenge not found | 404" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "challengeId": "b197d41c-92f1-4d94-0000-87a13e83e053",
 + "memberHandle": "hohoSKY",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource challenge not found 404</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete resource missing challengeId | 400" enabled="false"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "memberHandle": "HoHoSKY",
 + "roleId": "${id_resource_role_copilot}"
 +}</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">${server-url}</stringProp> + <stringProp name="HTTPSampler.port"></stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/v5/resources</stringProp> + <stringProp name="HTTPSampler.method">DELETE</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + <stringProp name="TestPlan.comments">delete resource missing challengeId 400</stringProp> + </HTTPSamplerProxy> + <hashTree> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Authorization</stringProp> + <stringProp name="Header.value">Bearer ${__property(adminusertoken)}</stringProp> + </elementProp> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">content-type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> + </hashTree> + </hashTree> + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename">report.csv</stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/test/jmeter/data/challenge-data.json b/test/jmeter/data/challenge-data.json new file mode 100644 index 0000000..04a5287 --- /dev/null +++ b/test/jmeter/data/challenge-data.json @@ -0,0 +1,27 @@ +[ + { + "Copilot_resource_role_id": "838b231b-8ab6-4e4f-96d3-f1d483e0c30e", + "challenge_id": "b197d41c-92f1-4d94-911a-87a13e83e053", + "challenge_id_2": "a494c004-d303-48e2-afe0-0ce9786ab2d2", + "challenge_id_3": "53383a29-80ef-4230-b48f-08a6d302f1ed", + "phase_id": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "handle_1": "TCConnCopilot", + "member_id_1": 41002174, + "handle_2": "ghostar", + "member_id_2": 151743, + "handle_3": "pshah_copilot", + "member_id_3": 41002174, + "handle_4": "TopConnCustomer", + "member_id_4": 40158997, + "handle_5": "mess", + "member_id_5": 305384, + "handle_Invalid": "abc", + "challenge_id_not_found": "xxxd0a58-ce7d-4521-8501-b8132b1c0391", + "id_resource_role_1": "d663fc84-5c37-43d1-a537-793feffb7667", + "id_resource_role_2": "92276e89-08cb-4071-a59b-ffc8f10b0ec4", + "id_resource_role_copilot": "cfe12b3f-2a24-4639-9d8b-ec86726f76bd", + "id_resource_role_review": "318b9c07-079a-42d9-a81f-b96be1dc1099", + "id_resource_role_submitter": "732339e7-8e30-49d7-9198-cccf9451e221", + "id_resource_role_observer": "2a4dc376-a31c-4d00-b173-13934d89e286" + } + ] \ No newline at end of file diff --git a/test/jmeter/data/resource-role-phase-dependency/create-dependency-with-invalid-data.json b/test/jmeter/data/resource-role-phase-dependency/create-dependency-with-invalid-data.json new file mode 100644 index 0000000..22f8b78 --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/create-dependency-with-invalid-data.json @@ -0,0 +1,59 @@ +[ + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "", + "COPILOT_RESOURCE_ROLE_ID": "", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" is not allowed to be empty" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "not_guid", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" must be a valid GUID" + }, + { + "required_field_1": "phaseIdNotProvided", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" is required" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseStateNotProvided", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseState\" is required" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "COPILOT_RESOURCE_ROLE_ID": "not a guid", + "phaseState": true, + "httpCode": 400, + "message": "\"resourceRoleId\" must be a valid GUID" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "COPILOT_RESOURCE_ROLE_ID": "", + "phaseState": true, + "httpCode": 400, + "message": "\"resourceRoleId\" is not allowed to be empty" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role-phase-dependency/create-dependency-with-invalid-tokens.json b/test/jmeter/data/resource-role-phase-dependency/create-dependency-with-invalid-tokens.json new file mode 100644 index 0000000..3f9931d --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/create-dependency-with-invalid-tokens.json @@ -0,0 +1,27 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "", + "httpCode": 401, + "message": "No token provided." + } +] diff --git a/test/jmeter/data/resource-role-phase-dependency/create-dependency.json b/test/jmeter/data/resource-role-phase-dependency/create-dependency.json new file mode 100644 index 0000000..4469b8f --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/create-dependency.json @@ -0,0 +1,14 @@ +[ + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": true, + "httpCode": 200, + "idLabel": "DEPENDENCY_ID_3" + }, + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": false, + "httpCode": 200, + "idLabel": "DEPENDENCY_ID_4" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role-phase-dependency/delete-dependency-with-invalid-tokens.json b/test/jmeter/data/resource-role-phase-dependency/delete-dependency-with-invalid-tokens.json new file mode 100644 index 0000000..75af002 --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/delete-dependency-with-invalid-tokens.json @@ -0,0 +1,26 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "httpCode": 401, + "message": "No token provided." + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role-phase-dependency/get-dependencies-with-invalid-data.json b/test/jmeter/data/resource-role-phase-dependency/get-dependencies-with-invalid-data.json new file mode 100644 index 0000000..b566912 --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/get-dependencies-with-invalid-data.json @@ -0,0 +1,34 @@ +[ + { + "phaseId": "", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" is not allowed to be empty" + }, + { + "phaseId": "not_guid", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" must be a valid GUID" + }, + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": 123, + "httpCode": 400, + "message": "\"phaseState\" must be a boolean" + }, + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "COPILOT_RESOURCE_ROLE_ID": "not a guid", + "phaseState": true, + "httpCode": 400, + "message": "\"resourceRoleId\" must be a valid GUID" + }, + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "COPILOT_RESOURCE_ROLE_ID": "", + "phaseState": true, + "httpCode": 400, + "message": "\"resourceRoleId\" is not allowed to be empty" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role-phase-dependency/get-dependency-with-invalid-tokens.json b/test/jmeter/data/resource-role-phase-dependency/get-dependency-with-invalid-tokens.json new file mode 100644 index 0000000..3f9931d --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/get-dependency-with-invalid-tokens.json @@ -0,0 +1,27 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "", + "httpCode": 401, + "message": "No token provided." + } +] diff --git a/test/jmeter/data/resource-role-phase-dependency/update-dependency-with-invalid-data.json b/test/jmeter/data/resource-role-phase-dependency/update-dependency-with-invalid-data.json new file mode 100644 index 0000000..22f8b78 --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/update-dependency-with-invalid-data.json @@ -0,0 +1,59 @@ +[ + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "", + "COPILOT_RESOURCE_ROLE_ID": "", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" is not allowed to be empty" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "not_guid", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" must be a valid GUID" + }, + { + "required_field_1": "phaseIdNotProvided", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseId\" is required" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseStateNotProvided", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": true, + "httpCode": 400, + "message": "\"phaseState\" is required" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "COPILOT_RESOURCE_ROLE_ID": "not a guid", + "phaseState": true, + "httpCode": 400, + "message": "\"resourceRoleId\" must be a valid GUID" + }, + { + "required_field_1": "phaseId", + "required_field_2": "resourceRoleId", + "required_field_3": "phaseState", + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "COPILOT_RESOURCE_ROLE_ID": "", + "phaseState": true, + "httpCode": 400, + "message": "\"resourceRoleId\" is not allowed to be empty" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role-phase-dependency/update-dependency-with-invalid-tokens.json b/test/jmeter/data/resource-role-phase-dependency/update-dependency-with-invalid-tokens.json new file mode 100644 index 0000000..3f9931d --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/update-dependency-with-invalid-tokens.json @@ -0,0 +1,27 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "", + "httpCode": 401, + "message": "No token provided." + } +] diff --git a/test/jmeter/data/resource-role-phase-dependency/update-dependency.json b/test/jmeter/data/resource-role-phase-dependency/update-dependency.json new file mode 100644 index 0000000..6eea897 --- /dev/null +++ b/test/jmeter/data/resource-role-phase-dependency/update-dependency.json @@ -0,0 +1,12 @@ +[ + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": true, + "httpCode": 200 + }, + { + "phaseId": "aa5a3f78-79e0-4bf7-93ff-b11e8f5b398b", + "phaseState": false, + "httpCode": 200 + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/create-resource-role-by-admin.json b/test/jmeter/data/resource-role/create-resource-role-by-admin.json new file mode 100644 index 0000000..5e3123f --- /dev/null +++ b/test/jmeter/data/resource-role/create-resource-role-by-admin.json @@ -0,0 +1,58 @@ +[ + { + "name": "POSTMANE2E-co-pilot", + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-Observer", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": false, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-submitter", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": true, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-reviewer", + "fullReadAccess": false, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "invalid": "invalid", + "fullReadAccess": true, + "fullWriteAccess": false, + "selfObtainable": false, + "isActive": 5, + "httpCode": 400 + }, + { + "name": "POSTMANE2E-failure-test", + "fullReadAccess": true, + "fullWriteAccess": false, + "selfObtainable": false, + "isActive": 5, + "httpCode": 400 + }, + { + "name": "POSTMANE2E-submitter", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": true, + "httpCode": 409 + } +] diff --git a/test/jmeter/data/resource-role/create-resource-role-by-m2m.json b/test/jmeter/data/resource-role/create-resource-role-by-m2m.json new file mode 100644 index 0000000..fcf816e --- /dev/null +++ b/test/jmeter/data/resource-role/create-resource-role-by-m2m.json @@ -0,0 +1,55 @@ +[ + { + "name": "POSTMANE2E-co-pilot-m2m", + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-Observer-m2m", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": false, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-submitter-m2m", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": true, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-reviewer-m2m", + "fullReadAccess": false, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "invalid": "invalid-m2m", + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "httpCode": 400 + }, + { + "name": "POSTMANE2E-failure-test-m2m", + "fullReadAccess": true, + "fullWriteAccess": false, + "httpCode": 400 + }, + { + "name": "POSTMANE2E-submitter-m2m", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": true, + "httpCode": 409 + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/create-resource-role-with-invalid-data.json b/test/jmeter/data/resource-role/create-resource-role-with-invalid-data.json new file mode 100644 index 0000000..9a05fba --- /dev/null +++ b/test/jmeter/data/resource-role/create-resource-role-with-invalid-data.json @@ -0,0 +1,79 @@ +[ + { + "name": "", + "fullReadAccess": true, + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": false, + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "name": "POSTMANE2E-co-pilot", + "fullReadAccess": true, + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainableNotProvided", + "isActive": true, + "selfObtainable": false, + "httpCode": 400, + "message": "\"selfObtainable\" is required" + }, + { + "name": "POSTMANE2E-co-pilot", + "fullReadAccess": true, + "fullWriteAccess": false, + "required_field_1": "isActiveNotProvided", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": true, + "httpCode": 400, + "message": "\"isActive\" is required" + }, + { + "name": "POSTMANE2E-co-pilot", + "fullReadAccess": "123", + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": false, + "httpCode": 400, + "message": "\"fullReadAccess\" must be a boolean" + }, + { + "name": "POSTMANE2E-Observer", + "fullReadAccess": true, + "fullWriteAccess": "123", + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": false, + "selfObtainable": false, + "httpCode": 400, + "message": "\"fullWriteAccess\" must be a boolean" + }, + { + "name": "POSTMANE2E-submitter", + "fullReadAccess": true, + "fullWriteAccess": true, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": "123", + "selfObtainable": true, + "httpCode": 400, + "message": "\"isActive\" must be a boolean" + }, + { + "name": "POSTMANE2E-reviewer", + "fullReadAccess": false, + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": "123", + "httpCode": 400, + "message": "\"selfObtainable\" must be a boolean" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/create-resource-role-with-invalid-tokens.json b/test/jmeter/data/resource-role/create-resource-role-with-invalid-tokens.json new file mode 100644 index 0000000..3f9931d --- /dev/null +++ b/test/jmeter/data/resource-role/create-resource-role-with-invalid-tokens.json @@ -0,0 +1,27 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "", + "httpCode": 401, + "message": "No token provided." + } +] diff --git a/test/jmeter/data/resource-role/get-resource-role-with-invalid-data.json b/test/jmeter/data/resource-role/get-resource-role-with-invalid-data.json new file mode 100644 index 0000000..00181e7 --- /dev/null +++ b/test/jmeter/data/resource-role/get-resource-role-with-invalid-data.json @@ -0,0 +1,79 @@ +[ + { + "name": "", + "legacyId": 1, + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "invalid": "", + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "name": "POSTMANE2E-test-copilot", + "legacyId": "", + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "invalid": "", + "httpCode": 400, + "message": "\"legacyId\" must be a number" + }, + { + "name": "POSTMANE2E-test-copilot", + "legacyId": 1, + "fullReadAccess": 123, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "invalid": "", + "httpCode": 400, + "message": "\"fullReadAccess\" must be a boolean" + }, + { + "name": "POSTMANE2E-test-copilot", + "legacyId": 1, + "fullReadAccess": true, + "fullWriteAccess": 123, + "isActive": true, + "selfObtainable": false, + "invalid": "", + "httpCode": 400, + "message": "\"fullWriteAccess\" must be a boolean" + }, + { + "name": "POSTMANE2E-test-copilot", + "legacyId": 1, + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": 123, + "selfObtainable": false, + "invalid": "", + "httpCode": 400, + "message": "\"isActive\" must be a boolean" + }, + { + "name": "POSTMANE2E-test-copilot", + "legacyId": 1, + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": 123, + "invalid": "", + "httpCode": 400, + "message": "\"selfObtainable\" must be a boolean" + }, + { + "name": "POSTMANE2E-test-copilot", + "legacyId": 1, + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "invalid": "invalid", + "httpCode": 400, + "message": "\"invalid\" is not allowed" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/update-resource-role-by-admin.json b/test/jmeter/data/resource-role/update-resource-role-by-admin.json new file mode 100644 index 0000000..acab0d5 --- /dev/null +++ b/test/jmeter/data/resource-role/update-resource-role-by-admin.json @@ -0,0 +1,48 @@ +[ + { + "name": "POSTMANE2E-UPDATE_CO-PILOT-admin", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_OBSERVER-admin", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": false, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_SUBMITTER-admin", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": true, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_REVIEWER-admin", + "fullReadAccess": false, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_REVIEWER-admin1", + "isActive": true, + "selfObtainable": false, + "httpCode": 400 + }, + { + "name": "POSTMANE2E-SUBMITTER", + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 409 + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/update-resource-role-by-m2m.json b/test/jmeter/data/resource-role/update-resource-role-by-m2m.json new file mode 100644 index 0000000..d251464 --- /dev/null +++ b/test/jmeter/data/resource-role/update-resource-role-by-m2m.json @@ -0,0 +1,48 @@ +[ + { + "name": "POSTMANE2E-UPDATE_CO-PILOT-m2m", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_OBSERVER-m2m", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": false, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_SUBMITTER-m2m", + "fullReadAccess": true, + "fullWriteAccess": true, + "isActive": true, + "selfObtainable": true, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_REVIEWER-m2m", + "fullReadAccess": false, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 200 + }, + { + "name": "POSTMANE2E-UPDATE_REVIEWER-m2m1", + "isActive": true, + "selfObtainable": false, + "httpCode": 400 + }, + { + "name": "POSTMANE2E-SUBMITTER", + "fullReadAccess": true, + "fullWriteAccess": false, + "isActive": true, + "selfObtainable": false, + "httpCode": 409 + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/update-resource-role-with-invalid-data.json b/test/jmeter/data/resource-role/update-resource-role-with-invalid-data.json new file mode 100644 index 0000000..ab0c78b --- /dev/null +++ b/test/jmeter/data/resource-role/update-resource-role-with-invalid-data.json @@ -0,0 +1,79 @@ +[ + { + "name": "", + "fullReadAccess": true, + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": false, + "httpCode": 400, + "message": "\"name\" is not allowed to be empty" + }, + { + "name": "POSTMANE2E-update-co-pilot", + "fullReadAccess": true, + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainableNotProvided", + "isActive": true, + "selfObtainable": false, + "httpCode": 400, + "message": "\"selfObtainable\" is required" + }, + { + "name": "POSTMANE2E-update-co-pilot", + "fullReadAccess": true, + "fullWriteAccess": false, + "required_field_1": "isActiveNotProvided", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": true, + "httpCode": 400, + "message": "\"isActive\" is required" + }, + { + "name": "POSTMANE2E-update-co-pilot", + "fullReadAccess": "123", + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": false, + "httpCode": 400, + "message": "\"fullReadAccess\" must be a boolean" + }, + { + "name": "POSTMANE2E-Observer", + "fullReadAccess": true, + "fullWriteAccess": "123", + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": false, + "selfObtainable": false, + "httpCode": 400, + "message": "\"fullWriteAccess\" must be a boolean" + }, + { + "name": "POSTMANE2E-update-submitter", + "fullReadAccess": true, + "fullWriteAccess": true, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": "123", + "selfObtainable": true, + "httpCode": 400, + "message": "\"isActive\" must be a boolean" + }, + { + "name": "POSTMANE2E-update-reviewer", + "fullReadAccess": false, + "fullWriteAccess": false, + "required_field_1": "isActive", + "required_field_2": "selfObtainable", + "isActive": true, + "selfObtainable": "123", + "httpCode": 400, + "message": "\"selfObtainable\" must be a boolean" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource-role/update-resource-role-with-invalid-tokens.json b/test/jmeter/data/resource-role/update-resource-role-with-invalid-tokens.json new file mode 100644 index 0000000..3f9931d --- /dev/null +++ b/test/jmeter/data/resource-role/update-resource-role-with-invalid-tokens.json @@ -0,0 +1,27 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "You are not allowed to perform this action!" + }, + { + "jwtToken": "", + "httpCode": 401, + "message": "No token provided." + } +] diff --git a/test/jmeter/data/resource/create-resource-by-admin.json b/test/jmeter/data/resource/create-resource-by-admin.json new file mode 100644 index 0000000..41ab013 --- /dev/null +++ b/test/jmeter/data/resource/create-resource-by-admin.json @@ -0,0 +1,18 @@ +[ + { + "memberHandle": "HoHoSKY", + "httpCode": 200 + }, + { + "memberHandle": "mess", + "httpCode": 200 + }, + { + "memberHandle": "x", + "httpCode": 200 + }, + { + "memberHandle": "TonyJ", + "httpCode": 200 + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/create-resource-by-m2m.json b/test/jmeter/data/resource/create-resource-by-m2m.json new file mode 100644 index 0000000..6c7dbc3 --- /dev/null +++ b/test/jmeter/data/resource/create-resource-by-m2m.json @@ -0,0 +1,18 @@ +[ + { + "memberHandle": "iamtong", + "httpCode": 200 + }, + { + "memberHandle": "jack", + "httpCode": 200 + }, + { + "memberHandle": "onsky", + "httpCode": 200 + }, + { + "memberHandle": "ghostar", + "httpCode": 200 + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/create-resource-with-invalid-data.json b/test/jmeter/data/resource/create-resource-with-invalid-data.json new file mode 100644 index 0000000..49ec7f7 --- /dev/null +++ b/test/jmeter/data/resource/create-resource-with-invalid-data.json @@ -0,0 +1,104 @@ +[ + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "CHALLENGE_ID": "", + "httpCode": 400, + "message": "\"challengeId\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId_not_provided", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "httpCode": 400, + "message": "\"challengeId\" is required" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "CHALLENGE_ID": "123", + "httpCode": 400, + "message": "\"challengeId\" must be a valid GUID" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "CHALLENGE_ID": "11111111-ce7d-4521-8501-b8132b1c0391", + "httpCode": 404, + "message": "Challenge of id 11111111-ce7d-4521-8501-b8132b1c0391 is not found." + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "", + "httpCode": 400, + "message": "\"memberHandle\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle_not_provided", + "required_field_3": "roleId", + "memberHandle": "heffan", + "httpCode": 400, + "message": "\"memberHandle\" is required" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "some_not_exist_handle", + "httpCode": 400, + "message": "User with handle: some_not_exist_handle doesn't exist" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "COPILOT_RESOURCE_ROLE_ID": "", + "httpCode": 400, + "message": "\"roleId\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId_not_provided", + "memberHandle": "heffan", + "httpCode": 400, + "message": "\"roleId\" is required" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "COPILOT_RESOURCE_ROLE_ID": "123", + "httpCode": 400, + "message": "\"roleId\" must be a valid GUID" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "heffan", + "COPILOT_RESOURCE_ROLE_ID": "11111111-ce7d-4521-8501-b8132b1c0771", + "httpCode": 400, + "message": "No resource role found with id: 11111111-ce7d-4521-8501-b8132b1c0771." + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "ghostar", + "httpCode": 409, + "message": "User ghostar already has resource with roleId:" + } +] diff --git a/test/jmeter/data/resource/create-resource-with-invalid-tokens.json b/test/jmeter/data/resource/create-resource-with-invalid-tokens.json new file mode 100644 index 0000000..0628a63 --- /dev/null +++ b/test/jmeter/data/resource/create-resource-with-invalid-tokens.json @@ -0,0 +1,22 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "jwtToken": "Bearer {{user_token}}", + "httpCode": 403, + "message": "Only M2M, admin or user with full access role can perform this action" + }, + { + "jwtToken": "", + "httpCode": 401, + "message": "No token provided." + } +] diff --git a/test/jmeter/data/resource/delete-resource-with-invalid-parameter.json b/test/jmeter/data/resource/delete-resource-with-invalid-parameter.json new file mode 100644 index 0000000..dd92fce --- /dev/null +++ b/test/jmeter/data/resource/delete-resource-with-invalid-parameter.json @@ -0,0 +1,70 @@ +[ + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "mess", + "CHALLENGE_ID": "11111111-ce7d-4521-8501-b8132b1c0391", + "httpCode": 404, + "message": "Challenge of id 11111111-ce7d-4521-8501-b8132b1c0391 is not found." + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "mess", + "COPILOT_RESOURCE_ROLE_ID": "11111111-ce7d-4521-8501-b8132b1c0391", + "httpCode": 400, + "message": "No resource role found with id: 11111111-ce7d-4521-8501-b8132b1c0391." + }, + { + "required_field_1": "challengeId_not_provided", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "mess", + "httpCode": 400, + "message": "\"challengeId\" is required" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle_not_provided", + "required_field_3": "roleId", + "memberHandle": "mess", + "httpCode": 400, + "message": "\"memberHandle\" is required" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId_not_provided", + "memberHandle": "mess", + "httpCode": 400, + "message": "\"roleId\" is required" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "CHALLENGE_ID": "", + "memberHandle": "mess", + "httpCode": 400, + "message": "\"challengeId\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "memberHandle": "", + "httpCode": 400, + "message": "\"memberHandle\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberHandle", + "required_field_3": "roleId", + "COPILOT_RESOURCE_ROLE_ID": "", + "memberHandle": "mess", + "httpCode": 400, + "message": "\"roleId\" is not allowed to be empty" + } +] diff --git a/test/jmeter/data/resource/delete-resource-with-invalid-tokens.json b/test/jmeter/data/resource/delete-resource-with-invalid-tokens.json new file mode 100644 index 0000000..32f548a --- /dev/null +++ b/test/jmeter/data/resource/delete-resource-with-invalid-tokens.json @@ -0,0 +1,14 @@ +[ + { + "jwtToken": "Bearer invalid", + "httpCode": 401 + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "httpCode": 401 + }, + { + "jwtToken": "", + "httpCode": 401 + } +] diff --git a/test/jmeter/data/resource/get-resources-by-member-with-different-users.json b/test/jmeter/data/resource/get-resources-by-member-with-different-users.json new file mode 100644 index 0000000..a00e295 --- /dev/null +++ b/test/jmeter/data/resource/get-resources-by-member-with-different-users.json @@ -0,0 +1,18 @@ +[ + { + "jwtToken": "Bearer {{user_token}}", + "memberId": "16096823" + }, + { + "jwtToken": "Bearer {{copilot_token}}", + "memberId": "16096823" + }, + { + "jwtToken": "Bearer {{admin_token}}", + "memberId": "16096823" + }, + { + "jwtToken": "Bearer {{M2M_TOKEN}}", + "memberId": "not_exist_user" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/get-resources-by-member-with-invalid-parameter.json b/test/jmeter/data/resource/get-resources-by-member-with-invalid-parameter.json new file mode 100644 index 0000000..9e4420d --- /dev/null +++ b/test/jmeter/data/resource/get-resources-by-member-with-invalid-parameter.json @@ -0,0 +1,19 @@ +[ + { + "COPILOT_RESOURCE_ROLE_ID": "", + "invalid": "", + "httpCode": 400, + "message": "\"resourceRoleId\" is not allowed to be empty" + }, + { + "COPILOT_RESOURCE_ROLE_ID": "11111", + "invalid": "", + "httpCode": 400, + "message": "\"resourceRoleId\" must be a valid GUID" + }, + { + "invalid": "invalid", + "httpCode": 400, + "message": "\"invalid\" is not allowed" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/get-resources-by-member-with-invalid-tokens.json b/test/jmeter/data/resource/get-resources-by-member-with-invalid-tokens.json new file mode 100644 index 0000000..d584dde --- /dev/null +++ b/test/jmeter/data/resource/get-resources-by-member-with-invalid-tokens.json @@ -0,0 +1,19 @@ +[ + { + "jwtToken": "Bearer invalid", + "memberId": "16096823", + "httpCode": 401, + "message": "Invalid Token." + }, + { + "jwtToken": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIiwiQ29ubmVjdCBTdXBwb3J0IiwiYWRtaW5pc3RyYXRvciIsInRlc3RSb2xlIiwiYWFhIiwidG9ueV90ZXN0XzEiLCJDb25uZWN0IE1hbmFnZXIiLCJDb25uZWN0IEFkbWluIiwiY29waWxvdCIsIkNvbm5lY3QgQ29waWxvdCBNYW5hZ2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJUb255SiIsImV4cCI6MTU1MTA2MzIxMSwidXNlcklkIjoiODU0Nzg5OSIsImlhdCI6MTU1MTA1MzIxMSwiZW1haWwiOiJ0amVmdHMrZml4QHRvcGNvZGVyLmNvbSIsImp0aSI6ImY5NGQxZTI2LTNkMGUtNDZjYS04MTE1LTg3NTQ1NDRhMDhmMSJ9.97-pjuSGGqDAqK2FG2yi_3nmzB7ZMXQwtG0bi8_PlKk", + "memberId": "16096823", + "httpCode": 401, + "message": "Failed to authenticate token." + }, + { + "memberId": "16096823", + "httpCode": 401, + "message": "No token provided." + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/get-resources-by-member-with-resource-role.json b/test/jmeter/data/resource/get-resources-by-member-with-resource-role.json new file mode 100644 index 0000000..cbc555d --- /dev/null +++ b/test/jmeter/data/resource/get-resources-by-member-with-resource-role.json @@ -0,0 +1,14 @@ +[ + { + "memberId": "16096823" + }, + { + "memberId": "16096823" + }, + { + "memberId": "16096823" + }, + { + "memberId": "not_exist_user" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/get-resources-with-all-parameters.json b/test/jmeter/data/resource/get-resources-with-all-parameters.json new file mode 100644 index 0000000..1c11ebe --- /dev/null +++ b/test/jmeter/data/resource/get-resources-with-all-parameters.json @@ -0,0 +1,26 @@ +[ + { + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc" + }, + { + "page": 2, + "perPage": 4, + "memberId": 105878, + "memberHandle": "x", + "sortBy": "memberHandle", + "sortOrder": "desc" + }, + { + "page": 1, + "perPage": 10, + "memberId": 111036, + "memberHandle": "jack", + "sortBy": "memberHandle", + "sortOrder": "asc" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/get-resources-with-invalid-data.json b/test/jmeter/data/resource/get-resources-with-invalid-data.json new file mode 100644 index 0000000..cf78f51 --- /dev/null +++ b/test/jmeter/data/resource/get-resources-with-invalid-data.json @@ -0,0 +1,242 @@ +[ + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "CHALLENGE_ID": "", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"challengeId\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId_not_provided", + "required_field_2": "memberId_not_provided", + "required_field_3": "memberHandle_not_provided", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "At least one of the following parameters is required: [challengeId, memberId, memberHandle]" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": -1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"page\" must be larger than or equal to 1" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 0, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"page\" must be larger than or equal to 1" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": "", + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"page\" must be a number" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": -1, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"perPage\" must be larger than or equal to 1" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 0, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "invalid": "", + "httpCode": 400, + "message": "\"perPage\" must be larger than or equal to 1" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": "", + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"perPage\" must be a number" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 10, + "memberId": "", + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"memberId\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"memberHandle\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"sortBy\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberId", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"sortBy\" must be one of [memberHandle, created]" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "", + "httpCode": 400, + "message": "\"sortOrder\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "invalid", + "httpCode": 400, + "message": "\"sortOrder\" must be one of [desc, asc]" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "CHALLENGE_ID": "123", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"challengeId\" must be a valid GUID" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "CHALLENGE_ID": "11111111-ce7d-4521-8501-b8132b1c0391", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 404, + "message": "Challenge ID 11111111-ce7d-4521-8501-b8132b1c0391 not found" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "COPILOT_RESOURCE_ROLE_ID": "", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"roleId\" is not allowed to be empty" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "COPILOT_RESOURCE_ROLE_ID": "123", + "page": 1, + "perPage": 10, + "memberId": 305384, + "memberHandle": "mess", + "sortBy": "memberHandle", + "sortOrder": "desc", + "httpCode": 400, + "message": "\"roleId\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/jmeter/data/resource/get-resources-with-required-parameter.json b/test/jmeter/data/resource/get-resources-with-required-parameter.json new file mode 100644 index 0000000..7403d8a --- /dev/null +++ b/test/jmeter/data/resource/get-resources-with-required-parameter.json @@ -0,0 +1,30 @@ +[ + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle", + "memberId": 305384, + "memberHandle": "mess" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId_only_challengeId_provided", + "required_field_3": "memberHandle_only_challengeId_provided", + "memberId": 305384, + "memberHandle": "mess" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId", + "required_field_3": "memberHandle_is_not_provided", + "memberId": 305384, + "memberHandle": "mess" + }, + { + "required_field_1": "challengeId", + "required_field_2": "memberId_is_not_provided", + "required_field_3": "memberHandle", + "memberId": 305384, + "memberHandle": "mess" + } +] \ No newline at end of file diff --git a/test/jmeter/data/token-data.json b/test/jmeter/data/token-data.json new file mode 100644 index 0000000..e0c40b6 --- /dev/null +++ b/test/jmeter/data/token-data.json @@ -0,0 +1,9 @@ +[ +{ + "expire_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRvcGNvZGVyY29ubmVjdCtNYW5hZ2VyQGdtYWlsLmNvbSIsIm5hbWUiOiJ0b3Bjb2RlcmNvbm5lY3QrTWFuYWdlckBnbWFpbC5jb20iLCJuaWNrbmFtZSI6IlRDQ29uTWFuYWdlciIsInBpY3R1cmUiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci9iNDU5OWMyNzFiZmE3NDhjNDNkOWU2NGM3ZTJmNDU4Nz9zPTQ4MCZyPXBnJmQ9aHR0cHMlM0ElMkYlMkZjZG4uYXV0aDAuY29tJTJGYXZhdGFycyUyRnRvLnBuZyIsInJvbGVzIjpbIlRvcGNvZGVyIFVzZXIiLCJDb25uZWN0IE1hbmFnZXIiXSwiYXBwX21ldGFkYXRhIjp7ImF1dGhvcml6YXRpb24iOnsiZ3JvdXBzIjpbXX19LCJhdXRob3JpemF0aW9uIjp7Imdyb3VwcyI6W119LCJncm91cHMiOltdLCJjbGllbnRJRCI6IkpGRG83SE1rZjBxMkNrVkZIb2p5M3pIV2FmemlwcmhUIiwiY3JlYXRlZF9hdCI6IjIwMTktMTEtMjZUMTE6MzQ6NTQuNzg3WiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpZGVudGl0aWVzIjpbeyJ1c2VyX2lkIjoiNDAxNTg5OTciLCJwcm92aWRlciI6ImF1dGgwIiwiY29ubmVjdGlvbiI6IlRDLVVzZXItRGF0YWJhc2UiLCJpc1NvY2lhbCI6ZmFsc2V9XSwidXBkYXRlZF9hdCI6IjIwMjEtMDYtMTRUMTA6MTU6MzMuODMxWiIsInVzZXJfaWQiOiJhdXRoMHw0MDE1ODk5NyIsInVzZXJfbWV0YWRhdGEiOnt9LCJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NDAxNTg5OTciLCJhdWQiOiJKRkRvN0hNa2YwcTJDa1ZGSG9qeTN6SFdhZnppcHJoVCIsImlhdCI6MTYyMzY2NTczNSwiZXhwIjoxOTgzNjY1NzM1fQ.awdiyOcqPysf7VJ8FfqMT_a_wOSloDk_TB1fsOYeB40", + "invalid_token": "B40bGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRvcGNvZGVyY29ubmVjdCtNYW5hZ2VyQGdtYWlsLmNvbSIsIm5hbWUiOiJ0b3Bjb2RlcmNvbm5lY3QrTWFuYWdlckBnbWFpbC5jb20iLCJuaWNrbmFtZSI6IlRDQ29uTWFuYWdlciIsInBpY3R1cmUiOiJodHRwcZmFsc2V9XSwidXBkYXRlZF9hdCI6IjIwMjEtMDYtMTRUMTA6MTU6MzMuODMxWiIsInVzZXJfaWQiOiJhdXRoMHw0MDE1ODk5NyIsInVzZXJfbWV0YWRhdGEiOnt9LCJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NDAxNTg5OTciLCJhdWQiOiJKRkRvN0hNa2Yw", + "invalid_m2m_token": "hbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.NTQuNzg3WiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpZGVudGl0aWVzIjpbeyJ1c2VyX2lkIjoiNDAxNTg5OTciLCJwcm92aWRlciI6ImF1dGgwIiwiY29ubmVjdGlvbiI6IlRDLVVzZXItRGF0YWJhc2UiLCJpc1NvY2lhbCI6ZmFsc2V9XSwidXBkYXRlZF9hdCI6IjIwMjEtMDYtMTRUMTA6MTU6MzMuODMxWiIsInVzZXJfaWQiOiJhdXRoMHw0MDE1ODk5NyIsInVzZXJfbWV0YWRhdGEiOnt9LCJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NDAxNTg5OTciLCJhdWQiOiJKRkRvN0hNa2Yw", + "expire_m2m_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5VSkZORGd4UlRVME5EWTBOVVkzTlRkR05qTXlRamxETmpOQk5UYzVRVUV3UlRFeU56TTJRUSJ9.eyJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiS0l4b0hrVXRCeFozUWRiQ2NEaVhmWVM4eGhxaTBEQnFAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vbTJtLnRvcGNvZGVyLWRldi5jb20vIiwiaWF0IjoxNjI0MTAwNjg4LCJleHAiOjE2MjQxODcwODgsImF6cCI6IktJeG9Ia1V0QnhaM1FkYkNjRGlYZllTOHhocWkwREJxIiwic2NvcGUiOiJkZWxldGU6cmVzb3VyY2VzIHVwZGF0ZTpyZXNvdXJjZXMgY3JlYXRlOnJlc291cmNlcyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyJ9.mIifZ-rwWmv1YtEKI6dSvFhAvOa5Sz1EqhLzbSzOA8crkBFMIOgTpCYJteW-NGNMiidy9oa4XmUB9crvxqeLAbDN4FNA0i7JUeM0BOlDMphxru6wo5MRJY_p1fR8VOs5b8oeavZbgpyt4zaE4VA6DL8nlw7YmrRYrCc3d5HXLQ-YQgQVsN1jGB6bncKHq7VzaIkUJOPdjFFAyluDU-x9QW4HmbYjP0VJVLQm86kzJ0E8ZogZ40Vo_xKVEHEJ0CrUeM5mMUqmJA8EXKFf_kAy3q2-_sABo67mvDmeuQco4S47YTls4vNTV7NYA5Mf20guwmo0VMPWtOFQlq8QX02vaQ" +} + +] \ No newline at end of file