#!/bin/env python # -*- coding: utf-8 -*- # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. """ /*************************************************************************** * * @file test_sys_base64.py * @date 2016/04/01 15:26:21 * @brief * **************************************************************************/ """ import base64 import sys import string sys.path.append('..') from lib import palo_client from lib import util from lib import palo_config config = palo_config.config LOG = palo_client.LOG L = palo_client.L def setup_module(): """ setUp """ pass def test_base64_random(): """ base64 random """ database_name, table_name, index_name = util.gen_num_format_name_list() LOG.info(L('', database_name=database_name, \ table_name=table_name, index_name=index_name)) client = palo_client.get_client(config.fe_host, config.fe_query_port, user=config.fe_user, password=config.fe_password, http_port=config.fe_http_port) assert client raw_string = string.ascii_letters + string.digits raw_bytes = bytes(raw_string, encoding='utf-8') base64_string = client.execute('SELECT TO_BASE64("%s")' % (raw_string))[0][0] assert base64_string == base64.standard_b64encode(raw_bytes).decode(), \ 'expect %s' % base64.standard_b64encode(raw_string) function_string = client.execute('SELECT FROM_BASE64("%s")' % (base64_string))[0][0] assert function_string == raw_string, 'expect %s' % raw_string def test_base64_crypt_random(): """ base64 crypt random """ database_name, table_name, index_name = util.gen_num_format_name_list() LOG.info(L('', database_name=database_name, \ table_name=table_name, index_name=index_name)) client = palo_client.get_client(config.fe_host, config.fe_query_port, user=config.fe_user, password=config.fe_password, http_port=config.fe_http_port) assert client raw_string = string.ascii_letters + string.digits key = string.ascii_letters + string.digits sql = 'SELECT TO_BASE64(AES_ENCRYPT("%s", "%s"))' % (raw_string, key) base64_cypt_string = client.execute(sql)[0][0] sql = 'SELECT AES_DECRYPT(FROM_BASE64("%s"), "%s")' % (base64_cypt_string, key) function_string = client.execute(sql)[0][0] assert function_string == raw_string def test_base64_special(): """ base64 special """ database_name, table_name, index_name = util.gen_num_format_name_list() LOG.info(L('', database_name=database_name, \ table_name=table_name, index_name=index_name)) client = palo_client.get_client(config.fe_host, config.fe_query_port, user=config.fe_user, password=config.fe_password, http_port=config.fe_http_port) assert client raw_string = '' base64_string = client.execute('SELECT TO_BASE64("%s")' % (raw_string))[0][0] #assert base64_string == base64.standard_b64encode(raw_string) #function_string = client.execute('SELECT FROM_BASE64("%s")' % (base64_string))[0][0] #assert function_string == raw_string raw_string = u'中文' base64_string = client.execute('SELECT TO_BASE64("%s")' % (raw_string))[0][0] function_string = client.execute('SELECT FROM_BASE64("%s")' % (base64_string))[0][0] assert function_string == raw_string def test_base64_crypt_special(): """ base64 crypt special """ database_name, table_name, index_name = util.gen_num_format_name_list() LOG.info(L('', database_name=database_name, \ table_name=table_name, index_name=index_name)) client = palo_client.get_client(config.fe_host, config.fe_query_port, user=config.fe_user, password=config.fe_password, http_port=config.fe_http_port) assert client raw_string = '' key = string.ascii_letters + string.digits sql = 'SELECT TO_BASE64(AES_ENCRYPT("%s", "%s"))' % (raw_string, key) base64_cypt_string = client.execute(sql)[0][0] sql = 'SELECT AES_DECRYPT(FROM_BASE64("%s"), "%s")' % (base64_cypt_string, key) function_string = client.execute(sql)[0][0] # assert function_string == raw_string raw_string = u'中文' key = string.ascii_letters + string.digits sql = 'SELECT TO_BASE64(AES_ENCRYPT("%s", "%s"))' % (raw_string, key) base64_cypt_string = client.execute(sql)[0][0] sql = 'SELECT AES_DECRYPT(FROM_BASE64("%s"), "%s")' % (base64_cypt_string, key) function_string = client.execute(sql)[0][0] assert function_string == raw_string def test_base64_crypt_special_key(): """ base64 crypt special key """ database_name, table_name, index_name = util.gen_num_format_name_list() LOG.info(L('', database_name=database_name, \ table_name=table_name, index_name=index_name)) client = palo_client.get_client(config.fe_host, config.fe_query_port, user=config.fe_user, password=config.fe_password, http_port=config.fe_http_port) assert client raw_string = string.ascii_letters + string.digits key = '' sql = 'SELECT TO_BASE64(AES_ENCRYPT("%s", "%s"))' % (raw_string, key) base64_cypt_string = client.execute(sql)[0][0] sql = 'SELECT AES_DECRYPT(FROM_BASE64("%s"), "%s")' % (base64_cypt_string, key) function_string = client.execute(sql)[0][0] # assert function_string == raw_string raw_string = string.ascii_letters + string.digits key = u'中文' sql = 'SELECT TO_BASE64(AES_ENCRYPT("%s", "%s"))' % (raw_string, key) base64_cypt_string = client.execute(sql)[0][0] sql = 'SELECT AES_DECRYPT(FROM_BASE64("%s"), "%s")' % (base64_cypt_string, key) function_string = client.execute(sql)[0][0] assert function_string == raw_string raw_string = '' key = '' sql = 'SELECT TO_BASE64(AES_ENCRYPT("%s", "%s"))' % (raw_string, key) base64_cypt_string = client.execute(sql)[0][0] sql = 'SELECT AES_DECRYPT(FROM_BASE64("%s"), "%s")' % (base64_cypt_string, key) function_string = client.execute(sql)[0][0] # assert function_string == raw_string