Esempio n. 1
0
    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"]}')
Esempio n. 2
0
    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"]}')
Esempio n. 3
0
    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')
Esempio n. 4
0
    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")