mirror of
https://github.com/jlengrand/openapi-generator.git
synced 2026-05-10 15:54:18 +00:00
better code injection handling for js
This commit is contained in:
17
samples/client/petstore-security-test/javascript/node_modules/lolex/.editorconfig
generated
vendored
Normal file
17
samples/client/petstore-security-test/javascript/node_modules/lolex/.editorconfig
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
; EditorConfig file: http://EditorConfig.org
|
||||
; Install the "EditorConfig" plugin into your editor to use
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# Matches the exact files either package.json or .travis.yml
|
||||
[{package.json, .travis.yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
5
samples/client/petstore-security-test/javascript/node_modules/lolex/.jslintrc
generated
vendored
Normal file
5
samples/client/petstore-security-test/javascript/node_modules/lolex/.jslintrc
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"evil":true,
|
||||
"vars":true,
|
||||
"plusplus":true
|
||||
}
|
||||
13
samples/client/petstore-security-test/javascript/node_modules/lolex/.min-wd
generated
vendored
Normal file
13
samples/client/petstore-security-test/javascript/node_modules/lolex/.min-wd
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sauceLabs": true,
|
||||
"browsers": [{
|
||||
"name": "chrome"
|
||||
}, {
|
||||
"name": "internet explorer",
|
||||
"version": "9",
|
||||
"url": "http://maxantoni.de/doctype.html"
|
||||
}, {
|
||||
"name": "internet explorer",
|
||||
"version": "10"
|
||||
}]
|
||||
}
|
||||
1
samples/client/petstore-security-test/javascript/node_modules/lolex/.npmignore
generated
vendored
Normal file
1
samples/client/petstore-security-test/javascript/node_modules/lolex/.npmignore
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/node_modules
|
||||
10
samples/client/petstore-security-test/javascript/node_modules/lolex/.travis.yml
generated
vendored
Normal file
10
samples/client/petstore-security-test/javascript/node_modules/lolex/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
language: node_js
|
||||
|
||||
sudo: false
|
||||
|
||||
node_js:
|
||||
- "0.10"
|
||||
- "0.12"
|
||||
script:
|
||||
- "./script/ci-test.sh"
|
||||
|
||||
11
samples/client/petstore-security-test/javascript/node_modules/lolex/LICENSE
generated
vendored
Normal file
11
samples/client/petstore-security-test/javascript/node_modules/lolex/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
Copyright (c) 2010-2014, Christian Johansen, christian@cjohansen.no. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
139
samples/client/petstore-security-test/javascript/node_modules/lolex/Readme.md
generated
vendored
Normal file
139
samples/client/petstore-security-test/javascript/node_modules/lolex/Readme.md
generated
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
# Lolex [](http://travis-ci.org/sinonjs/lolex)
|
||||
|
||||
JavaScript implementation of the timer APIs; `setTimeout`, `clearTimeout`,
|
||||
`setImmediate`, `clearImmediate`, `setInterval`, `clearInterval`, and
|
||||
`requestAnimationFrame`, along with a clock instance that controls the flow of
|
||||
time. Lolex also provides a `Date` implementation that gets its time from the
|
||||
clock.
|
||||
|
||||
Lolex can be used to simulate passing time in automated tests and other
|
||||
situations where you want the scheduling semantics, but don't want to actually
|
||||
wait. Lolex is extracted from [Sinon.JS](https://github.com/sinonjs/sinon.js).
|
||||
|
||||
## Installation
|
||||
|
||||
Lolex can be installed using `npm`:
|
||||
|
||||
```sh
|
||||
npm install lolex
|
||||
```
|
||||
|
||||
If you want to use Lolex in a browser, you have a few options. Releases are
|
||||
hosted on the [sinonjs.org](http://sinonjs.org/download/) website. You can also
|
||||
get the node module and build a file for the browser using browserify:
|
||||
|
||||
```sh
|
||||
npm install lolex
|
||||
npm install browserify # If you don't already have it globally installed
|
||||
browserify node_modules/lolex/lolex.js
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
To use lolex, create a new clock, schedule events on it using the timer
|
||||
functions and pass time using the `tick` method.
|
||||
|
||||
```js
|
||||
// In the browser distribution, a global `lolex` is already available
|
||||
var lolex = require("lolex");
|
||||
var clock = lolex.createClock();
|
||||
|
||||
clock.setTimeout(function () {
|
||||
console.log("The poblano is a mild chili pepper originating in the state of Puebla, Mexico.");
|
||||
}, 15);
|
||||
|
||||
// ...
|
||||
|
||||
clock.tick(15);
|
||||
```
|
||||
|
||||
Upon executing the last line, an interesting fact about the
|
||||
[Poblano](http://en.wikipedia.org/wiki/Poblano) will be printed synchronously to
|
||||
the screen. If you want to simulate asynchronous behavior, you have to use your
|
||||
imagination when calling the various functions.
|
||||
|
||||
### Faking the native timers
|
||||
|
||||
When using lolex to test timers, you will most likely want to replace the native
|
||||
timers such that calling `setTimeout` actually schedules a callback with your
|
||||
clock instance, not the browser's internals.
|
||||
|
||||
To hijack timers in another context, use the `install` method. You can then call
|
||||
`uninstall` later to restore things as they were again.
|
||||
|
||||
```js
|
||||
var lolex = require("lolex");
|
||||
var clock = lolex.install(window);
|
||||
|
||||
window.setTimeout(fn, 15); // Schedules with clock.setTimeout
|
||||
|
||||
clock.uninstall();
|
||||
|
||||
// window.setTimeout is restored to the native implementation
|
||||
```
|
||||
|
||||
In 90% av the times, you want to install the timers onto the global object.
|
||||
Calling `install` with no arguments achieves this:
|
||||
|
||||
```js
|
||||
var clock = lolex.install();
|
||||
|
||||
// Equivalent to
|
||||
// var clock = lolex.install(typeof global !== "undefined" ? global : window);
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
### `var clock = lolex.createClock([now])`
|
||||
|
||||
### `var clock = lolex.install([context[, now[, toFake]]])`
|
||||
|
||||
### `var clock = lolex.install([now[, toFake]])`
|
||||
|
||||
### `var id = clock.setTimeout(callback, timeout)`
|
||||
|
||||
### `clock.clearTimeout(id)`
|
||||
|
||||
### `var id = clock.setInterval(callback, timeout)`
|
||||
|
||||
### `clock.clearInterval(id)`
|
||||
|
||||
### `var id = clock.setImmediate(callback)`
|
||||
|
||||
### `clock.clearImmediate(id)`
|
||||
|
||||
### `clock.tick(time)`
|
||||
|
||||
### `clock.setSystemTime([now])`
|
||||
This simulates a user changing the system clock while your program is running.
|
||||
It affects the current time but it does not in itself cause e.g. timers to fire; they will fire exactly as they would have done without the call to setSystemTime().
|
||||
|
||||
### `clock.uninstall()`
|
||||
|
||||
### `Date`
|
||||
|
||||
## Running tests
|
||||
|
||||
Lolex has a comprehensive test suite. If you're thinking of contributing bug
|
||||
fixes or suggest new features, you need to make sure you have not broken any
|
||||
tests. You are also expected to add tests for any new behavior.
|
||||
|
||||
### On node:
|
||||
|
||||
```sh
|
||||
npm test
|
||||
```
|
||||
|
||||
Or, if you prefer slightly less verbose output:
|
||||
|
||||
```
|
||||
mocha ./test/lolex-test.js
|
||||
```
|
||||
|
||||
### In the browser
|
||||
|
||||
|
||||
|
||||
## License
|
||||
|
||||
BSD 3-clause "New" or "Revised" License (see LICENSE file)
|
||||
525
samples/client/petstore-security-test/javascript/node_modules/lolex/lolex.js
generated
vendored
Normal file
525
samples/client/petstore-security-test/javascript/node_modules/lolex/lolex.js
generated
vendored
Normal file
@@ -0,0 +1,525 @@
|
||||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.lolex=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||||
(function (global){
|
||||
/*global global, window*/
|
||||
/**
|
||||
* @author Christian Johansen (christian@cjohansen.no) and contributors
|
||||
* @license BSD
|
||||
*
|
||||
* Copyright (c) 2010-2014 Christian Johansen
|
||||
*/
|
||||
|
||||
(function (global) {
|
||||
"use strict";
|
||||
|
||||
// Make properties writable in IE, as per
|
||||
// http://www.adequatelygood.com/Replacing-setTimeout-Globally.html
|
||||
// JSLint being anal
|
||||
var glbl = global;
|
||||
|
||||
global.setTimeout = glbl.setTimeout;
|
||||
global.clearTimeout = glbl.clearTimeout;
|
||||
global.setInterval = glbl.setInterval;
|
||||
global.clearInterval = glbl.clearInterval;
|
||||
global.Date = glbl.Date;
|
||||
|
||||
// setImmediate is not a standard function
|
||||
// avoid adding the prop to the window object if not present
|
||||
if('setImmediate' in global) {
|
||||
global.setImmediate = glbl.setImmediate;
|
||||
global.clearImmediate = glbl.clearImmediate;
|
||||
}
|
||||
|
||||
// node expects setTimeout/setInterval to return a fn object w/ .ref()/.unref()
|
||||
// browsers, a number.
|
||||
// see https://github.com/cjohansen/Sinon.JS/pull/436
|
||||
|
||||
var NOOP = function () { return undefined; };
|
||||
var timeoutResult = setTimeout(NOOP, 0);
|
||||
var addTimerReturnsObject = typeof timeoutResult === "object";
|
||||
clearTimeout(timeoutResult);
|
||||
|
||||
var NativeDate = Date;
|
||||
var uniqueTimerId = 1;
|
||||
|
||||
/**
|
||||
* Parse strings like "01:10:00" (meaning 1 hour, 10 minutes, 0 seconds) into
|
||||
* number of milliseconds. This is used to support human-readable strings passed
|
||||
* to clock.tick()
|
||||
*/
|
||||
function parseTime(str) {
|
||||
if (!str) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var strings = str.split(":");
|
||||
var l = strings.length, i = l;
|
||||
var ms = 0, parsed;
|
||||
|
||||
if (l > 3 || !/^(\d\d:){0,2}\d\d?$/.test(str)) {
|
||||
throw new Error("tick only understands numbers and 'h:m:s'");
|
||||
}
|
||||
|
||||
while (i--) {
|
||||
parsed = parseInt(strings[i], 10);
|
||||
|
||||
if (parsed >= 60) {
|
||||
throw new Error("Invalid time " + str);
|
||||
}
|
||||
|
||||
ms += parsed * Math.pow(60, (l - i - 1));
|
||||
}
|
||||
|
||||
return ms * 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to grok the `now` parameter to createClock.
|
||||
*/
|
||||
function getEpoch(epoch) {
|
||||
if (!epoch) { return 0; }
|
||||
if (typeof epoch.getTime === "function") { return epoch.getTime(); }
|
||||
if (typeof epoch === "number") { return epoch; }
|
||||
throw new TypeError("now should be milliseconds since UNIX epoch");
|
||||
}
|
||||
|
||||
function inRange(from, to, timer) {
|
||||
return timer && timer.callAt >= from && timer.callAt <= to;
|
||||
}
|
||||
|
||||
function mirrorDateProperties(target, source) {
|
||||
var prop;
|
||||
for (prop in source) {
|
||||
if (source.hasOwnProperty(prop)) {
|
||||
target[prop] = source[prop];
|
||||
}
|
||||
}
|
||||
|
||||
// set special now implementation
|
||||
if (source.now) {
|
||||
target.now = function now() {
|
||||
return target.clock.now;
|
||||
};
|
||||
} else {
|
||||
delete target.now;
|
||||
}
|
||||
|
||||
// set special toSource implementation
|
||||
if (source.toSource) {
|
||||
target.toSource = function toSource() {
|
||||
return source.toSource();
|
||||
};
|
||||
} else {
|
||||
delete target.toSource;
|
||||
}
|
||||
|
||||
// set special toString implementation
|
||||
target.toString = function toString() {
|
||||
return source.toString();
|
||||
};
|
||||
|
||||
target.prototype = source.prototype;
|
||||
target.parse = source.parse;
|
||||
target.UTC = source.UTC;
|
||||
target.prototype.toUTCString = source.prototype.toUTCString;
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
function createDate() {
|
||||
function ClockDate(year, month, date, hour, minute, second, ms) {
|
||||
// Defensive and verbose to avoid potential harm in passing
|
||||
// explicit undefined when user does not pass argument
|
||||
switch (arguments.length) {
|
||||
case 0:
|
||||
return new NativeDate(ClockDate.clock.now);
|
||||
case 1:
|
||||
return new NativeDate(year);
|
||||
case 2:
|
||||
return new NativeDate(year, month);
|
||||
case 3:
|
||||
return new NativeDate(year, month, date);
|
||||
case 4:
|
||||
return new NativeDate(year, month, date, hour);
|
||||
case 5:
|
||||
return new NativeDate(year, month, date, hour, minute);
|
||||
case 6:
|
||||
return new NativeDate(year, month, date, hour, minute, second);
|
||||
default:
|
||||
return new NativeDate(year, month, date, hour, minute, second, ms);
|
||||
}
|
||||
}
|
||||
|
||||
return mirrorDateProperties(ClockDate, NativeDate);
|
||||
}
|
||||
|
||||
function addTimer(clock, timer) {
|
||||
if (timer.func === undefined) {
|
||||
throw new Error("Callback must be provided to timer calls");
|
||||
}
|
||||
|
||||
if (!clock.timers) {
|
||||
clock.timers = {};
|
||||
}
|
||||
|
||||
timer.id = uniqueTimerId++;
|
||||
timer.createdAt = clock.now;
|
||||
timer.callAt = clock.now + (timer.delay || (clock.duringTick ? 1 : 0));
|
||||
|
||||
clock.timers[timer.id] = timer;
|
||||
|
||||
if (addTimerReturnsObject) {
|
||||
return {
|
||||
id: timer.id,
|
||||
ref: NOOP,
|
||||
unref: NOOP
|
||||
};
|
||||
}
|
||||
|
||||
return timer.id;
|
||||
}
|
||||
|
||||
|
||||
function compareTimers(a, b) {
|
||||
// Sort first by absolute timing
|
||||
if (a.callAt < b.callAt) {
|
||||
return -1;
|
||||
}
|
||||
if (a.callAt > b.callAt) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort next by immediate, immediate timers take precedence
|
||||
if (a.immediate && !b.immediate) {
|
||||
return -1;
|
||||
}
|
||||
if (!a.immediate && b.immediate) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort next by creation time, earlier-created timers take precedence
|
||||
if (a.createdAt < b.createdAt) {
|
||||
return -1;
|
||||
}
|
||||
if (a.createdAt > b.createdAt) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort next by id, lower-id timers take precedence
|
||||
if (a.id < b.id) {
|
||||
return -1;
|
||||
}
|
||||
if (a.id > b.id) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// As timer ids are unique, no fallback `0` is necessary
|
||||
}
|
||||
|
||||
function firstTimerInRange(clock, from, to) {
|
||||
var timers = clock.timers,
|
||||
timer = null,
|
||||
id,
|
||||
isInRange;
|
||||
|
||||
for (id in timers) {
|
||||
if (timers.hasOwnProperty(id)) {
|
||||
isInRange = inRange(from, to, timers[id]);
|
||||
|
||||
if (isInRange && (!timer || compareTimers(timer, timers[id]) === 1)) {
|
||||
timer = timers[id];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return timer;
|
||||
}
|
||||
|
||||
function callTimer(clock, timer) {
|
||||
var exception;
|
||||
|
||||
if (typeof timer.interval === "number") {
|
||||
clock.timers[timer.id].callAt += timer.interval;
|
||||
} else {
|
||||
delete clock.timers[timer.id];
|
||||
}
|
||||
|
||||
try {
|
||||
if (typeof timer.func === "function") {
|
||||
timer.func.apply(null, timer.args);
|
||||
} else {
|
||||
eval(timer.func);
|
||||
}
|
||||
} catch (e) {
|
||||
exception = e;
|
||||
}
|
||||
|
||||
if (!clock.timers[timer.id]) {
|
||||
if (exception) {
|
||||
throw exception;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (exception) {
|
||||
throw exception;
|
||||
}
|
||||
}
|
||||
|
||||
function timerType(timer) {
|
||||
if (timer.immediate) {
|
||||
return "Immediate";
|
||||
} else if (typeof timer.interval !== "undefined") {
|
||||
return "Interval";
|
||||
} else {
|
||||
return "Timeout";
|
||||
}
|
||||
}
|
||||
|
||||
function clearTimer(clock, timerId, ttype) {
|
||||
if (!timerId) {
|
||||
// null appears to be allowed in most browsers, and appears to be
|
||||
// relied upon by some libraries, like Bootstrap carousel
|
||||
return;
|
||||
}
|
||||
|
||||
if (!clock.timers) {
|
||||
clock.timers = [];
|
||||
}
|
||||
|
||||
// in Node, timerId is an object with .ref()/.unref(), and
|
||||
// its .id field is the actual timer id.
|
||||
if (typeof timerId === "object") {
|
||||
timerId = timerId.id;
|
||||
}
|
||||
|
||||
if (clock.timers.hasOwnProperty(timerId)) {
|
||||
// check that the ID matches a timer of the correct type
|
||||
var timer = clock.timers[timerId];
|
||||
if (timerType(timer) === ttype) {
|
||||
delete clock.timers[timerId];
|
||||
} else {
|
||||
throw new Error("Cannot clear timer: timer created with set" + ttype + "() but cleared with clear" + timerType(timer) + "()");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function uninstall(clock, target) {
|
||||
var method,
|
||||
i,
|
||||
l;
|
||||
|
||||
for (i = 0, l = clock.methods.length; i < l; i++) {
|
||||
method = clock.methods[i];
|
||||
|
||||
if (target[method].hadOwnProperty) {
|
||||
target[method] = clock["_" + method];
|
||||
} else {
|
||||
try {
|
||||
delete target[method];
|
||||
} catch (ignore) {}
|
||||
}
|
||||
}
|
||||
|
||||
// Prevent multiple executions which will completely remove these props
|
||||
clock.methods = [];
|
||||
}
|
||||
|
||||
function hijackMethod(target, method, clock) {
|
||||
var prop;
|
||||
|
||||
clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(target, method);
|
||||
clock["_" + method] = target[method];
|
||||
|
||||
if (method === "Date") {
|
||||
var date = mirrorDateProperties(clock[method], target[method]);
|
||||
target[method] = date;
|
||||
} else {
|
||||
target[method] = function () {
|
||||
return clock[method].apply(clock, arguments);
|
||||
};
|
||||
|
||||
for (prop in clock[method]) {
|
||||
if (clock[method].hasOwnProperty(prop)) {
|
||||
target[method][prop] = clock[method][prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
target[method].clock = clock;
|
||||
}
|
||||
|
||||
var timers = {
|
||||
setTimeout: setTimeout,
|
||||
clearTimeout: clearTimeout,
|
||||
setImmediate: global.setImmediate,
|
||||
clearImmediate: global.clearImmediate,
|
||||
setInterval: setInterval,
|
||||
clearInterval: clearInterval,
|
||||
Date: Date
|
||||
};
|
||||
|
||||
var keys = Object.keys || function (obj) {
|
||||
var ks = [],
|
||||
key;
|
||||
|
||||
for (key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
ks.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
return ks;
|
||||
};
|
||||
|
||||
exports.timers = timers;
|
||||
|
||||
function createClock(now) {
|
||||
var clock = {
|
||||
now: getEpoch(now),
|
||||
timeouts: {},
|
||||
Date: createDate()
|
||||
};
|
||||
|
||||
clock.Date.clock = clock;
|
||||
|
||||
clock.setTimeout = function setTimeout(func, timeout) {
|
||||
return addTimer(clock, {
|
||||
func: func,
|
||||
args: Array.prototype.slice.call(arguments, 2),
|
||||
delay: timeout
|
||||
});
|
||||
};
|
||||
|
||||
clock.clearTimeout = function clearTimeout(timerId) {
|
||||
return clearTimer(clock, timerId, "Timeout");
|
||||
};
|
||||
|
||||
clock.setInterval = function setInterval(func, timeout) {
|
||||
return addTimer(clock, {
|
||||
func: func,
|
||||
args: Array.prototype.slice.call(arguments, 2),
|
||||
delay: timeout,
|
||||
interval: timeout
|
||||
});
|
||||
};
|
||||
|
||||
clock.clearInterval = function clearInterval(timerId) {
|
||||
return clearTimer(clock, timerId, "Interval");
|
||||
};
|
||||
|
||||
clock.setImmediate = function setImmediate(func) {
|
||||
return addTimer(clock, {
|
||||
func: func,
|
||||
args: Array.prototype.slice.call(arguments, 1),
|
||||
immediate: true
|
||||
});
|
||||
};
|
||||
|
||||
clock.clearImmediate = function clearImmediate(timerId) {
|
||||
return clearTimer(clock, timerId, "Immediate");
|
||||
};
|
||||
|
||||
clock.tick = function tick(ms) {
|
||||
ms = typeof ms === "number" ? ms : parseTime(ms);
|
||||
var tickFrom = clock.now, tickTo = clock.now + ms, previous = clock.now;
|
||||
var timer = firstTimerInRange(clock, tickFrom, tickTo);
|
||||
var oldNow;
|
||||
|
||||
clock.duringTick = true;
|
||||
|
||||
var firstException;
|
||||
while (timer && tickFrom <= tickTo) {
|
||||
if (clock.timers[timer.id]) {
|
||||
tickFrom = clock.now = timer.callAt;
|
||||
try {
|
||||
oldNow = clock.now;
|
||||
callTimer(clock, timer);
|
||||
// compensate for any setSystemTime() call during timer callback
|
||||
if (oldNow !== clock.now) {
|
||||
tickFrom += clock.now - oldNow;
|
||||
tickTo += clock.now - oldNow;
|
||||
previous += clock.now - oldNow;
|
||||
}
|
||||
} catch (e) {
|
||||
firstException = firstException || e;
|
||||
}
|
||||
}
|
||||
|
||||
timer = firstTimerInRange(clock, previous, tickTo);
|
||||
previous = tickFrom;
|
||||
}
|
||||
|
||||
clock.duringTick = false;
|
||||
clock.now = tickTo;
|
||||
|
||||
if (firstException) {
|
||||
throw firstException;
|
||||
}
|
||||
|
||||
return clock.now;
|
||||
};
|
||||
|
||||
clock.reset = function reset() {
|
||||
clock.timers = {};
|
||||
};
|
||||
|
||||
clock.setSystemTime = function setSystemTime(now) {
|
||||
// determine time difference
|
||||
var newNow = getEpoch(now);
|
||||
var difference = newNow - clock.now;
|
||||
|
||||
// update 'system clock'
|
||||
clock.now = newNow;
|
||||
|
||||
// update timers and intervals to keep them stable
|
||||
for (var id in clock.timers) {
|
||||
if (clock.timers.hasOwnProperty(id)) {
|
||||
var timer = clock.timers[id];
|
||||
timer.createdAt += difference;
|
||||
timer.callAt += difference;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return clock;
|
||||
}
|
||||
exports.createClock = createClock;
|
||||
|
||||
exports.install = function install(target, now, toFake) {
|
||||
var i,
|
||||
l;
|
||||
|
||||
if (typeof target === "number") {
|
||||
toFake = now;
|
||||
now = target;
|
||||
target = null;
|
||||
}
|
||||
|
||||
if (!target) {
|
||||
target = global;
|
||||
}
|
||||
|
||||
var clock = createClock(now);
|
||||
|
||||
clock.uninstall = function () {
|
||||
uninstall(clock, target);
|
||||
};
|
||||
|
||||
clock.methods = toFake || [];
|
||||
|
||||
if (clock.methods.length === 0) {
|
||||
clock.methods = keys(timers);
|
||||
}
|
||||
|
||||
for (i = 0, l = clock.methods.length; i < l; i++) {
|
||||
hijackMethod(target, clock.methods[i], clock);
|
||||
}
|
||||
|
||||
return clock;
|
||||
};
|
||||
|
||||
}(global || this));
|
||||
|
||||
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
||||
},{}]},{},[1])(1)
|
||||
});
|
||||
90
samples/client/petstore-security-test/javascript/node_modules/lolex/package.json
generated
vendored
Normal file
90
samples/client/petstore-security-test/javascript/node_modules/lolex/package.json
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"lolex@1.3.2",
|
||||
"/Users/williamcheng/Code/may2016/swagger-codegen/samples/client/petstore-security-test/javascript/node_modules/sinon"
|
||||
]
|
||||
],
|
||||
"_from": "lolex@1.3.2",
|
||||
"_id": "lolex@1.3.2",
|
||||
"_inCache": true,
|
||||
"_installable": true,
|
||||
"_location": "/lolex",
|
||||
"_nodeVersion": "0.10.40",
|
||||
"_npmUser": {
|
||||
"email": "morgan@roderick.dk",
|
||||
"name": "mrgnrdrck"
|
||||
},
|
||||
"_npmVersion": "2.14.1",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"name": "lolex",
|
||||
"raw": "lolex@1.3.2",
|
||||
"rawSpec": "1.3.2",
|
||||
"scope": null,
|
||||
"spec": "1.3.2",
|
||||
"type": "version"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/sinon"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz",
|
||||
"_shasum": "7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31",
|
||||
"_shrinkwrap": null,
|
||||
"_spec": "lolex@1.3.2",
|
||||
"_where": "/Users/williamcheng/Code/may2016/swagger-codegen/samples/client/petstore-security-test/javascript/node_modules/sinon",
|
||||
"author": {
|
||||
"name": "Christian Johansen"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "http://github.com/sinonjs/lolex/issues"
|
||||
},
|
||||
"dependencies": {},
|
||||
"description": "Fake JavaScript timers",
|
||||
"devDependencies": {
|
||||
"browserify": ">=5.9 <6",
|
||||
"jslint": "^0.6.6",
|
||||
"mocha": ">=1.21 <2",
|
||||
"mochify": ">=1.0 <2",
|
||||
"referee": "~1.0",
|
||||
"sinon": "~1.10"
|
||||
},
|
||||
"directories": {},
|
||||
"dist": {
|
||||
"shasum": "7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31",
|
||||
"tarball": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz"
|
||||
},
|
||||
"gitHead": "9457345f0bcb0c98d085fae5ea18c7efd950a703",
|
||||
"homepage": "http://github.com/sinonjs/lolex",
|
||||
"license": "BSD-3-Clause",
|
||||
"main": "./src/lolex.js",
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "cjohansen",
|
||||
"email": "christian@cjohansen.no"
|
||||
},
|
||||
{
|
||||
"name": "mrgnrdrck",
|
||||
"email": "morgan@roderick.dk"
|
||||
},
|
||||
{
|
||||
"name": "mantoni",
|
||||
"email": "mail@maxantoni.de"
|
||||
}
|
||||
],
|
||||
"name": "lolex",
|
||||
"optionalDependencies": {},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+ssh://git@github.com/sinonjs/lolex.git"
|
||||
},
|
||||
"scripts": {
|
||||
"bundle": "browserify -s lolex -o lolex.js src/lolex.js",
|
||||
"lint": "$(npm bin)/jslint src/**/*.js",
|
||||
"test": "npm run lint && npm run test-node && npm run test-headless && npm run test-cloud",
|
||||
"test-cloud": "mochify --wd",
|
||||
"test-headless": "mochify",
|
||||
"test-node": "mocha -R dot"
|
||||
},
|
||||
"version": "1.3.2"
|
||||
}
|
||||
5
samples/client/petstore-security-test/javascript/node_modules/lolex/script/ci-test.sh
generated
vendored
Executable file
5
samples/client/petstore-security-test/javascript/node_modules/lolex/script/ci-test.sh
generated
vendored
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
npm run test-node
|
||||
npm run test-headless
|
||||
519
samples/client/petstore-security-test/javascript/node_modules/lolex/src/lolex.js
generated
vendored
Normal file
519
samples/client/petstore-security-test/javascript/node_modules/lolex/src/lolex.js
generated
vendored
Normal file
@@ -0,0 +1,519 @@
|
||||
/*global global, window*/
|
||||
/**
|
||||
* @author Christian Johansen (christian@cjohansen.no) and contributors
|
||||
* @license BSD
|
||||
*
|
||||
* Copyright (c) 2010-2014 Christian Johansen
|
||||
*/
|
||||
|
||||
(function (global) {
|
||||
"use strict";
|
||||
|
||||
// Make properties writable in IE, as per
|
||||
// http://www.adequatelygood.com/Replacing-setTimeout-Globally.html
|
||||
// JSLint being anal
|
||||
var glbl = global;
|
||||
|
||||
global.setTimeout = glbl.setTimeout;
|
||||
global.clearTimeout = glbl.clearTimeout;
|
||||
global.setInterval = glbl.setInterval;
|
||||
global.clearInterval = glbl.clearInterval;
|
||||
global.Date = glbl.Date;
|
||||
|
||||
// setImmediate is not a standard function
|
||||
// avoid adding the prop to the window object if not present
|
||||
if('setImmediate' in global) {
|
||||
global.setImmediate = glbl.setImmediate;
|
||||
global.clearImmediate = glbl.clearImmediate;
|
||||
}
|
||||
|
||||
// node expects setTimeout/setInterval to return a fn object w/ .ref()/.unref()
|
||||
// browsers, a number.
|
||||
// see https://github.com/cjohansen/Sinon.JS/pull/436
|
||||
|
||||
var NOOP = function () { return undefined; };
|
||||
var timeoutResult = setTimeout(NOOP, 0);
|
||||
var addTimerReturnsObject = typeof timeoutResult === "object";
|
||||
clearTimeout(timeoutResult);
|
||||
|
||||
var NativeDate = Date;
|
||||
var uniqueTimerId = 1;
|
||||
|
||||
/**
|
||||
* Parse strings like "01:10:00" (meaning 1 hour, 10 minutes, 0 seconds) into
|
||||
* number of milliseconds. This is used to support human-readable strings passed
|
||||
* to clock.tick()
|
||||
*/
|
||||
function parseTime(str) {
|
||||
if (!str) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var strings = str.split(":");
|
||||
var l = strings.length, i = l;
|
||||
var ms = 0, parsed;
|
||||
|
||||
if (l > 3 || !/^(\d\d:){0,2}\d\d?$/.test(str)) {
|
||||
throw new Error("tick only understands numbers and 'h:m:s'");
|
||||
}
|
||||
|
||||
while (i--) {
|
||||
parsed = parseInt(strings[i], 10);
|
||||
|
||||
if (parsed >= 60) {
|
||||
throw new Error("Invalid time " + str);
|
||||
}
|
||||
|
||||
ms += parsed * Math.pow(60, (l - i - 1));
|
||||
}
|
||||
|
||||
return ms * 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to grok the `now` parameter to createClock.
|
||||
*/
|
||||
function getEpoch(epoch) {
|
||||
if (!epoch) { return 0; }
|
||||
if (typeof epoch.getTime === "function") { return epoch.getTime(); }
|
||||
if (typeof epoch === "number") { return epoch; }
|
||||
throw new TypeError("now should be milliseconds since UNIX epoch");
|
||||
}
|
||||
|
||||
function inRange(from, to, timer) {
|
||||
return timer && timer.callAt >= from && timer.callAt <= to;
|
||||
}
|
||||
|
||||
function mirrorDateProperties(target, source) {
|
||||
var prop;
|
||||
for (prop in source) {
|
||||
if (source.hasOwnProperty(prop)) {
|
||||
target[prop] = source[prop];
|
||||
}
|
||||
}
|
||||
|
||||
// set special now implementation
|
||||
if (source.now) {
|
||||
target.now = function now() {
|
||||
return target.clock.now;
|
||||
};
|
||||
} else {
|
||||
delete target.now;
|
||||
}
|
||||
|
||||
// set special toSource implementation
|
||||
if (source.toSource) {
|
||||
target.toSource = function toSource() {
|
||||
return source.toSource();
|
||||
};
|
||||
} else {
|
||||
delete target.toSource;
|
||||
}
|
||||
|
||||
// set special toString implementation
|
||||
target.toString = function toString() {
|
||||
return source.toString();
|
||||
};
|
||||
|
||||
target.prototype = source.prototype;
|
||||
target.parse = source.parse;
|
||||
target.UTC = source.UTC;
|
||||
target.prototype.toUTCString = source.prototype.toUTCString;
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
function createDate() {
|
||||
function ClockDate(year, month, date, hour, minute, second, ms) {
|
||||
// Defensive and verbose to avoid potential harm in passing
|
||||
// explicit undefined when user does not pass argument
|
||||
switch (arguments.length) {
|
||||
case 0:
|
||||
return new NativeDate(ClockDate.clock.now);
|
||||
case 1:
|
||||
return new NativeDate(year);
|
||||
case 2:
|
||||
return new NativeDate(year, month);
|
||||
case 3:
|
||||
return new NativeDate(year, month, date);
|
||||
case 4:
|
||||
return new NativeDate(year, month, date, hour);
|
||||
case 5:
|
||||
return new NativeDate(year, month, date, hour, minute);
|
||||
case 6:
|
||||
return new NativeDate(year, month, date, hour, minute, second);
|
||||
default:
|
||||
return new NativeDate(year, month, date, hour, minute, second, ms);
|
||||
}
|
||||
}
|
||||
|
||||
return mirrorDateProperties(ClockDate, NativeDate);
|
||||
}
|
||||
|
||||
function addTimer(clock, timer) {
|
||||
if (timer.func === undefined) {
|
||||
throw new Error("Callback must be provided to timer calls");
|
||||
}
|
||||
|
||||
if (!clock.timers) {
|
||||
clock.timers = {};
|
||||
}
|
||||
|
||||
timer.id = uniqueTimerId++;
|
||||
timer.createdAt = clock.now;
|
||||
timer.callAt = clock.now + (timer.delay || (clock.duringTick ? 1 : 0));
|
||||
|
||||
clock.timers[timer.id] = timer;
|
||||
|
||||
if (addTimerReturnsObject) {
|
||||
return {
|
||||
id: timer.id,
|
||||
ref: NOOP,
|
||||
unref: NOOP
|
||||
};
|
||||
}
|
||||
|
||||
return timer.id;
|
||||
}
|
||||
|
||||
|
||||
function compareTimers(a, b) {
|
||||
// Sort first by absolute timing
|
||||
if (a.callAt < b.callAt) {
|
||||
return -1;
|
||||
}
|
||||
if (a.callAt > b.callAt) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort next by immediate, immediate timers take precedence
|
||||
if (a.immediate && !b.immediate) {
|
||||
return -1;
|
||||
}
|
||||
if (!a.immediate && b.immediate) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort next by creation time, earlier-created timers take precedence
|
||||
if (a.createdAt < b.createdAt) {
|
||||
return -1;
|
||||
}
|
||||
if (a.createdAt > b.createdAt) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort next by id, lower-id timers take precedence
|
||||
if (a.id < b.id) {
|
||||
return -1;
|
||||
}
|
||||
if (a.id > b.id) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// As timer ids are unique, no fallback `0` is necessary
|
||||
}
|
||||
|
||||
function firstTimerInRange(clock, from, to) {
|
||||
var timers = clock.timers,
|
||||
timer = null,
|
||||
id,
|
||||
isInRange;
|
||||
|
||||
for (id in timers) {
|
||||
if (timers.hasOwnProperty(id)) {
|
||||
isInRange = inRange(from, to, timers[id]);
|
||||
|
||||
if (isInRange && (!timer || compareTimers(timer, timers[id]) === 1)) {
|
||||
timer = timers[id];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return timer;
|
||||
}
|
||||
|
||||
function callTimer(clock, timer) {
|
||||
var exception;
|
||||
|
||||
if (typeof timer.interval === "number") {
|
||||
clock.timers[timer.id].callAt += timer.interval;
|
||||
} else {
|
||||
delete clock.timers[timer.id];
|
||||
}
|
||||
|
||||
try {
|
||||
if (typeof timer.func === "function") {
|
||||
timer.func.apply(null, timer.args);
|
||||
} else {
|
||||
eval(timer.func);
|
||||
}
|
||||
} catch (e) {
|
||||
exception = e;
|
||||
}
|
||||
|
||||
if (!clock.timers[timer.id]) {
|
||||
if (exception) {
|
||||
throw exception;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (exception) {
|
||||
throw exception;
|
||||
}
|
||||
}
|
||||
|
||||
function timerType(timer) {
|
||||
if (timer.immediate) {
|
||||
return "Immediate";
|
||||
} else if (typeof timer.interval !== "undefined") {
|
||||
return "Interval";
|
||||
} else {
|
||||
return "Timeout";
|
||||
}
|
||||
}
|
||||
|
||||
function clearTimer(clock, timerId, ttype) {
|
||||
if (!timerId) {
|
||||
// null appears to be allowed in most browsers, and appears to be
|
||||
// relied upon by some libraries, like Bootstrap carousel
|
||||
return;
|
||||
}
|
||||
|
||||
if (!clock.timers) {
|
||||
clock.timers = [];
|
||||
}
|
||||
|
||||
// in Node, timerId is an object with .ref()/.unref(), and
|
||||
// its .id field is the actual timer id.
|
||||
if (typeof timerId === "object") {
|
||||
timerId = timerId.id;
|
||||
}
|
||||
|
||||
if (clock.timers.hasOwnProperty(timerId)) {
|
||||
// check that the ID matches a timer of the correct type
|
||||
var timer = clock.timers[timerId];
|
||||
if (timerType(timer) === ttype) {
|
||||
delete clock.timers[timerId];
|
||||
} else {
|
||||
throw new Error("Cannot clear timer: timer created with set" + ttype + "() but cleared with clear" + timerType(timer) + "()");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function uninstall(clock, target) {
|
||||
var method,
|
||||
i,
|
||||
l;
|
||||
|
||||
for (i = 0, l = clock.methods.length; i < l; i++) {
|
||||
method = clock.methods[i];
|
||||
|
||||
if (target[method].hadOwnProperty) {
|
||||
target[method] = clock["_" + method];
|
||||
} else {
|
||||
try {
|
||||
delete target[method];
|
||||
} catch (ignore) {}
|
||||
}
|
||||
}
|
||||
|
||||
// Prevent multiple executions which will completely remove these props
|
||||
clock.methods = [];
|
||||
}
|
||||
|
||||
function hijackMethod(target, method, clock) {
|
||||
var prop;
|
||||
|
||||
clock[method].hadOwnProperty = Object.prototype.hasOwnProperty.call(target, method);
|
||||
clock["_" + method] = target[method];
|
||||
|
||||
if (method === "Date") {
|
||||
var date = mirrorDateProperties(clock[method], target[method]);
|
||||
target[method] = date;
|
||||
} else {
|
||||
target[method] = function () {
|
||||
return clock[method].apply(clock, arguments);
|
||||
};
|
||||
|
||||
for (prop in clock[method]) {
|
||||
if (clock[method].hasOwnProperty(prop)) {
|
||||
target[method][prop] = clock[method][prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
target[method].clock = clock;
|
||||
}
|
||||
|
||||
var timers = {
|
||||
setTimeout: setTimeout,
|
||||
clearTimeout: clearTimeout,
|
||||
setImmediate: global.setImmediate,
|
||||
clearImmediate: global.clearImmediate,
|
||||
setInterval: setInterval,
|
||||
clearInterval: clearInterval,
|
||||
Date: Date
|
||||
};
|
||||
|
||||
var keys = Object.keys || function (obj) {
|
||||
var ks = [],
|
||||
key;
|
||||
|
||||
for (key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
ks.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
return ks;
|
||||
};
|
||||
|
||||
exports.timers = timers;
|
||||
|
||||
function createClock(now) {
|
||||
var clock = {
|
||||
now: getEpoch(now),
|
||||
timeouts: {},
|
||||
Date: createDate()
|
||||
};
|
||||
|
||||
clock.Date.clock = clock;
|
||||
|
||||
clock.setTimeout = function setTimeout(func, timeout) {
|
||||
return addTimer(clock, {
|
||||
func: func,
|
||||
args: Array.prototype.slice.call(arguments, 2),
|
||||
delay: timeout
|
||||
});
|
||||
};
|
||||
|
||||
clock.clearTimeout = function clearTimeout(timerId) {
|
||||
return clearTimer(clock, timerId, "Timeout");
|
||||
};
|
||||
|
||||
clock.setInterval = function setInterval(func, timeout) {
|
||||
return addTimer(clock, {
|
||||
func: func,
|
||||
args: Array.prototype.slice.call(arguments, 2),
|
||||
delay: timeout,
|
||||
interval: timeout
|
||||
});
|
||||
};
|
||||
|
||||
clock.clearInterval = function clearInterval(timerId) {
|
||||
return clearTimer(clock, timerId, "Interval");
|
||||
};
|
||||
|
||||
clock.setImmediate = function setImmediate(func) {
|
||||
return addTimer(clock, {
|
||||
func: func,
|
||||
args: Array.prototype.slice.call(arguments, 1),
|
||||
immediate: true
|
||||
});
|
||||
};
|
||||
|
||||
clock.clearImmediate = function clearImmediate(timerId) {
|
||||
return clearTimer(clock, timerId, "Immediate");
|
||||
};
|
||||
|
||||
clock.tick = function tick(ms) {
|
||||
ms = typeof ms === "number" ? ms : parseTime(ms);
|
||||
var tickFrom = clock.now, tickTo = clock.now + ms, previous = clock.now;
|
||||
var timer = firstTimerInRange(clock, tickFrom, tickTo);
|
||||
var oldNow;
|
||||
|
||||
clock.duringTick = true;
|
||||
|
||||
var firstException;
|
||||
while (timer && tickFrom <= tickTo) {
|
||||
if (clock.timers[timer.id]) {
|
||||
tickFrom = clock.now = timer.callAt;
|
||||
try {
|
||||
oldNow = clock.now;
|
||||
callTimer(clock, timer);
|
||||
// compensate for any setSystemTime() call during timer callback
|
||||
if (oldNow !== clock.now) {
|
||||
tickFrom += clock.now - oldNow;
|
||||
tickTo += clock.now - oldNow;
|
||||
previous += clock.now - oldNow;
|
||||
}
|
||||
} catch (e) {
|
||||
firstException = firstException || e;
|
||||
}
|
||||
}
|
||||
|
||||
timer = firstTimerInRange(clock, previous, tickTo);
|
||||
previous = tickFrom;
|
||||
}
|
||||
|
||||
clock.duringTick = false;
|
||||
clock.now = tickTo;
|
||||
|
||||
if (firstException) {
|
||||
throw firstException;
|
||||
}
|
||||
|
||||
return clock.now;
|
||||
};
|
||||
|
||||
clock.reset = function reset() {
|
||||
clock.timers = {};
|
||||
};
|
||||
|
||||
clock.setSystemTime = function setSystemTime(now) {
|
||||
// determine time difference
|
||||
var newNow = getEpoch(now);
|
||||
var difference = newNow - clock.now;
|
||||
|
||||
// update 'system clock'
|
||||
clock.now = newNow;
|
||||
|
||||
// update timers and intervals to keep them stable
|
||||
for (var id in clock.timers) {
|
||||
if (clock.timers.hasOwnProperty(id)) {
|
||||
var timer = clock.timers[id];
|
||||
timer.createdAt += difference;
|
||||
timer.callAt += difference;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return clock;
|
||||
}
|
||||
exports.createClock = createClock;
|
||||
|
||||
exports.install = function install(target, now, toFake) {
|
||||
var i,
|
||||
l;
|
||||
|
||||
if (typeof target === "number") {
|
||||
toFake = now;
|
||||
now = target;
|
||||
target = null;
|
||||
}
|
||||
|
||||
if (!target) {
|
||||
target = global;
|
||||
}
|
||||
|
||||
var clock = createClock(now);
|
||||
|
||||
clock.uninstall = function () {
|
||||
uninstall(clock, target);
|
||||
};
|
||||
|
||||
clock.methods = toFake || [];
|
||||
|
||||
if (clock.methods.length === 0) {
|
||||
clock.methods = keys(timers);
|
||||
}
|
||||
|
||||
for (i = 0, l = clock.methods.length; i < l; i++) {
|
||||
hijackMethod(target, clock.methods[i], clock);
|
||||
}
|
||||
|
||||
return clock;
|
||||
};
|
||||
|
||||
}(global || this));
|
||||
1260
samples/client/petstore-security-test/javascript/node_modules/lolex/test/lolex-test.js
generated
vendored
Normal file
1260
samples/client/petstore-security-test/javascript/node_modules/lolex/test/lolex-test.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user