def test_create_application(self, hbase_mock):
        registrar = HbaseApplicationRegistrar('1.2.3.4')
        registrar.create_application('pname', 'aname', {'over': 'ride'}, {'def': 'ault'})

        hbase_mock.return_value.table.return_value.put.assert_called_once_with(
            'aname',
            {'cf:package_name': 'pname', 'cf:status': ApplicationState.NOTCREATED, 'cf:overrides': '{"over": "ride"}',
             'cf:defaults': '{"def": "ault"}', 'cf:name': 'aname'})
    def test_get_create_data(self, hbase_mock):
        hbase_mock.return_value.table.return_value.row.return_value = {'cf:create_data': '{"create": "data"}'}

        registrar = HbaseApplicationRegistrar('1.2.3.4')
        result = registrar.get_create_data('name')

        self.assertEqual(result, {"create": "data"})
        hbase_mock.return_value.table.return_value.row.return_value = {}
    def test_table_exists(self, hbase_mock):
        def throwerr(arg1, arg2):
            raise AlreadyExists("%s%s" % (arg1, arg2))

        hbase_mock.return_value.create_table.side_effect = throwerr
        registrar = HbaseApplicationRegistrar('1.2.3.4')
        registrar.set_application_status('name', ApplicationState.CREATED)
        hbase_mock.return_value.table.return_value.put.assert_called_once_with('name', {'cf:information': None,
                                                                                        'cf:status': ApplicationState.CREATED})
    def test_application_exists(self, hbase_mock):
        hbase_mock.return_value.table.return_value.row.return_value = {'cf:status': ApplicationState.CREATED}

        registrar = HbaseApplicationRegistrar('1.2.3.4')
        result = registrar.application_exists('name')
        self.assertEqual(result, True)

        hbase_mock.return_value.table.return_value.row.return_value = {}

        result = registrar.application_exists('name')
        self.assertEqual(result, False)
    def test_list_packages(self, hbase_mock):
        hbase_mock.return_value.table.return_value.scan.return_value = [
            ('name1', {'cf:status': ApplicationState.CREATED, 'cf:package_name': 'p'}),
            ('name2', {'cf:status': ApplicationState.NOTCREATED, 'cf:package_name': 'p'})]

        registrar = HbaseApplicationRegistrar('1.2.3.4')
        result = registrar.list_applications()
        self.assertEqual(result, ['name1'])

        result = registrar.list_applications_for_package('p')
        self.assertEqual(result, ['name1'])

        result = registrar.list_applications_for_package('q')
        self.assertEqual(result, [])
    def test_get_application(self, hbase_mock):
        hbase_mock.return_value.table.return_value.row.return_value = {
            'cf:overrides': '{"over": "ride"}',
            'cf:defaults': '{"def": "aults"}',
            'cf:name': 'name',
            'cf:package_name': 'packagename',
            'cf:status': ApplicationState.CREATED
        }

        registrar = HbaseApplicationRegistrar('1.2.3.4')
        result = registrar.get_application('name')

        self.assertEqual(result, {
            'defaults': {u'def': u'aults'},
            'information': None,
            'name': 'name',
            'overrides': {u'over': u'ride'},
            'package_name': 'packagename',
            'status': ApplicationState.CREATED})

        hbase_mock.return_value.table.return_value.row.return_value = {}

        result = registrar.get_application('name')
        self.assertEqual(result, None)
 def test_delete_package(self, hbase_mock):
     registrar = HbaseApplicationRegistrar('1.2.3.4')
     registrar.delete_application('name')
     hbase_mock.return_value.table.return_value.delete.assert_called_once_with('name')
 def test_set_create_data(self, hbase_mock):
     registrar = HbaseApplicationRegistrar('1.2.3.4')
     registrar.set_create_data('name', {'create': 'data'})
     hbase_mock.return_value.table.return_value.put.assert_called_once_with('name',
                                                                            {'cf:create_data': '{"create": "data"}'})
 def test_set_application_status(self, hbase_mock):
     registrar = HbaseApplicationRegistrar('1.2.3.4')
     registrar.set_application_status('name', ApplicationState.CREATED)
     hbase_mock.return_value.table.return_value.put.assert_called_once_with('name', {'cf:information': None,
                                                                                     'cf:status': ApplicationState.CREATED})