def test_install(self): ''' Test if it install an NPM package. ''' mock = MagicMock(return_value={'retcode': 1, 'stderr': 'error'}) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): self.assertRaises(CommandExecutionError, npm.install, 'coffee-script') mock = MagicMock(return_value={ 'retcode': 0, 'stderr': 'error', 'stdout': '{"salt": ["SALT"]}' }) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): mock_err = MagicMock(return_value='SALT') with patch.object(json, 'loads', mock_err): self.assertEqual(npm.install('coffee-script'), 'SALT') mock = MagicMock(return_value={ 'retcode': 0, 'stderr': 'error', 'stdout': '{"salt": ["SALT"]}' }) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): mock_err = MagicMock(side_effect=ValueError()) with patch.object(json, 'loads', mock_err): self.assertEqual(npm.install('coffee-script'), '{"salt": ["SALT"]}')
def test_install(self): ''' Test if it install an NPM package. ''' mock = MagicMock(return_value={'retcode': 1, 'stderr': 'error'}) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): self.assertRaises(CommandExecutionError, npm.install, 'coffee-script') mock = MagicMock(return_value={'retcode': 0, 'stderr': 'error', 'stdout': '{"salt": ["SALT"]}'}) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): mock_err = MagicMock(return_value='SALT') with patch.object(json, 'loads', mock_err): self.assertEqual(npm.install('coffee-script'), 'SALT') mock = MagicMock(return_value={'retcode': 0, 'stderr': 'error', 'stdout': '{"salt": ["SALT"]}'}) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): mock_err = MagicMock(side_effect=ValueError()) with patch.object(json, 'loads', mock_err): self.assertEqual(npm.install('coffee-script'), '{"salt": ["SALT"]}')
def test_install(self): ''' Test if it installs an NPM package. ''' mock = MagicMock(return_value={'retcode': 1, 'stderr': 'error'}) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): self.assertRaises(CommandExecutionError, npm.install, 'coffee-script') # This is at least somewhat closer to the actual output format. mock_json_out = textwrap.dedent('''\ [ { "salt": "SALT" } ]''') # Successful run, expected output format mock = MagicMock(return_value={ 'retcode': 0, 'stderr': '', 'stdout': mock_json_out }) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): self.assertEqual(npm.install('coffee-script'), [{ u'salt': u'SALT' }]) mock_json_out_extra = textwrap.dedent('''\ Compilation output here [bcrypt] Success: "/tmp/node_modules/bcrypt/foo" is installed via remote" [grpc] Success: "/usr/lib/node_modules/@foo/bar" is installed via remote" [ { "from" : "express@", "name" : "express", "dependencies" : { "escape-html" : { "from" : "escape-html@~1.0.3", "dependencies" : {}, "version" : "1.0.3" } }, "version" : "4.16.3" } ]''') extra_expected = [{ u'dependencies': { u'escape-html': { u'dependencies': {}, u'from': u'escape-html@~1.0.3', u'version': u'1.0.3' } }, u'from': u'express@', u'name': u'express', u'version': u'4.16.3' }] # Successful run, expected output format with additional leading text mock = MagicMock(return_value={ 'retcode': 0, 'stderr': '', 'stdout': mock_json_out_extra }) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): self.assertEqual(npm.install('coffee-script'), extra_expected) # Successful run, unexpected output format mock = MagicMock(return_value={ 'retcode': 0, 'stderr': '', 'stdout': 'SALT' }) with patch.dict(npm.__salt__, {'cmd.run_all': mock}): mock_err = MagicMock(side_effect=ValueError()) # When JSON isn't successfully parsed, return should equal input with patch.object(json, 'loads', mock_err): self.assertEqual(npm.install('coffee-script'), 'SALT')
def test_install(self): """ Test if it installs an NPM package. """ mock = MagicMock(return_value={"retcode": 1, "stderr": "error"}) with patch.dict(npm.__salt__, {"cmd.run_all": mock}): self.assertRaises(CommandExecutionError, npm.install, "coffee-script") # This is at least somewhat closer to the actual output format. mock_json_out = textwrap.dedent("""\ [ { "salt": "SALT" } ]""") # Successful run, expected output format mock = MagicMock(return_value={ "retcode": 0, "stderr": "", "stdout": mock_json_out }) with patch.dict(npm.__salt__, {"cmd.run_all": mock}): self.assertEqual(npm.install("coffee-script"), [{"salt": "SALT"}]) mock_json_out_extra = textwrap.dedent("""\ Compilation output here [bcrypt] Success: "/tmp/node_modules/bcrypt/foo" is installed via remote" [grpc] Success: "/usr/lib/node_modules/@foo/bar" is installed via remote" [ { "from" : "express@", "name" : "express", "dependencies" : { "escape-html" : { "from" : "escape-html@~1.0.3", "dependencies" : {}, "version" : "1.0.3" } }, "version" : "4.16.3" } ]""") extra_expected = [{ "dependencies": { "escape-html": { "dependencies": {}, "from": "escape-html@~1.0.3", "version": "1.0.3", } }, "from": "express@", "name": "express", "version": "4.16.3", }] # Successful run, expected output format with additional leading text mock = MagicMock(return_value={ "retcode": 0, "stderr": "", "stdout": mock_json_out_extra }) with patch.dict(npm.__salt__, {"cmd.run_all": mock}): self.assertEqual(npm.install("coffee-script"), extra_expected) # Successful run, unexpected output format mock = MagicMock(return_value={ "retcode": 0, "stderr": "", "stdout": "SALT" }) with patch.dict(npm.__salt__, {"cmd.run_all": mock}): mock_err = MagicMock(side_effect=ValueError()) # When JSON isn't successfully parsed, return should equal input with patch.object(salt.utils.json, "loads", mock_err): self.assertEqual(npm.install("coffee-script"), "SALT")