def test_get_tables_info_when_no_table_list_is_provided(self): mocked_table_list_query_cursor = Mock() mocked_table_list_query_cursor.execute = Mock(return_value=True) mocked_table_list_query_cursor.fetchall = Mock(return_value=[['unit'], ['test']]) mocked_table_count_query_cursor = Mock() mocked_table_count_query_cursor.execute = Mock(return_value=True) mocked_table_count_query_cursor.fetchone = Mock(return_value=[10]) columns = { 'table_name': '', 'column_name': 'column', 'data_type': 'string', 'character_maximum_length': '1', 'is_nullable': 'NO', 'column_default': '' } tables_columns = [] columns.update(table_name='unit') tables_columns.append(columns.copy()) columns.update(table_name='test') tables_columns.append(columns.copy()) mocked_table_columns_query_cursor = Mock() mocked_table_columns_query_cursor.execute = Mock(return_value=True) mocked_table_columns_query_cursor.fetchall = Mock(return_value=tables_columns) mocked_table_collation_query_cursor = Mock() mocked_table_collation_query_cursor.execute = Mock(return_value=True) mocked_table_collation_query_cursor.fetchone = Mock(return_value=['en_US.UTF-8']) mocked_table_top_query_cursor = Mock() mocked_table_top_query_cursor.execute = Mock(return_value=True) mocked_table_top_query_cursor.fetchall = Mock(return_value=[]) mocked_psycopg2 = Mock() mocked_psycopg2.cursor = Mock(side_effect=[mocked_table_list_query_cursor, mocked_table_count_query_cursor, mocked_table_columns_query_cursor, mocked_table_collation_query_cursor, mocked_table_top_query_cursor]) mocked_builder = Mock() mocked_builder.build = Mock(return_value=mocked_psycopg2) expected = {'tables': {'test': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'column_name': 'column', 'data_type': 'string', 'is_nullable': 'NO'}], 'count': 10, 'rows': []}, 'unit': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'column_name': 'column', 'data_type': 'string', 'is_nullable': 'NO'}], 'count': 10, 'rows': []}}, 'db_connection_string': 'jdbc:postgresql://test' } assert expected == Postgresql(mocked_builder, self.logger, db_host = 'test').get_all_tables_info(None, None, None)
def test_get_tables_info_when_no_table_list_is_provided(self,__makedict): __makedict.return_value = None mocked_table_list_query_cursor = Mock() mocked_table_list_query_cursor.execute = Mock(return_value=True) mocked_table_list_query_cursor.fetchall = Mock(return_value=[{'TABLE_NAME': 'unit'}, {'TABLE_NAME': 'test'}]) mocked_table_count_query_cursor = Mock() mocked_table_count_query_cursor.execute = Mock(return_value=True) mocked_table_count_query_cursor.fetchone = Mock(return_value=[10]) columns = { 'TABLE_NAME': '', 'COLUMN_NAME': 'column', 'DATA_TYPE': 'string', 'DATA_LENGTH': '1', 'NULLABLE': 'N', 'DATA_DEFAULT': '' } tables_columns = [] columns.update(TABLE_NAME='unit') tables_columns.append(columns.copy()) columns.update(TABLE_NAME='test') tables_columns.append(columns.copy()) mocked_table_columns_query_cursor = Mock() mocked_table_columns_query_cursor.execute = Mock(return_value=True) mocked_table_columns_query_cursor.fetchall = Mock(return_value=tables_columns) mocked_table_top_query_cursor = Mock() mocked_table_top_query_cursor.execute = Mock(return_value=True) mocked_table_top_query_cursor.fetchall = Mock(return_value=[]) mocked_oracle = Mock() mocked_oracle.cursor = Mock(side_effect=[mocked_table_list_query_cursor, mocked_table_count_query_cursor, mocked_table_columns_query_cursor, mocked_table_top_query_cursor]) mocked_builder = Mock() mocked_builder.build = Mock(return_value=mocked_oracle) expected = {'tables': {'test': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'source_column_name': 'column', 'column_name': 'column', 'source_data_type': 'string', 'data_type': 'string', 'is_nullable': 'N'}], 'count': 10, 'rows': []}, 'unit': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'source_column_name': 'column', 'column_name': 'column', 'source_data_type': 'string', 'data_type': 'string', 'is_nullable': 'N'}], 'count': 10, 'rows': []}}} assert expected == Oracle(mocked_builder, self.logger).get_all_tables_info(None, None, None)
def test_fetchiter_nt(self): cursor = Mock() cursor.description = (('id', 3, 2, 11, 11, 0, 0), ('status', 253, 7, 80, 80, 0, 0)) # Standard cursor.fetchmany = Mock(return_value=((34, 'info'), (99, 'warning'))) num_it = 0 for row in fetchiter_nt(cursor): self.assertEqual(row.__class__.__name__, 'Results') if num_it == 0: self.assertEqual(row.id, 34) self.assertEqual(row.status, 'info') if num_it == 1: self.assertEqual(row.id, 99) self.assertEqual(row.status, 'warning') if num_it == 2: raise StopIteration num_it += 1 if num_it == 2: cursor.fetchmany = Mock(return_value=[]) self.assertEqual(num_it, 2) # Batch cursor.fetchmany = Mock(return_value=((34, 'info'), (99, 'warning'))) num_it = 0 for row in fetchiter_nt(cursor, batch=True): self.assertEqual(row.__class__.__name__, 'list') self.assertEqual(row[0].__class__.__name__, 'Results') self.assertEqual(row[0].id, 34) self.assertEqual(row[0].status, 'info') self.assertEqual(row[1].__class__.__name__, 'Results') self.assertEqual(row[1].id, 99) self.assertEqual(row[1].status, 'warning') if num_it == 1: raise StopIteration num_it += 1 if num_it == 1: cursor.fetchmany = Mock(return_value=[]) self.assertEqual(num_it, 1) # Server cursor cursor.fetchall = Mock(return_value=((34, 'info'), (99, 'warning'))) num_it = 0 for row in fetchiter_nt(cursor, server_cursor='C'): self.assertEqual(row.__class__.__name__, 'Results') if num_it == 0: self.assertEqual(row.id, 34) self.assertEqual(row.status, 'info') if num_it == 1: self.assertEqual(row.id, 99) self.assertEqual(row.status, 'warning') if num_it == 2: raise StopIteration num_it += 1 if num_it == 2: cursor.fetchall = Mock(return_value=[]) self.assertEqual(num_it, 2)
def test_get_tables_info_when_no_table_list_is_provided(self): mocked_table_list_query_cursor = Mock() mocked_table_list_query_cursor.execute = Mock(return_value=True) mocked_table_list_query_cursor.fetchall = Mock(return_value=[{'table_name': 'unit'}, {'table_name': 'test'}]) mocked_table_count_query_cursor = Mock() mocked_table_count_query_cursor.execute = Mock(return_value=True) mocked_table_count_query_cursor.fetchone = Mock(return_value=[10]) columns = { 'table_name': '', 'column_name': 'column', 'data_type': 'string', 'character_maximum_length': '1', 'is_nullable': 'NO', 'column_default': '' } tables_columns = [] columns.update(table_name='unit') tables_columns.append(columns.copy()) columns.update(table_name='test') tables_columns.append(columns.copy()) mocked_table_columns_query_cursor = Mock() mocked_table_columns_query_cursor.execute = Mock(return_value=True) mocked_table_columns_query_cursor.fetchall = Mock(return_value=tables_columns) mocked_table_top_query_cursor = Mock() mocked_table_top_query_cursor.execute = Mock(return_value=True) mocked_table_top_query_cursor.fetchall = Mock(return_value=[]) mocked_mssql = Mock() mocked_mssql.cursor = Mock(side_effect=[mocked_table_list_query_cursor, mocked_table_count_query_cursor, mocked_table_columns_query_cursor, mocked_table_top_query_cursor]) mocked_builder = Mock() mocked_builder.build = Mock(return_value=mocked_mssql) expected = {'tables': {'test': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'source_column_name': 'column', 'column_name': 'column', 'source_data_type': 'string', 'data_type': 'string', 'is_nullable': 'NO'}], 'count': 10, 'rows': []}, 'unit': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'source_column_name': 'column', 'column_name': 'column', 'source_data_type': 'string', 'data_type': 'string', 'is_nullable': 'NO'}], 'count': 10, 'rows': []}}} assert expected == Sqlserver(mocked_builder, self.logger).get_all_tables_info(None, None, None)
def test_fetchall_nt(self): cursor = Mock() cursor.description = (('id', 3, 2, 11, 11, 0, 0), ('status', 253, 7, 80, 80, 0, 0)) cursor.fetchall = Mock(return_value=((34, 'info'), (99, 'warning'))) r = fetchall_nt(cursor) self.assertEqual(r.__class__.__name__, 'list') self.assertEqual(r[0].__class__.__name__, 'Results') self.assertEqual(r[0].id, 34) self.assertEqual(r[0].status, 'info') self.assertEqual(r[1].__class__.__name__, 'Results') self.assertEqual(r[1].id, 99) self.assertEqual(r[1].status, 'warning')
def test_single_value_sql2(self): m_execute = Mock() m_fetchall = Mock(return_value=((17, ), )) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor dbapi2_util.single_value_sql(conn, "select 17", (1, 2, 3)) self.assertEqual(conn.cursor.call_count, 1) self.assertEqual(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with('select 17', (1, 2, 3))
def test_single_value_sql5(self): m_execute = Mock() m_fetchall = Mock(return_value=((17, 22), )) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor dbapi2_util.single_row_sql(conn, "select 17, 22", (1, 2, 3)) eq_(conn.cursor.call_count, 1) eq_(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with("select 17, 22", (1, 2, 3))
def test_single_value_sql5(self): m_execute = Mock() m_fetchall = Mock(return_value=((17, 22),)) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor dbapi2_util.single_row_sql(conn, "select 17, 22", (1, 2, 3)) eq_(conn.cursor.call_count, 1) eq_(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with("select 17, 22", (1, 2, 3))
def test_single_value_sql1(self): m_execute = Mock() m_fetchall = Mock(return_value=((17, ), )) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor r = dbapi2_util.single_value_sql(conn, "select 17") eq_(r, 17) eq_(conn.cursor.call_count, 1) eq_(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with('select 17', None)
def test_single_row_sql1(self): m_execute = Mock() m_fetchall = Mock(return_value=((17, 22), )) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor r = dbapi2_util.single_row_sql(conn, "select 17, 22") self.assertEqual(r, (17, 22)) self.assertEqual(conn.cursor.call_count, 1) self.assertEqual(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with('select 17, 22', None)
def test_single_value_sql1(self): m_execute = Mock() m_fetchall = Mock(return_value=((17,),)) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor r = dbapi2_util.single_value_sql(conn, "select 17") eq_(r, 17) eq_(conn.cursor.call_count, 1) eq_(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with('select 17', None)
def test_single_value_sql3(self): m_execute = Mock() m_fetchall = Mock(return_value=None) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor self.assertRaises(dbapi2_util.SQLDidNotReturnSingleValue, dbapi2_util.single_value_sql, conn, "select 17", (1, 2, 3)) self.assertEqual(conn.cursor.call_count, 1) self.assertEqual(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with('select 17', (1, 2, 3))
def test_single_value_sql4(self): m_execute = Mock() m_fetchall = Mock(return_value=None) m_cursor = Mock() m_cursor.execute = m_execute m_cursor.fetchall = m_fetchall conn = Mock() conn.cursor.return_value = m_cursor assert_raises(dbapi2_util.SQLDidNotReturnSingleRow, dbapi2_util.single_row_sql, conn, "select 17, 22", (1, 2, 3)) eq_(conn.cursor.call_count, 1) eq_(m_cursor.execute.call_count, 1) m_cursor.execute.assert_called_once_with("select 17, 22", (1, 2, 3))
def test_filter_cursor(self): """Test the filtering of a query object based on settings.""" test_cloud_view = CloudRecordSummaryView() # A list of test summaries. test_data = [{'Day': 30, 'Month': 7, 'Year': 2016, 'SiteName': 'TEST'}] cursor = Mock() # Get the mock cursor object return the test_data. cursor.fetchall = Mock(return_value=test_data) with self.settings(RETURN_HEADERS=['SiteName', 'Day']): result = test_cloud_view._filter_cursor(cursor) expected_result = [{'SiteName': 'TEST', 'Day': 30}] self.assertEqual(result, expected_result)
def test_fetchiter(self): cursor = Mock() def test_iterator(cursor, use_server_cursor=False, **kwargs): cursor.fetchmany = Mock(return_value=[1,2,3]) num_it = 0 for row in fetchiter(cursor, **kwargs): if num_it == 3: raise StopIteration self.assertIn(row, [1,2,3]) num_it += 1 if row == 3: # Stop if use_server_cursor: cursor.fetchall = Mock(return_value=[]) else: cursor.fetchmany = Mock(return_value=[]) self.assertEqual(num_it, 3) # Standard test_iterator(cursor) # Size test_iterator(cursor, size=2) cursor.fetchmany.assert_called_with(2) # Batch cursor.fetchmany = Mock(return_value=[1,2]) for row in fetchiter(cursor, batch=True): self.assertEqual(row, [1,2]) # Stop cursor.fetchmany = Mock(return_value=[]) # Server cursor cursor.execute = Mock() cursor.fetchall = Mock(return_value=[1,2,3]) test_iterator(cursor, use_server_cursor=True, size=10, server_cursor='C') calls = [call("FETCH %s FROM C", (10,))] * 2 cursor.execute.assert_has_calls(calls)
def test_get_tables_info_when_no_table_list_is_provided(self): mocked_table_list_query_cursor = Mock() mocked_table_list_query_cursor.execute = Mock(return_value=True) mocked_table_list_query_cursor.fetchall = Mock(return_value=[{'table_name': 'unit'}, {'table_name': 'test'}]) mocked_table_count_query_cursor = Mock() mocked_table_count_query_cursor.execute = Mock(return_value=True) mocked_table_count_query_cursor.fetchone = Mock(return_value=[10]) columns = { 'table_name': '', 'column_name': 'column', 'data_type': 'string', 'character_maximum_length': '1', 'is_nullable': 'NO', 'column_default': '' } tables_columns = [] columns.update(table_name='unit') tables_columns.append(columns.copy()) columns.update(table_name='test') tables_columns.append(columns.copy()) mocked_table_columns_query_cursor = Mock() mocked_table_columns_query_cursor.execute = Mock(return_value=True) mocked_table_columns_query_cursor.fetchall = Mock(return_value=tables_columns) mocked_table_top_query_cursor = Mock() mocked_table_top_query_cursor.execute = Mock(return_value=True) mocked_table_top_query_cursor.fetchall = Mock(return_value=[]) mocked_mssql = Mock() mocked_mssql.cursor = Mock(side_effect=[mocked_table_list_query_cursor, mocked_table_count_query_cursor, mocked_table_columns_query_cursor, mocked_table_top_query_cursor]) mocked_builder = Mock() mocked_builder.build = Mock(return_value=mocked_mssql) expected = {'tables': {'test': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'column_name': 'column', 'data_type': 'string', 'is_nullable': 'NO'}], 'count': 10, 'rows': []}, 'unit': {'columns': [{'character_maximum_length': '1', 'column_default': '', 'column_name': 'column', 'data_type': 'string', 'is_nullable': 'NO'}], 'count': 10, 'rows': []}}, 'db_connection_string': 'jdbc:sqlserver://test' } assert expected == Sqlserver(mocked_builder, self.logger, db_host = 'test').get_all_tables_info(None, None, None)