WIP: Adding UT
This commit is contained in:
parent
421bf71b98
commit
0b7e7458c9
4 changed files with 112 additions and 0 deletions
|
@ -1,11 +1,13 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const assert = require('assert')
|
const assert = require('assert')
|
||||||
|
const ChildProcess = require('child_process')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const os = require('os')
|
const os = require('os')
|
||||||
const qs = require('querystring')
|
const qs = require('querystring')
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
const net = require('net')
|
||||||
const {closeWindow} = require('./window-helpers')
|
const {closeWindow} = require('./window-helpers')
|
||||||
|
|
||||||
const {ipcRenderer, remote, screen} = require('electron')
|
const {ipcRenderer, remote, screen} = require('electron')
|
||||||
|
@ -1259,6 +1261,56 @@ describe('BrowserWindow module', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('mixed sandbox option', function () {
|
||||||
|
// TOOD (juturu): This test needs to be fixed
|
||||||
|
let sandboxServer = null
|
||||||
|
const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-app-mixed-sandbox' : '/tmp/electron-app-mixed-sandbox'
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
fs.unlink(socketPath, () => {
|
||||||
|
sandboxServer = net.createServer()
|
||||||
|
sandboxServer.listen(socketPath)
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
sandboxServer.close(() => {
|
||||||
|
if (process.platform === 'win32') {
|
||||||
|
done()
|
||||||
|
} else {
|
||||||
|
fs.unlink(socketPath, () => {
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('enable-mixed-sandbox', (done) => {
|
||||||
|
this.timeout(120000)
|
||||||
|
|
||||||
|
let state = 'none'
|
||||||
|
sandboxServer.once('error', (error) => {
|
||||||
|
done(error)
|
||||||
|
})
|
||||||
|
sandboxServer.on('connection', (client) => {
|
||||||
|
client.once('data', function (data) {
|
||||||
|
console.log('jhreddy -' + data)
|
||||||
|
if (String(data) === 'false' && state === 'none') {
|
||||||
|
state = 'first-launch'
|
||||||
|
} else if (String(data) === 'true' && state === 'first-launch') {
|
||||||
|
done()
|
||||||
|
} else {
|
||||||
|
done(`Unexpected state: ${state}`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const appPath = path.join(__dirname, 'fixtures', 'api', 'mixed-sandbox-app')
|
||||||
|
ChildProcess.spawn(remote.process.execPath, [appPath])
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('nativeWindowOpen option', () => {
|
describe('nativeWindowOpen option', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
w.destroy()
|
w.destroy()
|
||||||
|
|
3
spec/fixtures/api/mixed-sandbox-app/electron-app-mixed-sandbox-preload.js
vendored
Normal file
3
spec/fixtures/api/mixed-sandbox-app/electron-app-mixed-sandbox-preload.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
process.once('loaded', function () {
|
||||||
|
window.argv = process.argv
|
||||||
|
})
|
52
spec/fixtures/api/mixed-sandbox-app/main.js
vendored
Normal file
52
spec/fixtures/api/mixed-sandbox-app/main.js
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
const { app, BrowserWindow, dialog } = require('electron')
|
||||||
|
const net = require('net')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-app-mixed-sandbox' : '/tmp/electron-app-mixed-sandbox'
|
||||||
|
|
||||||
|
process.on('uncaughtException', () => {
|
||||||
|
app.exit(1)
|
||||||
|
})
|
||||||
|
|
||||||
|
app.once('ready', () => {
|
||||||
|
|
||||||
|
let lastArg = process.argv[process.argv.length - 1]
|
||||||
|
const client = net.connect(socketPath)
|
||||||
|
client.once('connect', () => {
|
||||||
|
if (lastArg === '--enable-mixed-sandbox') {
|
||||||
|
dialog.showErrorBox('connected', app.getAppPath())
|
||||||
|
let window = new BrowserWindow({
|
||||||
|
show: true,
|
||||||
|
webPreferences: {
|
||||||
|
preload: path.join(app.getAppPath(), 'electron-app-mixed-sandbox-preload.js'),
|
||||||
|
sandbox: false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
window.loadURL('data:,window')
|
||||||
|
let argv = 'test'
|
||||||
|
window.webContents.once('did-finish-load', () => {
|
||||||
|
dialog.showErrorBox('finished-load', 'finished')
|
||||||
|
window.webContents.executeJavaScript('window.argv', false, (result) => {
|
||||||
|
dialog.showErrorBox('hello', result)
|
||||||
|
client.end(String(result))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// window.webContents.openDevTools()
|
||||||
|
// window.webContents.executeJavaScript('window.argv', true).then((result) => {
|
||||||
|
// dialog.showErrorBox('hello', result)
|
||||||
|
// client.end(String(argv))
|
||||||
|
// })
|
||||||
|
|
||||||
|
} else {
|
||||||
|
client.end(String(false))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
client.once('end', () => {
|
||||||
|
app.exit(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
if (lastArg !== '--enable-mixed-sandbox') {
|
||||||
|
app.relaunch({ args: process.argv.slice(1).concat('--enable-mixed-sandbox') })
|
||||||
|
}
|
||||||
|
})
|
5
spec/fixtures/api/mixed-sandbox-app/package.json
vendored
Normal file
5
spec/fixtures/api/mixed-sandbox-app/package.json
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"name": "electron-app-mixed-sandbox",
|
||||||
|
"main": "main.js"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue