Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
require-inject
Advanced tools
A simple mock injector compatible needing no instrumentation in the libraries being tested
A simple mock injector compatible needing no instrumentation in the libraries being tested
var requireInject = require('require-inject');
var mymod = requireInject('mymod', {
'fs' => {
stat: function (file,cb) {
switch (file) {
case 'testfile1': return cb(null,{})
case 'testfile2': return cb(new Error('ENOENT'))
}
}
}
})
var myglobal = requireInject.installGlobally('myglobal', { … })
var mymod = requireInject( module, mocks )
module is the name of the module you want to require. This is what you'd
pass to require
to load the module from your script. This means that for
relative paths, the path should be relative to your test script, not to the
thing you're injecting dependencies into.
mocks is an object with keys that are the names of the modules you want to mock and values of the mock version of the objects.
requireInject makes it so that when module is required, any of its calls to require for modules inclued in mocks will return the mocked version. It takes care to not impact any other uses of module, any calls to require for it will get a version without mocks.
var mymod = requireInject.withEmptyCache(module, mocks)
As with requireInject
but your require cache will be cleared before requring
the module to have mocks injected into it. This can be useful when your test shares
dependencies with the module to be mocked and you need to mock a transitive
dependency of one of those dependencies. That is:
Test → A → B
ModuleToTest → A → MockedB
If we we didn't clear the cache then ModuleToTest
would get the already
cached version of A
and the MockedB
would never be injected. By clearing the cache
first it means that ModuleToTest
will get it's own copy of A
which will then pick
up any mocks we defined.
Previously to achieve this you would need to have provided a mock for A
,
which, if that isn't what you were testing, could be frustrating busy work.
var myglobal = requireInject.installGlobally( module, mocks)
As with requireInject
, except that the module and its mocks are left in
the require cache and any future requires will end up using them too. This
is helpful particularly in the case of things that defer loading (that is,
do async loading).
var myglobal = requireInject.installGlobally.andClearCache(module, mocks)
As with requireInject.installGlobally
but clear the cache first as with
requireInject.withEmptyCache
. Because this globally clears the cache it
means that any requires after this point will get fresh copies of their
required modules, even if you required them previously.
v1.4.2 (2017-06-27)
Made mocks
in requireInject( module, mocks )
an optional argument.
FAQs
A simple mock injector compatible needing no instrumentation in the libraries being tested
The npm package require-inject receives a total of 17,859 weekly downloads. As such, require-inject popularity was classified as popular.
We found that require-inject demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.