Skip to content

Commit

Permalink
Improve the integration test for 3P ad networks. So unregistered new …
Browse files Browse the repository at this point in the history
…ad networks will fail the test. (ampproject#4260)
  • Loading branch information
lannka authored and mityaha committed Nov 30, 2016
1 parent 75d7352 commit 4a003c7
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 75 deletions.
85 changes: 44 additions & 41 deletions 3p/integration.js
Expand Up @@ -23,70 +23,73 @@
*/

import './polyfills';
import {installEmbedStateListener} from './environment';
import {installEmbedStateListener, manageWin} from './environment';
import {nonSensitiveDataPostMessage, listenParent} from './messaging';
import {computeInMasterFrame, nextTick, register, run} from './3p';
import {urls} from '../src/config';
import {endsWith} from '../src/string';
import {parseUrl, getSourceUrl} from '../src/url';
import {user} from '../src/log';

// 3P - please keep in alphabetic order
import {facebook} from './facebook';
import {twitter} from './twitter';

// 3P Ad Networks - please keep in alphabetic order
import {a9} from '../ads/a9';
import {adblade, industrybrains} from '../ads/adblade';
import {adition} from '../ads/adition';
import {adform} from '../ads/adform';
import {adgeneration} from '../ads/adgeneration';
import {adition} from '../ads/adition';
import {adman} from '../ads/adman';
import {adreactor} from '../ads/adreactor';
import {adsense} from '../ads/google/adsense';
import {adspirit} from '../ads/adspirit';
import {adstir} from '../ads/adstir';
import {adtech} from '../ads/adtech';
import {aduptech} from '../ads/aduptech';
import {amoad} from '../ads/amoad';
import {plista} from '../ads/plista';
import {appnexus} from '../ads/appnexus';
import {chargeads} from '../ads/chargeads';
import {colombia} from '../ads/colombia';
import {criteo} from '../ads/criteo';
import {doubleclick} from '../ads/google/doubleclick';
import {dotandads} from '../ads/dotandads';
import {endsWith} from '../src/string';
import {facebook} from './facebook';
import {doubleclick} from '../ads/google/doubleclick';
import {eplanning} from '../ads/eplanning';
import {flite} from '../ads/flite';
import {nativo} from '../ads/nativo';
import {mantisDisplay, mantisRecommend} from '../ads/mantis';
import {genieessp} from '../ads/genieessp';
import {gmossp} from '../ads/gmossp';
import {imobile} from '../ads/imobile';
import {improvedigital} from '../ads/improvedigital';
import {manageWin} from './environment';
import {kargo} from '../ads/kargo';
import {mads} from '../ads/mads';
import {mantisDisplay, mantisRecommend} from '../ads/mantis';
import {mediaimpact} from '../ads/mediaimpact';
import {nonSensitiveDataPostMessage, listenParent} from './messaging';
import {twitter} from './twitter';
import {yieldmo} from '../ads/yieldmo';
import {computeInMasterFrame, nextTick, register, run} from './3p';
import {parseUrl, getSourceUrl} from '../src/url';
import {appnexus} from '../ads/appnexus';
import {taboola} from '../ads/taboola';
import {smartadserver} from '../ads/smartadserver';
import {widespace} from '../ads/widespace';
import {sovrn} from '../ads/sovrn';
import {sortable} from '../ads/sortable';
import {revcontent} from '../ads/revcontent';
import {microad} from '../ads/microad';
import {nativo} from '../ads/nativo';
import {nend} from '../ads/nend';
import {openadstream} from '../ads/openadstream';
import {openx} from '../ads/openx';
import {triplelift} from '../ads/triplelift';
import {teads} from '../ads/teads';
import {plista} from '../ads/plista';
import {pubmatic} from '../ads/pubmatic';
import {pulsepoint} from '../ads/pulsepoint';
import {revcontent} from '../ads/revcontent';
import {rubicon} from '../ads/rubicon';
import {imobile} from '../ads/imobile';
import {sharethrough} from '../ads/sharethrough';
import {smartadserver} from '../ads/smartadserver';
import {sortable} from '../ads/sortable';
import {sovrn} from '../ads/sovrn';
import {taboola} from '../ads/taboola';
import {teads} from '../ads/teads';
import {triplelift} from '../ads/triplelift';
import {webediads} from '../ads/webediads';
import {pubmatic} from '../ads/pubmatic';
import {yieldbot} from '../ads/yieldbot';
import {user} from '../src/log';
import {gmossp} from '../ads/gmossp';
import {weboramaDisplay} from '../ads/weborama';
import {adstir} from '../ads/adstir';
import {colombia} from '../ads/colombia';
import {sharethrough} from '../ads/sharethrough';
import {eplanning} from '../ads/eplanning';
import {microad} from '../ads/microad';
import {widespace} from '../ads/widespace';
import {yahoojp} from '../ads/yahoojp';
import {chargeads} from '../ads/chargeads';
import {nend} from '../ads/nend';
import {adgeneration} from '../ads/adgeneration';
import {genieessp} from '../ads/genieessp';
import {kargo} from '../ads/kargo';
import {mads} from '../ads/mads';
import {pulsepoint} from '../ads/pulsepoint';
import {zergnet} from '../ads/zergnet';
import {yieldbot} from '../ads/yieldbot';
import {yieldmo} from '../ads/yieldmo';
import {yieldone} from '../ads/yieldone';
import {zergnet} from '../ads/zergnet';

/**
* Whether the embed type may be used with amp-embed tag.
Expand Down
15 changes: 15 additions & 0 deletions build-system/tasks/runtime-test.js
Expand Up @@ -20,6 +20,8 @@ var Karma = require('karma').Server;
var config = require('../config');
var karmaConfig = config.karma;
var extend = require('util')._extend;
var fs = require('fs');
var path = require('path');

/**
* Read in and process the configuration settings for karma
Expand Down Expand Up @@ -51,6 +53,18 @@ function getConfig() {
return extend(obj, karmaConfig.default);
}

function getAdExtensions() {
const adNetworks = [];
const files = fs.readdirSync('./ads/');
for (var i = 0; i < files.length; i++) {
if (path.extname(files[i]) == '.js'
&& files[i][0] != '_' && files[i] != 'ads.extern.js') {
adNetworks.push(path.basename(files[i], '.js'));
}
}
return adNetworks;
}

/**
* Run tests.
*/
Expand Down Expand Up @@ -90,6 +104,7 @@ gulp.task('test', 'Runs tests', argv.nobuild ? [] : ['build'], function(done) {
c.client.amp = {
useCompiledJs: !!argv.compiled,
saucelabs: !!argv.saucelabs,
adExtensions: getAdExtensions(),
};

if (argv.grep) {
Expand Down
58 changes: 24 additions & 34 deletions test/functional/test-integration.js
Expand Up @@ -34,43 +34,33 @@ describe('3p integration.js', () => {
});

it('should register integrations', () => {
expect(registrations).to.include.key('a9');
expect(registrations).to.include.key('adblade');
expect(registrations).to.include.key('adition');
expect(registrations).to.include.key('adform');
// Get all ad extensions from test env.
const extensions = window.ampTestRuntimeConfig.adExtensions;
const namingExceptions = {
// We recommend 3P ad networks use the same string for filename and ID.
// Write exceptions here in alpabetic order.
// filename: [ID1, ID2, ... ]
adblade: ['adblade', 'industrybrains'],
mantis: ['mantis-display', 'mantis-recommend'],
weborama: ['weborama-display'],
};

for (let i = 0; i < extensions.length; i++) {
const expanded = namingExceptions[extensions[i]];
if (expanded) {
for (let j = 0; j < expanded.length; j++) {
expect(registrations).to.include.key(expanded[j]);
}
} else {
expect(registrations).to.include.key(extensions[i]);
}
}

// Google's ad networks.
expect(registrations).to.include.key('adsense');
expect(registrations).to.include.key('adtech');
expect(registrations).to.include.key('adreactor');
expect(registrations).to.include.key('criteo');
expect(registrations).to.include.key('doubleclick');
expect(registrations).to.include.key('flite');
expect(registrations).to.include.key('mantis-display');
expect(registrations).to.include.key('mantis-recommend');
expect(registrations).to.include.key('industrybrains');
expect(registrations).to.include.key('openx');
expect(registrations).to.include.key('twitter');
expect(registrations).to.include.key('widespace');
expect(registrations).to.include.key('yieldmo');
expect(registrations).to.include.key('sortable');
expect(registrations).to.include.key('triplelift');

expect(registrations).to.include.key('_ping_');
expect(registrations).to.include.key('imobile');
expect(registrations).to.include.key('gmossp');
expect(registrations).to.include.key('weborama-display');
expect(registrations).to.include.key('yieldbot');
expect(registrations).to.include.key('adstir');
expect(registrations).to.include.key('colombia');
expect(registrations).to.include.key('microad');
expect(registrations).to.include.key('yahoojp');
expect(registrations).to.include.key('chargeads');
expect(registrations).to.include.key('nend');
expect(registrations).to.include.key('adgeneration');
expect(registrations).to.include.key('genieessp');
expect(registrations).to.include.key('yieldone');
expect(registrations).to.include.key('kargo');
expect(registrations).to.include.key('mads');
expect(registrations).to.include.key('amoad');
expect(registrations).to.include.key('zergnet');
});

it('should validateParentOrigin without ancestorOrigins', () => {
Expand Down

0 comments on commit 4a003c7

Please sign in to comment.