Skip to content

Commit

Permalink
Added logging
Browse files Browse the repository at this point in the history
  • Loading branch information
nicodecleyre committed Jul 18, 2023
1 parent 3b43088 commit a9f0450
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 8 deletions.
12 changes: 6 additions & 6 deletions src/m365/pp/commands/solution/solution-publisher-remove.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class PpSolutionPublisherRemoveCommand extends PowerPlatformCommand {
}

if (args.options.confirm) {
await this.deletePublisher(args);
await this.deletePublisher(args, logger);
}
else {
const result = await Cli.prompt<{ continue: boolean }>({
Expand All @@ -104,25 +104,25 @@ class PpSolutionPublisherRemoveCommand extends PowerPlatformCommand {
});

if (result.continue) {
await this.deletePublisher(args);
await this.deletePublisher(args, logger);
}
}
}

private async getPublisherId(args: CommandArgs, dynamicsApiUrl: string): Promise<any> {
private async getPublisherId(args: CommandArgs, dynamicsApiUrl: string, logger: Logger): Promise<any> {
if (args.options.id) {
return args.options.id;
}

const solutionPublisher = await powerPlatform.getSolutionPublisherByName(dynamicsApiUrl, args.options.name!);
const solutionPublisher = await powerPlatform.getSolutionPublisherByName(dynamicsApiUrl, args.options.name!, logger, this.verbose);
return solutionPublisher.publisherid;
}

private async deletePublisher(args: CommandArgs): Promise<void> {
private async deletePublisher(args: CommandArgs, logger: Logger): Promise<void> {
try {
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);

const publisherId = await this.getPublisherId(args, dynamicsApiUrl);
const publisherId = await this.getPublisherId(args, dynamicsApiUrl, logger);
const requestOptions: CliRequestOptions = {
url: `${dynamicsApiUrl}/api/data/v9.1/publishers(${publisherId})`,
headers: {
Expand Down
21 changes: 20 additions & 1 deletion src/utils/powerPlatform.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import request from "../request";
import auth from '../Auth';
import { powerPlatform } from './powerPlatform';
import { sinonUtil } from "./sinonUtil";
import { Logger } from '../cli/Logger';

const validSolutionPublisherName = 'CLI 365 Solution';
const envUrl = 'https://contoso-dev.api.crm4.dynamics.com';
Expand All @@ -22,11 +23,29 @@ const solutionPublisherResponse = {
};

describe('utils/powerPlatform', () => {
let logger: Logger;
let log: string[];

before(() => {
sinon.stub(auth, 'restoreAuth').callsFake(() => Promise.resolve());
auth.service.connected = true;
});

beforeEach(() => {
log = [];
logger = {
log: (msg: string) => {
log.push(msg);
},
logRaw: (msg: string) => {
log.push(msg);
},
logToStderr: (msg: string) => {
log.push(msg);
}
};
});

afterEach(() => {
sinonUtil.restore([
request.get
Expand Down Expand Up @@ -151,7 +170,7 @@ describe('utils/powerPlatform', () => {
throw `Invalid request ${opts.url}`;
});

const actual = await powerPlatform.getSolutionPublisherByName(envUrl, validSolutionPublisherName);
const actual = await powerPlatform.getSolutionPublisherByName(envUrl, validSolutionPublisherName, logger, true);
assert.strictEqual(actual, solutionPublisherResponse.value[0]);
});
});
14 changes: 13 additions & 1 deletion src/utils/powerPlatform.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Logger } from "../cli/Logger";
import request, { CliRequestOptions } from "../request";
import { formatting } from "./formatting";

Expand Down Expand Up @@ -31,7 +32,18 @@ export const powerPlatform = {
}
},

async getSolutionPublisherByName(dynamicsApiUrl: string, name: string): Promise<any> {
/**
* Get a solution publisher by name
* Returns solution publisher object
* @param dynamicsApiUrl The dynamics api url of the environment
* @param name The name of the solution publisher.
* @param logger The logger object
* @param verbose Set for verbose logging
*/
async getSolutionPublisherByName(dynamicsApiUrl: string, name: string, logger?: Logger, verbose?: boolean): Promise<any> {
if (verbose && logger) {
logger.logToStderr(`Retrieving the solution publisher by name ${name}`);
}
const requestOptions: CliRequestOptions = {
url: `${dynamicsApiUrl}/api/data/v9.0/publishers?$filter=friendlyname eq \'${name}\'&$select=publisherid,uniquename,friendlyname,versionnumber,isreadonly,description,customizationprefix,customizationoptionvalueprefix&api-version=9.1`,
headers: {
Expand Down

0 comments on commit a9f0450

Please sign in to comment.