before(() => {
   awsMock.mock('SQS', 'receiveMessage', sqsMessages);
   awsMock.mock('SQS', 'deleteMessage', { ResponseMetadata: { RequestId: 'e21774f2-6974-5d8b-adb2-3ba82afacdfc' } });
   sqsClient = new AWS.SQS();
   queue = new EmailQueue(sqsClient, { url: 'https://some_url.com' });
   contextStub = sinon.stub(lambdaContext, 'getRemainingTimeInMillis').returns(100000);
   awsMock.mock('Lambda', 'invoke', 'ok');
   lambdaClient = new AWS.Lambda();
 });
 it('can get secret', (done) => {
   AWS.mock('DynamoDB', 'query', mockQuery('credential-store'));
   AWS.mock('KMS', 'decrypt', mockKMS);
   var credstash = new Credstash();
   return credstash.get('secret', (e, secret) => {
     should.not.exist(e);
     secret.should.equal('magic');
     return done();
   });
 });
  before(() => {
    aws.mock('CloudWatchLogs', 'createLogGroup', (params, callback) => {
      callback(null, mockResponse.createLogGroup)
    })
    aws.mock('CloudWatchLogs', 'putRetentionPolicy', (params, callback) => {
      callback(null, mockResponse.putRetentionPolicy)
    })

    logs = new CloudWatchLogs(require('aws-sdk'))
  })
 it('can get N versions of a secret', (done) => {
   AWS.mock('DynamoDB', 'query', mockQueryWithTake('credential-store'));
   AWS.mock('KMS', 'decrypt', mockKMS);
   var credstash = new Credstash();
   return credstash.get('secret', { limit: 3 }, (e, secrets) => {
     should.not.exist(e);
     secrets[0].should.equal('magic');
     secrets[1].should.equal('magic');
     secrets[2].should.equal('magic');
     return done();
   });
 });
 it('can get secret from alternative table', (done) => {
   AWS.mock('DynamoDB', 'query', mockQuery('another-table'));
   AWS.mock('KMS', 'decrypt', mockKMS);
   var credstash = new Credstash({
     table: 'another-table'
   });
   return credstash.get('secret', (e, secret) => {
     should.not.exist(e);
     secret.should.equal('magic');
     return done();
   });
 });
test.beforeEach(t => {
  AWS.mock('DynamoDB.DocumentClient', 'put', (params, callback) => {
    callback(null, stubPutMessage)
  })
  AWS.mock('DynamoDB.DocumentClient', 'update', (params, callback) => {
    callback(null, stubPutMessage)
  })
  AWS.mock('DynamoDB.DocumentClient', 'query', (params, callback) => {
    callback(null, stubQueryMessage)
  })
  AWS.mock('DynamoDB.DocumentClient', 'scan', (params, callback) => {
    callback(null, stubQueryMessage)
  })
})
Exemple #7
0
 before(() => {
   AWS.mock('APIGateway', 'getRestApis', (params, callback) => {
     callback(null, getRestApis);
   });
   AWS.mock('APIGateway', 'importRestApi', (params, callback) => {
     callback(null, importRestApi);
   });
   AWS.mock('APIGateway', 'putRestApi', (params, callback) => {
     callback(null, putRestApi);
   });
   AWS.mock('APIGateway', 'createDeployment', (params, callback) => {
     callback(null, createDeployment);
   });
 });
