From 154548fa874124366817e88aadf5b1de9353415b Mon Sep 17 00:00:00 2001 From: Vince Martinez Date: Mon, 8 Jan 2018 04:13:17 +0100 Subject: [PATCH] Add `flow weak` to lib files, fix some caught errors --- lib/clients/actionkit/index.js | 1 - lib/clients/actionkit/recurringOrders.js | 1 + lib/clients/actionkit/resources/client.js | 1 + lib/clients/actionkit/resources/orderrecurring.js | 1 + .../actionkit/resources/orderrecurring.test.js | 1 + lib/clients/actionkit/resources/users.js | 4 ++-- lib/clients/champaign/champaign.js | 6 ++++-- lib/clients/champaign/member.js | 1 + lib/clients/champaign/member.test.js | 1 + lib/clients/champaign/recurringDonation.js | 1 + lib/clients/gocardless/gocardless.js | 3 ++- lib/clients/gocardless/gocardless.test.js | 1 + lib/lambda-utils/responses.js | 6 +++--- lib/lambda-utils/responses.test.js | 15 ++++++++++++++- payments-service/gocardless_subscriptions.js | 1 + .../subscriptions-delete-actionkit.js | 6 +++--- settings/staging.yml | 1 + 17 files changed, 38 insertions(+), 13 deletions(-) delete mode 100644 lib/clients/actionkit/index.js diff --git a/lib/clients/actionkit/index.js b/lib/clients/actionkit/index.js deleted file mode 100644 index 83b2919..0000000 --- a/lib/clients/actionkit/index.js +++ /dev/null @@ -1 +0,0 @@ -export { cancel as cancelRecurringOrder } from './recurringOrders'; diff --git a/lib/clients/actionkit/recurringOrders.js b/lib/clients/actionkit/recurringOrders.js index 2a90078..8d1bef2 100644 --- a/lib/clients/actionkit/recurringOrders.js +++ b/lib/clients/actionkit/recurringOrders.js @@ -1,3 +1,4 @@ +// @flow weak import { AKClient } from './resources/client'; export function cancel(recurringId, client = AKClient) { diff --git a/lib/clients/actionkit/resources/client.js b/lib/clients/actionkit/resources/client.js index 81290b8..c690914 100644 --- a/lib/clients/actionkit/resources/client.js +++ b/lib/clients/actionkit/resources/client.js @@ -1,3 +1,4 @@ +// @flow weak import axios from 'axios'; import { basicAuthToken } from '../../../util/basicAuthToken'; diff --git a/lib/clients/actionkit/resources/orderrecurring.js b/lib/clients/actionkit/resources/orderrecurring.js index 000e138..d99d876 100644 --- a/lib/clients/actionkit/resources/orderrecurring.js +++ b/lib/clients/actionkit/resources/orderrecurring.js @@ -1,3 +1,4 @@ +// @flow weak import { IAKClient as AKClient } from './client'; import { pick as _pick, filter as _filter } from 'lodash'; diff --git a/lib/clients/actionkit/resources/orderrecurring.test.js b/lib/clients/actionkit/resources/orderrecurring.test.js index 52f5353..3a92a1b 100644 --- a/lib/clients/actionkit/resources/orderrecurring.test.js +++ b/lib/clients/actionkit/resources/orderrecurring.test.js @@ -1,3 +1,4 @@ +// @flow weak import { getOrderRecurrings, getGCOrderRecurrings } from './orderrecurring'; describe('getOrderRecurings', () => { diff --git a/lib/clients/actionkit/resources/users.js b/lib/clients/actionkit/resources/users.js index 9a5e337..4a8ceaa 100644 --- a/lib/clients/actionkit/resources/users.js +++ b/lib/clients/actionkit/resources/users.js @@ -1,4 +1,4 @@ -// @flow +// @flow weak import { AKClient as client } from './client'; import { resolveProxyShape, rejectProxyShape } from '../helpers'; import type { ProxyShape } from '../helpers'; @@ -10,7 +10,7 @@ export type SearchFilters = { [key: string]: string | number | boolean }; export function search(f: ?SearchFilters = {}) { return client - .get(`/user/`, { params: f }) + .get(`/user/`, { params: f || {} }) .then(resolveProxyShape, rejectProxyShape); } diff --git a/lib/clients/champaign/champaign.js b/lib/clients/champaign/champaign.js index 26f22c9..8daf167 100644 --- a/lib/clients/champaign/champaign.js +++ b/lib/clients/champaign/champaign.js @@ -1,3 +1,4 @@ +// @flow weak import axios from 'axios'; import uuid from 'uuid/v1'; import crypto from 'crypto'; @@ -5,12 +6,13 @@ import crypto from 'crypto'; const nonce = uuid(); const signature = crypto - .createHmac('sha256', process.env.MEMBER_SERVICES_SECRET) + .createHmac('sha256', process.env.MEMBER_SERVICES_SECRET || '') .update(nonce) .digest('hex'); +// FIXME: Use one client for all champaign files const http = axios.create({ - baseURL: `${process.env.CHAMPAIGN_URL}/api/member_services/`, + baseURL: `${process.env.CHAMPAIGN_URL || ''}/api/member_services/`, headers: { Accept: 'application/json', 'Content-Type': 'application/json', diff --git a/lib/clients/champaign/member.js b/lib/clients/champaign/member.js index b91fad0..6b2c647 100644 --- a/lib/clients/champaign/member.js +++ b/lib/clients/champaign/member.js @@ -1,3 +1,4 @@ +// @flow weak import axios from 'axios'; import { integrationHeaders } from './utils'; diff --git a/lib/clients/champaign/member.test.js b/lib/clients/champaign/member.test.js index 7e644b6..118a56f 100644 --- a/lib/clients/champaign/member.test.js +++ b/lib/clients/champaign/member.test.js @@ -1,3 +1,4 @@ +// @flow weak import { updateMember } from './member'; const { objectContaining } = expect; diff --git a/lib/clients/champaign/recurringDonation.js b/lib/clients/champaign/recurringDonation.js index a4b60e8..be05893 100644 --- a/lib/clients/champaign/recurringDonation.js +++ b/lib/clients/champaign/recurringDonation.js @@ -1,3 +1,4 @@ +// @flow weak import axios from 'axios'; import { integrationHeaders } from './utils'; import crypto from 'crypto'; diff --git a/lib/clients/gocardless/gocardless.js b/lib/clients/gocardless/gocardless.js index 43821b6..bd6f428 100644 --- a/lib/clients/gocardless/gocardless.js +++ b/lib/clients/gocardless/gocardless.js @@ -1,3 +1,4 @@ +// @flow weak import axios from 'axios'; import { pick as _pick } from 'lodash'; @@ -11,7 +12,7 @@ const http = axios.create({ baseURL, headers: { Accept: 'application/json', - Authorization: `Bearer ${process.env.GOCARDLESS_TOKEN}`, + Authorization: `Bearer ${process.env.GOCARDLESS_TOKEN || ''}`, 'GoCardless-Version': '2015-07-06', }, }); diff --git a/lib/clients/gocardless/gocardless.test.js b/lib/clients/gocardless/gocardless.test.js index 5d1f8ed..82e39e8 100644 --- a/lib/clients/gocardless/gocardless.test.js +++ b/lib/clients/gocardless/gocardless.test.js @@ -1,3 +1,4 @@ +// @flow weak import { getSubscription } from './gocardless'; describe('getSubscription', () => { diff --git a/lib/lambda-utils/responses.js b/lib/lambda-utils/responses.js index f668668..0be2011 100644 --- a/lib/lambda-utils/responses.js +++ b/lib/lambda-utils/responses.js @@ -82,9 +82,9 @@ export function notFound(options?: ResponseOptions = {}): ProxyResult { // } // 5xx Server Error responses -// export function serverError(options?: ResponseOptions = {}): ProxyResult { -// return response({ ...options, statusCode: 500 }); -// } +export function serverError(options?: ResponseOptions = {}): ProxyResult { + return response({ ...options, statusCode: 500 }); +} // export function notImplemented(options?: ResponseOptions = {}): ProxyResult { // return response({ ...options, statusCode: 501, body: '' }); diff --git a/lib/lambda-utils/responses.test.js b/lib/lambda-utils/responses.test.js index d94a490..078f01e 100644 --- a/lib/lambda-utils/responses.test.js +++ b/lib/lambda-utils/responses.test.js @@ -1,5 +1,12 @@ // @flow -import { body, badRequest, headers, ok, response } from './responses'; +import { + body, + badRequest, + headers, + ok, + response, + serverError, +} from './responses'; describe('badRequest(...)', () => { test('always returns a statusCode 400', () => { @@ -56,6 +63,12 @@ describe('ok(...)', () => { }); }); +describe('serverError(...)', () => { + test('statusCode defaults to 500 OK', () => { + expect(serverError().statusCode).toEqual(500); + }); +}); + describe('response(...)', () => { test('statusCode defaults to 200 OK', () => { expect(response().statusCode).toEqual(200); diff --git a/payments-service/gocardless_subscriptions.js b/payments-service/gocardless_subscriptions.js index 63ded81..ed6f199 100644 --- a/payments-service/gocardless_subscriptions.js +++ b/payments-service/gocardless_subscriptions.js @@ -1,3 +1,4 @@ +// @flow weak import { validateRequest } from '../lib/request-validator'; import { ok, badRequest, serverError } from '../lib/lambda-utils/responses'; import { searchGCSubscriptions } from '../lib/services/gocardless'; diff --git a/payments-service/subscriptions-delete-actionkit.js b/payments-service/subscriptions-delete-actionkit.js index 41000e3..f211bd5 100644 --- a/payments-service/subscriptions-delete-actionkit.js +++ b/payments-service/subscriptions-delete-actionkit.js @@ -1,7 +1,7 @@ // @flow weak import AWS from 'aws-sdk'; import { cancelPaymentEvent } from '../lib/dynamodb/eventTypeChecker'; -import { cancel as cancelRecurringOrder } from '../lib/clients/actionkit'; +import { cancel as cancelRecurringOrders } from '../lib/clients/actionkit/recurringOrders'; import { OperationsLogger } from '../lib/dynamodb/operationsLogger'; const logger = new OperationsLogger({ @@ -10,14 +10,14 @@ const logger = new OperationsLogger({ tableName: process.env.DB_LOG_TABLE || 'OperationsTable', }); -export const handler = async (e, ctx, cb, cancel = cancelRecurringOrder) => { +export const handler = async (e, ctx, cb, fn = cancelRecurringOrders) => { // Get first item const [item] = e.Records; const record = AWS.DynamoDB.Converter.unmarshall(item.dynamodb.NewImage); if (!cancelPaymentEvent(record)) return cb(null, 'Not a cancel event'); try { - await cancel(record.data.recurringId); + await fn(record.data.recurringId); logger.updateStatus(record, { actionkit: 'SUCCESS' }); } catch (error) { logger.updateStatus(record, { actionkit: 'FAILURE' }); diff --git a/settings/staging.yml b/settings/staging.yml index c44c9ee..2b5e2a3 100644 --- a/settings/staging.yml +++ b/settings/staging.yml @@ -11,3 +11,4 @@ environment: CHAMPAIGN_URL: ${env:CHAMPAIGN_URL} MEMBER_SERVICES_SECRET: ${env:MEMBER_SERVICES_SECRET} DB_LOG_TABLE: ${env:DB_LOG_TABLE} + UNSUBSCRIBE_PAGE_NAME: ${env:UNSUBSCRIBE_PAGE_NAME}