Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merging development in master for Release 0.3.0 #28

Merged
merged 5 commits into from
Sep 11, 2020
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,3 @@
node_modules
/.circleci
/.sfdx
/.vscode
35 changes: 35 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach to Remote",
"address": "127.0.0.1",
"port": 9229
},
{
"name": "Unit Tests",
"type": "node",
"request": "launch",
"protocol": "inspector",
"program": "${workspaceRoot}/node_modules/.bin/_mocha",
"args": [
"--require",
"test/helpers/init.js",
"--require",
"ts-node/register",
"--require",
"source-map-support/register",
"--recursive",
"--reporter",
"spec",
"test/**/*.test.ts"
],
"cwd": "${workspaceRoot}"
}
]
}
15 changes: 15 additions & 0 deletions .vscode/provardx-copyright.code-snippets
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"Insert Copyright Header": {
"prefix": "copyright",
"body": [
"/*",
" * Copyright (c) 2020 Make Positive Provar Ltd",
" * All rights reserved.",
" * Licensed under the BSD 3-Clause license.",
" * For full license text, see LICENSE.md file in the repo root or https://opensource.org/licenses/BSD-3-Clause",
" */",
"$0"
],
"description": "Insert the Provar copyright header"
}
}
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.3.0] - 2020-09-11

### Fixed

- ProvarDX runtests, metadatacache command fails in case we are having special characters in Scratch Org password
- Enforced the required flags for ProvarDX metadatacache command
- Fixed the working of flags for ProvarDX metadatacache command in tandem

### Changed

- ProvarDX trademark changes
- Updated help messages for runtests

### Added

- Added .vscode folder containing
- `launch.json`: debug configuration for vscode
- `provardx-copyright.code-snippets`: used to add copyright tag on source files

## [0.2.2] - 2020-08-04

### Changed

- Updated help messages for runtests, validate commands displayed on running `sfdx provar --help`
- Updated company name in LICENSE.md

## [0.2.1] - 2020-07-08

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2020, ProvarTesting
Copyright (c) 2020, Make Positive Provar Ltd
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# provartesting/provardx
# ProvarDX™

ProvarDX is a Salesforce CLI Plugin for existing Provar customer to allow them to execute Provar Test Cases from the command line, leveraging the Salesforce CLI and SalesforceDX applications. This provides an alternative mechanism for running test cases than running under ANT.
ProvarDX is a Salesforce CLI Plugin for existing Provar customer to allow them to execute Provar Test Cases from the command line, leveraging the Salesforce CLI and SalesforceDX applications. This provides an alternative mechanism for running test cases than running under ANT.
You must be a Provar customer with a valid paid license to write and maintain your test cases.