tape('js dke', function(assert) {
  AWS.mock('KMS', 'decrypt', function(params, callback) {
    var encrypted = new Buffer(params.CiphertextBlob, 'base64').toString('utf8');
    if (encrypted === 'EncryptedValue1')
      return callback(null, { Plaintext: (new Buffer('DecryptedValue1')).toString('base64') });
    if (encrypted === 'EncryptedValue2')
      return callback(null, { Plaintext: (new Buffer('DecryptedValue2')).toString('base64') });
    assert.fail('Unrecognized encrypted value ' + encrypted);
  });
  var env = {
    AWS_DEFAULT_REGION: 'us-east-1',
    SecureVarA: 'secure:' + (new Buffer('EncryptedValue1')).toString('base64'),
    SecureVarB: 'secure:' + (new Buffer('EncryptedValue2')).toString('base64'),
    NormalVarC: 'Hello World'
  };
  dke(env, function(err, output) {
    assert.ifError(err, 'no error');
    assert.deepEqual(env, {
      AWS_DEFAULT_REGION: 'us-east-1',
      SecureVarA: 'DecryptedValue1',
      SecureVarB: 'DecryptedValue2',
      NormalVarC: 'Hello World'
    }, 'Sets decrypted values');
    assert.deepEqual(output, {
      SecureVarA: '************lue1',
      SecureVarB: '************lue2',
    }, 'Debug output');
    assert.end();
  });
});
Exemple #9
0
 beforeEach(() => {
   AWS.mock('S3', 'getObject', (params, callback) => {
     const json = JSON.stringify(UPDATED_1707);
     const data = { Body: json };
     callback(null, data);
   });
   AWS.mock('S3', 'putObject', (params, callback) => {
     addData.push(params.Key);
     callback(null, null);
   });
   AWS.mock('S3', 'deleteObjects', (params, callback) => {
     deleteData.push(params);
     callback(null, null);
   });
   clock = sinon.useFakeTimers(new Date('2017-08-20T00:00:00+09:00').getTime());
 });
Exemple #10
0
 before(() => {
   AWS.mock('IAM', 'getRole', (params, callback) => {
     callback(getRoleError, getRole);
   });
   AWS.mock('IAM', 'createRole', (params, callback) => {
     callback(null, createRole);
   });
   AWS.mock('IAM', 'updateAssumeRolePolicy', (params, callback) => {
     callback(null, updateAssumeRolePolicy);
   });
   AWS.mock('IAM', 'attachRolePolicy', (params, callback) => {
     callback(null, attachRolePolicy);
   });
   AWS.mock('IAM', 'listPolicies', (params, callback) => {
     callback(null, listPolicies);
   });
 });
  it('putItem', () => {
    AWS.mock('DynamoDB', 'putItem', (params, callback) => {
      callback(null, 'successfully put item in database');
    });

    return new Users('Table').putData().then((res) => {
      res.should.equal('successfully put item in database');
    });
  })
  before(() => {
    awsMock.mock('S3', 'getObject', {
      Body: `email address;first name;last name
em1@examplemail.com;firstName1;lastName1
em2@examplemail.com;firstName2;lastName2`,
      Metadata: {
        headers: '{"email address":"email", "first name":"name","last name":"surname", "some-header":"false", "other-header":false}'
      }
    });
    sinon.stub(List, 'update').resolves('Ok');

    sinon.stub(Recipient, 'saveAll').resolves('Ok');
    awsMock.mock('Lambda', 'invoke', 'ok');
    lambdaClient = new AWS.Lambda();
    s3Client = new AWS.S3();
    awsMock.mock('SNS', 'publish');
    sns = new AWS.SNS();
    process.env.UPDATE_IMPORT_STATUS_TOPIC_ARN = 'update-import-topic-arn';
  });
 before(() => {
   awsMock.mock('SES', 'getSendQuota', cb => {
     const error = {
       message: 'The security token included in the request is invalid.',
       code: 'InvalidClientTokenId',
       statusCode: 403
     };
     return cb(error);
   });
 });
  it('getItem', () => {
    const input = '*****@*****.**';

    AWS.mock('DynamoDB', 'getItem', (params, callback) => {
      callback(null, { Item: { email: params.Key.email.S } });
    });

    return new Users('Table').getData(input).then((res) => {
      res.Item.email.should.equal(input);
    });
  })
  it('deleteItem', () => {
    const input = '*****@*****.**';

    AWS.mock('DynamoDB', 'deleteItem', (params, callback) => {
      callback(null, 'successfully delete item in database');
    });

    return new Users('Table').deleteData(input).then((res) => {
      res.should.equal('successfully delete item in database');
    });
  })
