import pytest,allure,xlrd,requests,os
from config import *
from common.utils.getExcelData import *
from common.tools import *
from common.db import *
import dict
from service.login import SSOLogin
import json


@allure.epic("组织部门")
@allure.feature("组织部门")
class TestManagement():
    workBook=xlrd.open_workbook(f'{SSOConfig.root_path}/test_case_data/sso/sso_testcase_20210513.xlsx')
    @allure.story("组织部门管理")
    @allure.title("{inData[testPoint]}")
    @allure.description("/web/auth/roles")
    @pytest.mark.parametrize("inData", get_excelData(workBook, "大数据平台系统设置", "management"))
    def test_management(self, inData):
        url = f"{SSOConfig().test_host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        res = request_main(url, headers, method, req_data)
        assert res["code"] == expectData["code"]
        allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT)
    @allure.story("组织部门管理")
    @allure.title("{inData[testPoint]}")
    @allure.description("/web/auth/roles")
    @pytest.mark.parametrize("inData", get_excelData(workBook, "大数据平台系统设置", "managementadd"))
    def test_managementadd(self, inData):
        url = f"{SSOConfig().test_host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        mysql = MYSQL(*BaseConfig.test_mysql)
        if mysql.ExecuQuery("select * from db_sso.sso_organization where name ='新增测试'"):
            mysql.ExecuNonQuery("delete from db_sso.sso_organization where name ='新增测试'")
        res = request_main(url, headers, method, req_data)
        assert res["code"] == expectData["code"]
        allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT)

    @allure.story("组织部门管理")
    @allure.title("{inData[testPoint]}")
    @allure.description("/web/auth/roles")
    @pytest.mark.parametrize("inData", get_excelData(workBook, "大数据平台系统设置", "managementadd"))
    def test_managementadd(self, inData):
        url = f"{SSOConfig().test_host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        mysql = MYSQL(*BaseConfig.test_mysql)
        if mysql.ExecuQuery("select * from db_sso.sso_organization where name ='新增测试'"):
            mysql.ExecuNonQuery("delete from db_sso.sso_organization where name ='新增测试'")
        res = request_main(url, headers, method, req_data)
        assert res["code"] == expectData["code"]
        allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT)

    @allure.story("组织部门管理")
    @allure.title("{inData[testPoint]}")
    @allure.description("/web/auth/roles")
    @pytest.mark.parametrize("inData", get_excelData(workBook, "大数据平台系统设置", "managementdelete"))
    def test_managementdelete(self, inData):
        url = f"{SSOConfig().test_host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        mysql = MYSQL(*BaseConfig.test_mysql)
        if mysql.ExecuQuery("select * from db_sso.sso_organization where id ='1436253704467849218'"):
            pass
        else:
            mysql.ExecuNonQuery("INSERT INTO db_sso.sso_organization(id, parent_id, code, name, `type`, state, abbr,"
                                " sort, area_code, ref_id, desn, chairman, gmt_create, gmt_modified, latitude,"
                                " longitude)VALUES(1436253704467849218, 1310065723170701313, '123114', '删除测试',"
                                " 1, 1, NULL, 88, 110111, NULL, NULL, NULL, '2021-09-10 17:02:22', "
                                "'2021-09-10 17:02:22', NULL, NULL);")
        res = request_main(url, headers, method, req_data)
        assert res["code"] == expectData["code"]
        allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT)