n26-puppeteer-scraper
Version:
n26 scraper: a tool to download account informations and transactions archive
52 lines (46 loc) • 1.88 kB
JavaScript
const test = require('ava')
const debug = require('debug')
const n26login = require('./lib/n26-login')
const n26readTransactions = require('./lib/n26-read-transactions')
const n26downloadTransactionsArchive = require('./lib/n26-download-transactions-archive')
const username = process.env.npm_config_n26_username
const password = process.env.npm_config_n26_password
debug.enable('n26:*')
let page
test.after(async () => {
page && await page.close()
})
test('logs in', async t => {
const { page: p, membership } = await n26login({ username, password })
page = p
t.truthy(membership)
console.log(membership)
t.is(typeof membership.name, 'string')
t.is(typeof membership.iban, 'string')
t.is(typeof membership.bic, 'string')
t.is(typeof membership.accountType, 'string')
t.is(typeof membership.atmWithdrawals, 'string')
t.is(typeof membership.markup, 'string')
t.is(typeof membership.worldwide, 'boolean')
})
test('scrapes transactions', async t => {
const { page: p } = await n26login({ username, password }, { page, loadMembership: false })
page = p
const txs = await n26readTransactions(page, { untilPage: 3 })
console.log(txs.length)
t.true(Array.isArray(txs))
t.true(txs.length > 100)
t.true(txs.every(t => t.title && t.dateString && t.amountString))
})
test('downloads transactions archive', async t => {
const { page: p } = await n26login({ username, password }, { page, loadMembership: false })
page = p
const result = await n26downloadTransactionsArchive(page, { startDate: '2018-06-15', endDate: new Date().toISOString().substring(0, 10) })
console.log(result)
t.is(typeof result.csrfToken, 'string')
t.is(typeof result.downloadLink, 'string')
t.is(typeof result.cookies, 'string')
t.is(typeof result.archive, 'object')
const res = result.archive.toString('utf8')
console.log('res', res.substring(0, 1000))
})