akismet-api
Version:
Nodejs bindings to the Akismet (https://akismet.com) spam detection service
115 lines (111 loc) • 4.18 kB
JavaScript
const chai = require('chai')
const nock = require('nock')
const Akismet = require('../lib/akismet')
const expect = chai.expect
describe('comment structure', () => {
it('should pass-through the Akismet API parameters', async () => {
const client = Akismet.client({
blog: 'https://example.com',
blog_lang: 'en, fr_ca',
blog_charset: 'UTF-8',
key: 'testKey1'
})
const scope = nock('https://testKey1.rest.akismet.com')
.matchHeader('Content-Type', 'application/x-www-form-urlencoded')
.post(
'/1.1/comment-check',
'user_ip=123.123.123.123' +
'&user_agent=John%20Doe%20Agent%20v1' +
'&referrer=https%3A%2F%2Fgoogle.com' +
'&comment_author=John%20Doe' +
'&comment_author_email=john%40doe.com' +
'&comment_content=This%20is%20my%20comment%21' +
'&is_test=true' +
'&comment_type=comment' +
'&comment_date_gmt=2019-12-22T13%3A05%3A04Z' +
'&permalink=https%3A%2F%2Fexample.com%2Fposts%2F123215' +
'&comment_post_modified_gmt=2019-12-22T13%3A05%3A04Z' +
'&comment_author_url=https%3A%2F%2Fauthorsite.com' +
'&user_role=user' +
'&honeypot_field_name=my_honeypot_field' +
'&my_honeypot_field=I%20fell%20for%20the%20honeypot%21' +
'&blog=https%3A%2F%2Fexample.com' +
'&blog_lang=en%2C%20fr_ca' +
'&blog_charset=UTF-8'
)
.reply(200, 'true', {
'Content-Type': 'text/plain'
})
const isSpam = await client.checkSpam({
user_ip: '123.123.123.123',
user_agent: 'John Doe Agent v1',
referrer: 'https://google.com',
comment_author: 'John Doe',
comment_author_email: 'john@doe.com',
comment_content: 'This is my comment!',
is_test: true,
comment_type: 'comment',
comment_date_gmt: '2019-12-22T13:05:04Z',
permalink: 'https://example.com/posts/123215',
comment_post_modified_gmt: '2019-12-22T13:05:04Z',
comment_author_url: 'https://authorsite.com',
honeypot_field_name: 'my_honeypot_field',
my_honeypot_field: 'I fell for the honeypot!',
user_role: 'user'
})
expect(isSpam).to.be.true
scope.done()
})
it('should support a JS-specific API', async () => {
const client = Akismet.client({
blog: 'https://example.com',
lang: 'en, fr_ca',
charset: 'UTF-8',
key: 'testKey1'
})
const scope = nock('https://testKey1.rest.akismet.com')
.matchHeader('Content-Type', 'application/x-www-form-urlencoded')
.post(
'/1.1/comment-check',
'user_ip=123.123.123.123' +
'&user_agent=John%20Doe%20Agent%20v1' +
'&referrer=https%3A%2F%2Fgoogle.com' +
'&comment_author=John%20Doe' +
'&comment_author_email=john%40doe.com' +
'&comment_content=This%20is%20my%20comment%21' +
'&is_test=true' +
'&comment_type=comment' +
'&comment_date_gmt=2019-12-22T13%3A05%3A04Z' +
'&permalink=https%3A%2F%2Fexample.com%2Fposts%2F123215' +
'&comment_post_modified_gmt=2019-12-22T13%3A05%3A04Z' +
'&comment_author_url=https%3A%2F%2Fauthorsite.com' +
'&user_role=user' +
'&honeypot_field_name=akismet_api_honeypot_field' +
'&akismet_api_honeypot_field=I%20fell%20for%20the%20honeypot%21' +
'&blog=https%3A%2F%2Fexample.com' +
'&blog_lang=en%2C%20fr_ca' +
'&blog_charset=UTF-8'
)
.reply(200, 'true', {
'Content-Type': 'text/plain'
})
const isSpam = await client.checkSpam({
ip: '123.123.123.123',
useragent: 'John Doe Agent v1',
referrer: 'https://google.com',
name: 'John Doe',
email: 'john@doe.com',
content: 'This is my comment!',
isTest: true,
type: 'comment',
date: '2019-12-22T13:05:04Z',
permalink: 'https://example.com/posts/123215',
permalinkDate: '2019-12-22T13:05:04Z',
url: 'https://authorsite.com',
honeypot: 'I fell for the honeypot!',
role: 'user'
})
expect(isSpam).to.be.true
scope.done()
})
})