Exemple #16
0
    beforeEach(function() {
      server.close();
      server = makeServer(s);
      util = new HttpTestUtils(server);

      AWS.mock('KMS', 'decrypt', function(params, callback) {
        callback(null, {
          KeyId: 'arn:aws:kms:us-east-1:ACCOUNT:key/SOME-UUID',
          PlainText: Buffer.from('this-is-a-secret', 'utf8').toString('base64')
        });
      });
    });
Exemple #17
0
const _mockSetting = () => {
  awsMock.mock('CloudWatchEvents', 'putRule', (params, callback) => {
    callback(null, {})
  })
  awsMock.mock('CloudWatchEvents', 'putTargets', (params, callback) => {
    callback(null, {})
  })
  awsMock.mock('CloudWatchLogs', 'createLogGroup', (params, callback) => {
    callback(null, {})
  })
  awsMock.mock('CloudWatchLogs', 'putRetentionPolicy', (params, callback) => {
    callback(null, {})
  })
  awsMock.mock('S3', 'putBucketNotificationConfiguration', (params, callback) => {
    callback(null, {})
  })
  awsMock.mock('S3', 'putObject', (params, callback) => {
    callback(null, { 'test': 'putObject' })
  })

  Object.keys(lambdaMockSettings).forEach((method) => {
    awsMock.mock('Lambda', method, (params, callback) => {
      callback(null, lambdaMockSettings[method])
    })
  })

  return require('aws-sdk')
}
 beforeEach(function() {
   aws.mock('APIGateway', 'createRestApi', function (params, callback){
     let result = { 
       id: config.apiid,
       name: config.apiname,
       createdDate: Date.now() 
     }
   
     callback(null, result);
   })
  
   apigw = new create.apigateway(config.region)
 })
Exemple #19
0
 before(() => {
   awsMock.mock('DynamoDB.DocumentClient', 'put', (params, cb) => {
     if (params.hasOwnProperty('TableName')) {
       cb(null, {});
     } else {
       cb('Invalid params');
     }
   });
   awsMock.mock('DynamoDB.DocumentClient', 'batchWrite', (params, cb) => {
     if (params.RequestItems.hasOwnProperty(validTable)) {
       cb(null, {});
     } else if (params.RequestItems.hasOwnProperty(retryableTable)) {
       const result = { UnprocessedItems: {} };
       result.UnprocessedItems[retryableTable] = [{ id: 'some-id' }];
       cb(null, result);
     } else {
       cb('Invalid params');
     }
   });
   db = new AWS.DynamoDB.DocumentClient();
   sinon.stub(Model, '_db').returns(db);
 });
 before(() => {
   awsMock.mock('SNS', 'publish', (params, cb) => {
     if (params.hasOwnProperty('Message') && params.hasOwnProperty('TopicArn')) {
       cb(null, { ReceiptHandle: 'STRING_VALUE' });
     } else {
       cb('Invalid params');
     }
   });
   snsClient = new AWS.SNS();
   service = new AttachRecipientsService(snsClient, campaignMessage);
   sinon.stub(service, '_notifyAttachSegmentMembers').resolves(true);
   sinon.stub(service, '_notifyToUpdateCampaignStatus').resolves(true);
   sinon.stub(service, '_notifyToSendEmails').resolves(true);
   sinon.stub(service, '_wait').resolves(true);
   sinon.stub(service, '_notifyToSendSMS').resolves(true);
 });
    it('should return success when TA refresh is successful', function(done) {
      AWS.mock('Support', 'refreshTrustedAdvisorCheck', function(
        params,
        callback
      ) {
        callback(null, {
          result: 'success',
        });
      });

      let _taRefresh = new TARefresh();
      _taRefresh.getTARefreshStatus(params, function(err, data) {
        if (err) done('invalid failure for positive test: ', err);
        else {
          assert.equal(data.Result, 'TA refresh done');
          done();
        }
      });
    });
    it('should return success logging which TA check failed', function(done) {
      AWS.mock('Support', 'refreshTrustedAdvisorCheck', function(
        params,
        callback
      ) {
        callback('error', null);
      });

      let _taRefresh = new TARefresh();
      _taRefresh.getTARefreshStatus(params, function(err, data) {
        if (err) {
          //expect(err).to.equal('error');
          done('invalid failure for negative test: ', err);
        } else {
          assert.equal(data.Result, 'TA refresh done');
          done();
        }
      });
    });
