UNPKG

hubot-deploy

Version:
81 lines (64 loc) 2.79 kB
Fs = require "fs" VCR = require "ys-vcr" Path = require('path') Robot = require "hubot/src/robot" TextMessage = require("hubot/src/message").TextMessage GitHubEvents = require(Path.join(__dirname, "..", "..", "src", "github", "webhooks")) Deployment = GitHubEvents.Deployment Handler = require(Path.join(__dirname, "..", "..", "src", "models", "handler")) describe "Deployment Handlers", () -> user = null robot = null adapter = null deployment = null beforeEach (done) -> VCR.playback() process.env.HUBOT_DEPLOY_FERNET_SECRETS or= "HSfTG4uWzw9whtlLEmNAzscHh96eHUFt3McvoWBXmHk=" process.env.HUBOT_DEPLOY_EMIT_GITHUB_DEPLOYMENTS = true robot = new Robot(null, "mock-adapter", true, "hubot") robot.adapter.on "connected", () -> require("../../index")(robot) userInfo = name: "atmos", room: "#my-room" user = robot.brain.userForId "1", userInfo adapter = robot.adapter done() robot.run() afterEach () -> delete(process.env.HUBOT_DEPLOY_DEFAULT_ENVIRONMENT) VCR.stop() robot.server.close() robot.shutdown() deploymentFixtureFor = (fixtureName) -> fixtureData = Path.join __dirname, "..", "..", "test", "fixtures", "deployments", "#{fixtureName}.json" JSON.parse(Fs.readFileSync(fixtureData)) it "only responds to the currently running bot name", (done) -> fixturePayload = deploymentFixtureFor "production" fixturePayload.deployment.payload.robotName = "evilbot" deployment = new Deployment "uuid", fixturePayload handler = new Handler.Handler robot, deployment handler.run (err, handler) -> assert.equal err.message, "Received request for unintended robot evilbot." done() it "ignores deployments that have no notify attrs in their payload", (done) -> fixturePayload = deploymentFixtureFor "production" delete fixturePayload.deployment.payload.notify deployment = new Deployment "uuid", fixturePayload handler = new Handler.Handler robot, deployment handler.run (err, handler) -> assert.equal err.message, "Not deploying atmos/my-robot/heroku to production. Not chat initiated." done() it "dispatches to specific providers", (done) -> fixturePayload = deploymentFixtureFor "production" deployment = new Deployment "uuid", fixturePayload handler = new Handler.Handler robot, deployment handler.run (err, handler) -> throw err if err assert.equal "heroku", handler.provider assert.equal "heroku", handler.ref assert.equal "3c9f42c", handler.sha assert.equal "1875476", handler.number assert.equal "production", handler.environment assert.equal "atmos/my-robot", handler.repoName done()