[![Version](https://img.shields.io/npm/v/@provartesting/provardx.svg)](https://npmjs.org/package/@provartesting/provardx)
Expand Down Expand Up @@ -65,7 +65,7 @@ EXAMPLE

## `sfdx provar:metadatacache`

Command to pre-download any required metadata for a specified user or provar connections.
Command to pre-download any required metadata for a specified user or provar connection

```
USAGE
Expand Down Expand Up @@ -94,7 +94,7 @@ EXAMPLE

## `sfdx provar:runtests`

Runs the specified list of Provar test cases against the currently configured SFDX defaultuserrname
Runs a specified list of Provar test cases against a specified DevHub user alias or username

```
USAGE
Expand Down Expand Up @@ -126,7 +126,7 @@ OPTIONS
must be in JSON format and conform to the provardx-properties
JSON schema.

-s, --secrets=secrets Specify path to secrets file
-s, --secrets=secrets Specify a secrets encryption key for accessing the chosen project/environment.

--json format output as json

Expand All @@ -136,7 +136,7 @@ EXAMPLE

## `sfdx provar:validate`

Validate the provardx property file agains standard JSON Schema
Verify a property file to confirm it is a well formed provardx property file

```
USAGE
Expand Down
2 changes: 1 addition & 1 deletion messages/metadatacache.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commandDescription": "Command to pre-download any required metadata for a specified user or provar connections.",
"commandDescription": "Command to pre-download any required metadata for a specified user or provar connection",
"metadataLevelFlagDescription": "Permitted values reload (get all metadata - default) | refresh (only download changes).",
"cachePathFlagDescription": "Relative or full file path for where the metadata cache will be stored.",
"propertyFileFlagDescription": "Specify custom property file.",
Expand Down
4 changes: 2 additions & 2 deletions messages/runtests.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"commandDescription": "Runs the specified list of Provar test cases against the currently configured SFDX defaultuserrname",
"commandDescription": "Runs a specified list of Provar test cases against a specified DevHub user alias or username",
"propertyFileFlagDescription": "provardx-properties.json file. If filepath specified the filename will be assumed or it can be specified (.e.g myprops.json). File must be in JSON format and conform to the provardx-properties JSON schema.",
"fileSpecFlagDescription": "Specify comma-delimited, ordered paths of test cases to be executed. If not provided all tests in the PROJECTPATH will be executed.",
"connectionOverridefile": "Connection file in the format provardx-connection-schema.json providing a mapping between the Provar project Connection names and the target users to be used.",
"cachePathFlagDescription": "Specify relative or full file path for where a metadata cache has already been downloaded using either a VCS extract or metadata ProvarDX command.",
"metadataLevelFlagDescription": "Specify permitted values reload (get all metadata - default) | refresh (only download changes). This overrides any settings made in the propertyfile.",
"secretsFlagDescription": "Specify path to secrets file",
"secretsFlagDescription": "Specify a secrets encryption key for accessing the chosen project/environment.",
"loglevelFlagDescription": "Specify the level of feedback provided during the compilation (see above) and execution."
}
2 changes: 1 addition & 1 deletion messages/validate.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commandDescription": "Validate the provardx property file agains standard JSON Schema",
"commandDescription": "Verify a property file to confirm it is a well formed provardx property file",
"propertyFileFlagDescription": "Specify custom property file.",
"showErrorsFlagDescription": "Allow to show validation errors. Default is false.",
"loglevelFlagDescription": "Allow to provide loglevels."
Expand Down
18 changes: 15 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@provartesting/provardx",
"description": "A plugin for the Salesforce CLI to run provar testcases",
"version": "0.2.1",
"version": "0.3.0",
"author": "Provar",
"bugs": "https://github.com/ProvarTesting/provardx/issues",
"dependencies": {
Expand Down Expand Up @@ -51,8 +51,20 @@
"commands": "./lib/commands",
"bin": "sfdx",
"topics": {
"hello": {
"description": "Commands to say hello."
"provar": {
"description": "Developer tools for executing Provar tests from a command line and using Salesforce DevHub aliases"
},
"provar:compile": {
"description": "Pre-compiles any /src PageObject or PageControl Java source files into object code to use in runtests"
},
"provar:metadacache": {
"description": "Command to pre-download any required metadata for a specified user or provar connection"
},
"provar:runtests": {
"description": "Runs a specified list of Provar test cases against a specified DevHub user alias or username"
},
"provar:validate": {
"description": "Verify a property file to confirm it is a well formed provardx property file"
}
},
"devPlugins": [
Expand Down
65 changes: 48 additions & 17 deletions src/commands/provar/metadatacache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,22 @@ export default class MetadataCache extends SfdxCommand {
const connections: string = this.flags.connections;
const connectionoverrides: string = this.flags.connectionoverrides;

if (
!metadataLevel || !cachePath
) {
this.ux.error(
"ERROR running provar:metadatacache : Please specify a cachepath and metadatalevel"
);
return {};
}

if (!["Reload", "Refresh", "Reuse"].includes(metadataLevel)) {
this.ux.error(
"ERROR running provar:metadatacache : Please specify a valid metadata level(-m flag). Valid levels are : 'Reuse', 'Refresh' and 'Reload'"
);
return {};
}

const provarDxUtils: ProvarDXUtility = new ProvarDXUtility();
const isValid: boolean = provarDxUtils.validatePropertiesJson(
propertyFile
Expand All @@ -96,7 +112,7 @@ export default class MetadataCache extends SfdxCommand {
provarDxUtils.hasDuplicateConnectionOverride(propertiesInstance)
) {
this.ux.error(
"Invalid property file. Run command sfdx provar:validate' to know the validation errors"
"ERROR running provar:metadatacache : Please specify a valid property file. Run command sfdx provar:validate' to know the validation errors"
);
return {};
}
Expand All @@ -117,26 +133,26 @@ export default class MetadataCache extends SfdxCommand {
const userInfo = await provarDxUtils.getDxUsersInfo(
properties.connectionOverride
);
if (userInfo == null) {
if (userInfo === null && !connections) {
this.ux.error(
'[ERROR] No valid user org found to download metadata. Terminating command.'
);
return {};
}

const userInfoString = provarDxUtils.prepareRawProperties(
const userInfoString = connections && userInfo === null ? "NA" : provarDxUtils.prepareRawProperties(
JSON.stringify({ dxUsers: userInfo })
);
const jarPath = properties.provarHome + '/provardx/provardx.jar';
execSync(
'java -cp "' +
jarPath +
'" com.provar.provardx.DxCommandExecuter ' +
updateProperties +
' ' +
userInfoString +
' ' +
'Metadata',
jarPath +
'" com.provar.provardx.DxCommandExecuter ' +
updateProperties +
' ' +
userInfoString +
' ' +
'Metadata',
{ stdio: 'inherit' }
);
return {};
Expand Down Expand Up @@ -167,15 +183,30 @@ export default class MetadataCache extends SfdxCommand {
properties: any,
connectionOverride: string
): void {
if (!connectionOverride) {
if (!connectionOverride && !properties.connectionName) {
return;
}
const overrides = connectionOverride.split(',');
const connOver = [];
for (const override of overrides) {
const v = override.split(':');
connOver.push({ connection: v[0], username: v[1] });

if (properties.connectionName && properties.connectionOverride) {
const overrides = properties.connectionName.split(',');
const connOver = [];
for (const override of properties.connectionOverride) {
if (overrides.indexOf(override.connection) !== -1) {
connOver.push(override);
}
}
properties.connectionOverride = connOver;
}

if (connectionOverride) {
const overrides = connectionOverride.split(',');
for (const override of overrides) {
const overrideDetails = override.split(':');
const prop = properties.connectionOverride.find(f => f.connection === overrideDetails[0]);
if(prop){
prop.username = overrideDetails[1];
}
}
}
properties.connectionOverride = connOver;
}
}
2 changes: 1 addition & 1 deletion src/commands/provar/runtests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { cli } from 'cli-ux';
import ProvarDXUtility from '../../utilities/ProvarDXUtility';

/**
* Runs the specified list of Provar test cases against the currently configured SFDX defaultuserrname unless overridden
* Runs a specified list of Provar test cases against a specified DevHub user alias or username unless overridden
* in the command below or by a provardx-properties.json file
* @author Himanshu Sharma
*
Expand Down
4 changes: 1 addition & 3 deletions src/utilities/ProvarDXUtility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,7 @@ export default class ProvarDXUtility {

private handleSpecialCharacters(password: string): string {
if (password) {
password = password.split('&').join('"&"');
password = password.split('|').join('"|"');
password = password.split('^').join('"^"');
password = encodeURIComponent(password);
}
return password;
}
Expand Down