test.serial('getRowsByChatId with LastEvaluatedKey', async t => {
  AWS.restore()
  let i = 3
  const stubObject = () => {
    const obj = {
      Items: ['dummy'],
      LastEvaluatedKey: { d: 'ummy' }
    }
    if (i <= 0) { delete obj.LastEvaluatedKey }
    i--
    return obj
  }
  AWS.mock('DynamoDB.DocumentClient', 'query', (params, callback) => {
    const obj = stubObject()
    callback(null, obj)
  })
  const dynamodb = new DynamoDB()
  const response = await dynamodb.getRowsByChatId({ chatId: 123 })
  t.is(response[0], 'dummy')
})
tape('decrypt-kms-env: secure env vars', function(assert) {
  AWS.mock('KMS', 'decrypt', function(params, callback) {
    var encrypted = new Buffer(params.CiphertextBlob, 'base64').toString('utf8');
    if (encrypted === 'EncryptedValue1')
      return callback(null, { Plaintext: (new Buffer('DecryptedValue1')).toString('base64') });
    if (encrypted === 'EncryptedValue2')
      return callback(null, { Plaintext: (new Buffer('DecryptedValue2')).toString('base64') });
    assert.fail('Unrecognized encrypted value ' + encrypted);
  });
  dke.sh({
    AWS_DEFAULT_REGION: 'us-east-1',
    SecureVarA: 'secure:' + (new Buffer('EncryptedValue1')).toString('base64'),
    SecureVarB: 'secure:' + (new Buffer('EncryptedValue2')).toString('base64'),
    NormalVarC: 'Hello World'
  }, function(err, output) {
    assert.ifError(err, 'no error');
    assert.deepEqual(output, 'export SecureVarA=\'DecryptedValue1\'; echo \'Decrypted SecureVarA=************lue1\'; export SecureVarB=\'DecryptedValue2\'; echo \'Decrypted SecureVarB=************lue2\'; ', 'shell output');
    assert.end();
  });
});
Exemple #25
0
    it('bubbles errors up to the caller', function(done) {
      AWS.restore();
      AWS.mock('KMS', 'decrypt', function(params, callback) {
        callback(new Error('Funky looking error message'), null);
      });

      util.testEndpointResponse(endpoint, 'POST', STATUS_CODES.BAD_REQUEST, JSON.stringify(body), requiredHeaders, (err, res) => {
        if (err) {
          return done(err);
        }

        res.body.should.eql({
          error: {
            message: 'Funky looking error message',
            name: 'Error'
          }
        });

        done();
      });
    });
	before(function () {
		AWS.mock("S3", "getObject", function (params, callback) {
			callback(null, "dummy-data");
		});
	});
 before(() => {
   awsMock.mock('SNS', 'publish', {});
   busClient = new AWS.SNS();
 });
 before(() => {
   awsMock.mock('SNS', 'publish', {ReceiptHandle: 'STRING_VALUE'});
   snsClient = new AWS.SNS();
 });
 before(() => {
   awsMock.mock('SES', 'sendEmail', { MessageId: 'some_message_id' });
   const sqsMessage = sqsMessages.Messages[0];
   email = new EnqueuedEmail(JSON.parse(sqsMessage.Body), sqsMessage.ReceiptHandle);
 });
 before(() => {
   senderService = new SendEmailService(queue, null, contextStub);
   awsMock.mock('SES', 'sendEmail', { MessageId: 'some_message_id' });
 });