From 29f481853624c4509df13a726c12782d0bcc3900 Mon Sep 17 00:00:00 2001 From: Justin Wilaby Date: Tue, 30 Apr 2024 10:18:51 -0700 Subject: [PATCH] migrate(W-14169233): spaces: Upgrade drains:set --- packages/cli/src/commands/drains/set.ts | 29 +++++++++++++++++ .../unit/commands/drains/set.unit.test.ts | 25 +++++++++++++++ packages/spaces/commands/drains/set.js | 27 ---------------- packages/spaces/index.js | 1 - packages/spaces/lib/log-drains.js | 12 ------- .../unit/commands/drains/set.unit.test.js | 31 ------------------- 6 files changed, 54 insertions(+), 71 deletions(-) create mode 100644 packages/cli/src/commands/drains/set.ts create mode 100644 packages/cli/test/unit/commands/drains/set.unit.test.ts delete mode 100644 packages/spaces/commands/drains/set.js delete mode 100644 packages/spaces/test/unit/commands/drains/set.unit.test.js diff --git a/packages/cli/src/commands/drains/set.ts b/packages/cli/src/commands/drains/set.ts new file mode 100644 index 0000000000..4124450b63 --- /dev/null +++ b/packages/cli/src/commands/drains/set.ts @@ -0,0 +1,29 @@ +import color from '@heroku-cli/color' +import {Command, flags} from '@heroku-cli/command' +import {Args, ux} from '@oclif/core' +import * as Heroku from '@heroku-cli/schema' + +export default class Set extends Command { + static topic = 'drains' + static hidden = true + static description = 'replaces the log drain for a space' + static flags = { + space: flags.string({char: 's', description: 'space for which to set log drain', required: true}), + } + + static args = { + url: Args.string({required: true}), + } + + public async run(): Promise { + const {flags, args} = await this.parse(Set) + const {url} = args + const {space} = flags + const {body: drain} = await this.heroku.put(`/spaces/${space}/log-drain`, { + body: {url}, + headers: {Accept: 'application/vnd.heroku+json; version=3.dogwood'}, + }) + ux.log(`Successfully set drain ${color.cyan(drain.url)} for ${color.cyan.bold(space)}.`) + ux.warn('It may take a few moments for the changes to take effect.') + } +} diff --git a/packages/cli/test/unit/commands/drains/set.unit.test.ts b/packages/cli/test/unit/commands/drains/set.unit.test.ts new file mode 100644 index 0000000000..c74ca2985b --- /dev/null +++ b/packages/cli/test/unit/commands/drains/set.unit.test.ts @@ -0,0 +1,25 @@ +import {expect} from '@oclif/test' +import * as nock from 'nock' +import {stdout} from 'stdout-stderr' +import runCommand from '../../../helpers/runCommand' +import Cmd from '../../../../src/commands/drains/set' + +describe('drains:set', function () { + it('shows the log drain', async function () { + const api = nock('https://api.heroku.com:443') + .put('/spaces/my-space/log-drain', { + url: 'https://example.com', + }) + .reply(200, { + addon: null, + created_at: '2016-03-23T18:31:50Z', + id: '047f80cc-0470-4564-b0cb-e9ad7605314a', + token: 'd.a55ecbe1-5513-4d19-91e4-58a08b419d19', + updated_at: '2016-03-23T18:31:50Z', + url: 'https://example.com', + }) + await runCommand(Cmd, ['https://example.com', '--space', 'my-space']) + expect(stdout.output).to.equal('Successfully set drain https://example.com for my-space.\n') + api.done() + }) +}) diff --git a/packages/spaces/commands/drains/set.js b/packages/spaces/commands/drains/set.js deleted file mode 100644 index b28d1da095..0000000000 --- a/packages/spaces/commands/drains/set.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' - -let cli = require('heroku-cli-util') - -async function run(context, heroku) { - let lib = require('../../lib/log-drains')(heroku) - let space = context.flags.space - let drain = await lib.putLogDrain(space, context.args.url) - cli.log(`Successfully set drain ${cli.color.cyan(drain.url)} for ${cli.color.cyan.bold(space)}.`) - cli.warn('It may take a few moments for the changes to take effect.') -} - -module.exports = { - topic: 'drains', - command: 'set', - hidden: true, - description: 'replaces the log drain for a space', - needsApp: false, - needsAuth: true, - args: [ - {name: 'url'}, - ], - flags: [ - {name: 'space', char: 's', hasValue: true, description: 'space for which to set log drain', required: true}, - ], - run: cli.command(run), -} diff --git a/packages/spaces/index.js b/packages/spaces/index.js index 656789d55b..7a22403e82 100644 --- a/packages/spaces/index.js +++ b/packages/spaces/index.js @@ -19,7 +19,6 @@ exports.commands = [ require('./commands/vpn/update'), require('./commands/transfer'), require('./commands/drains/get'), - require('./commands/drains/set'), require('./commands/trusted-ips'), require('./commands/trusted-ips/add'), require('./commands/trusted-ips/remove'), diff --git a/packages/spaces/lib/log-drains.js b/packages/spaces/lib/log-drains.js index a8060aa1d4..d874a12364 100644 --- a/packages/spaces/lib/log-drains.js +++ b/packages/spaces/lib/log-drains.js @@ -8,19 +8,7 @@ module.exports = function (heroku) { }) } - function putLogDrain(space, url) { - return heroku.request({ - method: 'PUT', - path: `/spaces/${space}/log-drain`, - body: { - url: url, - }, - headers: {Accept: 'application/vnd.heroku+json; version=3.dogwood'}, - }) - } - return { getLogDrain, - putLogDrain, } } diff --git a/packages/spaces/test/unit/commands/drains/set.unit.test.js b/packages/spaces/test/unit/commands/drains/set.unit.test.js deleted file mode 100644 index 8c33c8a1ca..0000000000 --- a/packages/spaces/test/unit/commands/drains/set.unit.test.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' -/* globals beforeEach */ - -let nock = require('nock') -let cmd = require('../../../../commands/drains/set') -let expect = require('chai').expect -let cli = require('heroku-cli-util') - -describe('drains:set', function () { - beforeEach(() => cli.mockConsole()) - - it('shows the log drain', function () { - let api = nock('https://api.heroku.com:443') - .put('/spaces/my-space/log-drain', { - url: 'https://example.com', - }) - .reply(200, { - addon: null, - created_at: '2016-03-23T18:31:50Z', - id: '047f80cc-0470-4564-b0cb-e9ad7605314a', - token: 'd.a55ecbe1-5513-4d19-91e4-58a08b419d19', - updated_at: '2016-03-23T18:31:50Z', - url: 'https://example.com', - }) - return cmd.run({args: {url: 'https://example.com'}, flags: {space: 'my-space'}}) - .then(() => expect(cli.stdout).to.equal( - `Successfully set drain https://example.com for my-space. -`, - )).then(() => api.done()) - }) -})