mirror of
https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-consumer.git
synced 2026-09-21 16:52:03 -07:00
179 lines
4.7 KiB
JavaScript
179 lines
4.7 KiB
JavaScript
const config = require('../../../config')
|
|||
|
|
const axios = require('axios').default
|
||
|
|
const assert = require('chai').assert
|
||
|
|
const sinon = require('sinon')
|
||
|
|
|
||
|
|
// Mock data
|
||
|
|
// const mockData = require('./mocks/contact-mocks')
|
||
|
|
|
||
|
|
const LOCALHOST = `http://localhost:${config.port}`
|
||
|
|
|
||
|
|
const mockContext = require('../../unit/mocks/ctx-mock').context
|
||
|
|
const ContactController = require('../../../src/controllers/rest-api/contact/controller')
|
||
|
|
let uut
|
||
|
|
let sandbox
|
||
|
|
|
||
|
|
describe('Contact', () => {
|
||
|
|
beforeEach(() => {
|
||
|
|
uut = new ContactController()
|
||
|
|
|
||
|
|
sandbox = sinon.createSandbox()
|
||
|
|
})
|
||
|
|
|
||
|
|
afterEach(() => sandbox.restore())
|
||
|
|
|
||
|
|
describe('POST /contact/email', () => {
|
||
|
|
it('should throw error if email property is not provided', async () => {
|
||
|
|
try {
|
||
|
|
const options = {
|
||
|
|
method: 'POST',
|
||
|
|
url: `${LOCALHOST}/contact/email`,
|
||
|
|
data: {
|
||
|
|
obj: {
|
||
|
|
formMessage: 'message'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
await axios(options)
|
||
|
|
|
||
|
|
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
|
||
|
|
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
assert(false, 'Unexpected result')
|
||
|
|
} catch (err) {
|
||
|
|
assert.equal(err.response.status, 422)
|
||
|
|
assert.include(err.response.data, "Property 'email' must be a string!")
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
it('should throw error if formMessage property is not provided', async () => {
|
||
|
|
try {
|
||
|
|
const options = {
|
||
|
|
method: 'POST',
|
||
|
|
url: `${LOCALHOST}/contact/email`,
|
||
|
|
data: {
|
||
|
|
obj: {
|
||
|
|
email: 'email@email.com'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
await axios(options)
|
||
|
|
|
||
|
|
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
|
||
|
|
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
assert(false, 'Unexpected result')
|
||
|
|
} catch (err) {
|
||
|
|
assert.equal(err.response.status, 422)
|
||
|
|
assert.include(
|
||
|
|
err.response.data,
|
||
|
|
"Property 'formMessage' must be a string!"
|
||
|
|
)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
it('should throw error if email list provided is not a array', async () => {
|
||
|
|
try {
|
||
|
|
const options = {
|
||
|
|
method: 'POST',
|
||
|
|
url: `${LOCALHOST}/contact/email`,
|
||
|
|
data: {
|
||
|
|
obj: {
|
||
|
|
email: 'email@email.com',
|
||
|
|
formMessage: 'test message',
|
||
|
|
emailList: 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
await axios(options)
|
||
|
|
|
||
|
|
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
|
||
|
|
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
assert(false, 'Unexpected result')
|
||
|
|
} catch (err) {
|
||
|
|
assert.equal(err.response.status, 422)
|
||
|
|
assert.include(
|
||
|
|
err.response.data,
|
||
|
|
"Property 'emailList' must be a array of emails!"
|
||
|
|
)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
it('should throw error if email list provided is a empty array', async () => {
|
||
|
|
try {
|
||
|
|
const options = {
|
||
|
|
method: 'POST',
|
||
|
|
url: `${LOCALHOST}/contact/email`,
|
||
|
|
data: {
|
||
|
|
obj: {
|
||
|
|
email: 'email@email.com',
|
||
|
|
formMessage: 'test message',
|
||
|
|
emailList: []
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
await axios(options)
|
||
|
|
|
||
|
|
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
|
||
|
|
// console.log(`result stringified: ${JSON.stringify(result, null, 2)}`)
|
||
|
|
assert(false, 'Unexpected result')
|
||
|
|
} catch (err) {
|
||
|
|
assert.equal(err.response.status, 422)
|
||
|
|
assert.include(
|
||
|
|
err.response.data,
|
||
|
|
"Property 'emailList' must be a array of emails!"
|
||
|
|
)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
it('should send email with minimun input', async () => {
|
||
|
|
try {
|
||
|
|
// Mock live network calls.
|
||
|
|
sandbox.stub(uut.contactLib, 'sendEmail').resolves(true)
|
||
|
|
|
||
|
|
// Mock the context object.
|
||
|
|
const ctx = mockContext()
|
||
|
|
ctx.request = {
|
||
|
|
body: {
|
||
|
|
obj: {
|
||
|
|
email: 'email@email.com',
|
||
|
|
formMessage: 'test message'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
await uut.email(ctx)
|
||
|
|
} catch (err) {
|
||
|
|
assert(false, 'Unexpected result')
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
it('should send email with all inputs', async () => {
|
||
|
|
try {
|
||
|
|
// Mock live network calls.
|
||
|
|
sandbox.stub(uut.contactLib, 'sendEmail').resolves(true)
|
||
|
|
|
||
|
|
// Mock the context object.
|
||
|
|
const ctx = mockContext()
|
||
|
|
ctx.request = {
|
||
|
|
body: {
|
||
|
|
obj: {
|
||
|
|
email: 'email@email.com',
|
||
|
|
formMessage: 'test message',
|
||
|
|
emailList: ['email@email.com']
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
await uut.email(ctx)
|
||
|
|
} catch (err) {
|
||
|
|
assert(false, 'Unexpected result')
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
})
|