示例#1
0
# coding=utf-8
from __future__ import unicode_literals

import json

from pod_base import APIException, PodException
from examples.config import *
from pod_dashboard import PodDashboard, DashboardException

try:
    pod_dashboard = PodDashboard(api_token=API_TOKEN, server_type=SERVER_MODE)
    print(pod_dashboard.get_csv(user_report_id=715, save_to="/tmp/715.csv"))

    # OUTPUT
    #

    # print(pod_dashboard.raw_response())

except DashboardException as e:
    print("Dashboard Exception :", e)

except APIException as e:
    print("API Exception\nError {}\nError Code : {}\nReference Number : {}".
          format(e.message, e.error_code, e.reference_number))
except PodException as e:
    print("Pod Exception: ", e.message)
示例#2
0
class TestPodDashboard(unittest.TestCase):
    __slots__ = ("__dashboard", "__name", "__dashboard_id")

    def setUp(self):
        self.__dashboard_id = 342
        self.__name = "PyDash {}".format(datetime.now().timestamp())
        self.__dashboard = PodDashboard(api_token=API_TOKEN,
                                        server_type=SERVER_MODE)

    def test_01_create_dashboard(self):
        result = self.__dashboard.create_dashboard(name=self.__name)
        self.assertIsInstance(result,
                              int,
                              msg="create dashboard : check instance")

    def test_01_create_dashboard_all_params(self):
        config = {
            "layout": [{
                "w": 20,
                "h": 43,
                "x": 0,
                "y": 0,
                "i": 356,
                "moved": True,
                "static": True
            }],
        }
        result = self.__dashboard.create_dashboard(name=self.__name + "_2",
                                                   order=1,
                                                   config=config)
        self.assertIsInstance(
            result, int, msg="create dashboard (all params): check instance")

    def test_01_create_dashboard_required_param(self):
        with self.assertRaises(TypeError,
                               msg="create dashboard : required param"):
            self.__dashboard.create_dashboard()

    def test_01_create_dashboard_validation_error(self):
        with self.assertRaises(InvalidDataException,
                               msg="create dashboard : validation error"):
            self.__dashboard.create_dashboard(name="",
                                              order="2",
                                              config="{'test': 'yes'}")

    def test_02_get_user_dashboards(self):
        result = self.__dashboard.get_user_dashboards()
        self.assertIsInstance(result,
                              dict,
                              msg="get user dashboards : check instance")

    def test_02_get_user_dashboards_all_params(self):
        result = self.__dashboard.get_user_dashboards(page=0, size=5)
        self.assertIsInstance(
            result,
            dict,
            msg="get user dashboards (all params): check instance")

    def test_02_get_user_dashboards_validation_error(self):
        with self.assertRaises(InvalidDataException,
                               msg="get user dashboards : validation error"):
            self.__dashboard.get_user_dashboards(page="0", size="10")

    def test_03_get_all_dashboards(self):
        result = self.__dashboard.get_all_dashboards()
        self.assertIsInstance(result,
                              list,
                              msg="get all dashboards : check instance")

    def test_04_update_dashboard(self):
        result = self.__dashboard.update_dashboard(
            dashboard_id=self.__dashboard_id, name=self.__name + "_edited")
        self.assertIsInstance(result,
                              int,
                              msg="update dashboard : check instance")

    def test_04_update_dashboard_required_params(self):
        with self.assertRaises(TypeError,
                               msg="update dashboard : required params"):
            self.__dashboard.update_dashboard()

    def test_04_update_dashboard_validation_error(self):
        with self.assertRaises(InvalidDataException,
                               msg="update dashboard : validation error"):
            self.__dashboard.update_dashboard(dashboard_id="123456", name=456)

    def test_905_remove_dashboard(self):
        result = self.__dashboard.remove_dashboard(
            dashboard_id=self.__dashboard_id)
        self.assertIsInstance(result,
                              int,
                              msg="remove dashboard : check instance")

    def test_905_remove_dashboard_required_params(self):
        with self.assertRaises(TypeError,
                               msg="remove dashboard : required params"):
            self.__dashboard.remove_dashboard()

    def test_905_remove_dashboard_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="remove dashboard : validation errors"):
            self.__dashboard.remove_dashboard(dashboard_id="123")

    def test_06_get_all_collaborator_reports(self):
        result = self.__dashboard.get_all_collaborator_reports()
        self.assertIsInstance(result,
                              dict,
                              msg="get all collaborator : check instance")

    def test_06_get_all_collaborator_reports_all_params(self):
        result = self.__dashboard.get_all_collaborator_reports(name="نسبت",
                                                               page=0,
                                                               size=10)
        self.assertIsInstance(
            result,
            dict,
            msg="get all collaborator (all params) : check instance")

    def test_06_get_all_collaborator_reports_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get all collaborator : validation errors"):
            self.__dashboard.get_all_collaborator_reports(name="",
                                                          page="0",
                                                          size="10")

    def test_07_get_collaborator_report(self):
        result = self.__dashboard.get_collaborator_report(report_id=180)
        self.assertIsInstance(result,
                              dict,
                              msg="get collaborator report : check instance")

    def test_07_get_collaborator_report_required_params(self):
        with self.assertRaises(
                TypeError, msg="get collaborator report : required params"):
            self.__dashboard.get_collaborator_report()

    def test_07_get_collaborator_report_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="get collaborator report : validation errors"):
            self.__dashboard.get_collaborator_report(report_id="180")

    def test_08_add_user_param(self):
        result = self.__dashboard.add_user_param(
            report_id=180, dashboard_id=self.__dashboard_id)
        self.assertIsInstance(result,
                              int,
                              msg="add user param : check instance")

    def test_08_add_user_param_all_params(self):
        params = [{
            "key": "key_1",
            "value": "value_1"
        }, {
            "key": "key_2",
            "value": "value_2"
        }]

        result = self.__dashboard.add_user_param(
            report_id=180,
            dashboard_id=self.__dashboard_id,
            name="گزارش دوم",
            params=params)
        self.assertIsInstance(
            result, int, msg="add user param (all params) : check instance")

    def test_08_add_user_param_required_params(self):
        with self.assertRaises(TypeError,
                               msg="add user param : required params"):
            self.__dashboard.add_user_param()

    def test_08_add_user_param_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="add user param : validation errors"):
            self.__dashboard.add_user_param(report_id="180",
                                            dashboard_id="123")

    def test_09_add_drill_down_user_param(self):
        user_report_id = self.__dashboard.add_user_param(
            report_id=180,
            dashboard_id=self.__dashboard_id,
            name="تست زیر گزارش")

        result = self.__dashboard.add_drill_down_user_param(
            report_id=181,
            user_report_id=user_report_id,
            params=[{
                "key": "key_1",
                "value": "value_1"
            }])
        self.assertIsInstance(result,
                              int,
                              msg="add drill down user param : check instance")

    def test_09_add_drill_down_user_param_required_params(self):
        with self.assertRaises(
                TypeError, msg="add drill down user param : required params"):
            self.__dashboard.add_drill_down_user_param()

    def test_09_add_drill_down_user_param_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="add drill down user param : validation errors"):
            self.__dashboard.add_drill_down_user_param(report_id="181",
                                                       user_report_id="123")

    def test_10_get_all_user_reports(self):
        result = self.__dashboard.get_all_user_reports()
        self.assertIsInstance(result,
                              dict,
                              msg="get all user reports : check instance")

    def test_10_get_all_user_reports_all_params(self):
        result = self.__dashboard.get_all_user_reports(page=0, size=10)
        self.assertIsInstance(
            result,
            dict,
            msg="get all user reports (all params) : check instance")

    def test_10_get_all_user_reports_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get all user reports : validation errors"):
            self.__dashboard.get_all_user_reports(page="0", size="10")

    def test_11_get_user_report(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 1:
            self.skipTest("get user report : empty user reports")
        result = self.__dashboard.get_user_report(
            user_report_id=user_reports["data"][0]["id"])
        self.assertIsInstance(result,
                              dict,
                              msg="get user report : check instance")

    def test_11_get_user_report_required_params(self):
        with self.assertRaises(TypeError,
                               msg="get user report : required params"):
            self.__dashboard.get_user_report()

    def test_11_get_user_report_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get user report : validation errors"):
            self.__dashboard.get_user_report(user_report_id="123")

    def test_12_execute_user_report(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 1:
            self.skipTest("execute user report : empty user reports")

        result = self.__dashboard.execute_user_report(
            user_report_id=user_reports["data"][0]["id"])
        self.assertIsInstance(result,
                              dict,
                              msg="execute user report : check instance")

    def test_12_execute_user_report_all_params(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 1:
            self.skipTest(
                "execute user report (all params) : empty user reports")

        result = self.__dashboard.execute_user_report(
            user_report_id=user_reports["data"][0]["id"],
            page=0,
            size=5,
            load_from_cache=False,
            execute_params={})
        self.assertIsInstance(
            result,
            dict,
            msg="execute user report (all params) : check instance")

    def test_12_execute_user_report_required_params(self):
        with self.assertRaises(TypeError,
                               msg="execute user report : required params"):
            self.__dashboard.execute_user_report()

    def test_12_execute_user_report_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="execute user report : validation errors"):
            self.__dashboard.execute_user_report(user_report_id="132",
                                                 page="0",
                                                 size="5",
                                                 load_from_cache="True",
                                                 execute_params="{}")

    def test_13_get_xls(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 1:
            self.skipTest("get xls (all params) : empty user reports")

        result = self.__dashboard.get_xls(
            user_report_id=user_reports["data"][0]["id"],
            page=0,
            size=10,
            callback_url="http://localhost/test.php",
            force_save=True,
            execute_params={})
        self.assertIsInstance(result, str, msg="get xls : check instance")

    def test_13_get_xls_required_params(self):
        with self.assertRaises(TypeError, msg="get xls : required params"):
            self.__dashboard.get_xls()

    def test_13_get_xls_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get xls : validation errors"):
            self.__dashboard.get_xls(user_report_id="123", page="0", size="10")

    def test_14_get_csv(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 1:
            self.skipTest("get csv (all params) : empty user reports")

        result = self.__dashboard.get_csv(
            user_report_id=user_reports["data"][0]["id"],
            page=0,
            size=10,
            callback_url="http://localhost/test.php",
            force_save=True,
            execute_params={})
        self.assertIsInstance(result, str, msg="get csv : check instance")

    def test_14_get_csv_required_params(self):
        with self.assertRaises(TypeError, msg="get csv : required params"):
            self.__dashboard.get_csv()

    def test_14_get_csv_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get csv : validation errors"):
            self.__dashboard.get_csv(user_report_id="123", page="0", size="10")

    def test_9015_remove_user_report(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 1:
            self.skipTest(
                "remove user report (all params) : empty user reports")

        result = self.__dashboard.remove_user_report(
            user_report_id=user_reports["data"][0]["id"])
        self.assertIsInstance(result,
                              bool,
                              msg="remove user report : check instance")

    def test_9015_remove_user_report_required_params(self):
        with self.assertRaises(TypeError,
                               msg="remove user report : required params"):
            self.__dashboard.remove_user_report()

    def test_9015_remove_user_report_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="remove user report : validation errors"):
            self.__dashboard.remove_user_report(user_report_id="123")

    def test_16_share_dashboard(self):
        result = self.__dashboard.share_dashboard(
            dashboard_id=self.__dashboard_id,
            identity=IDENTITY,
            expire=datetime.now().__format__("%Y-%m-%d"),
            edit_access_level=EditAccessLevel.EDIT_SHARED_DASHBOARD_CONFIG,
            share_access_level=ShareAccessLevel.SHARE)
        self.assertIsInstance(result,
                              dict,
                              msg="share dashboard : check instance")

    def test_16_share_dashboard_required_params(self):
        with self.assertRaises(TypeError,
                               msg="share dashboard : required params"):
            self.__dashboard.share_dashboard()

    def test_16_share_dashboard_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="share dashboard : validation errors"):
            self.__dashboard.share_dashboard(dashboard_id="123",
                                             identity=123,
                                             expire=123,
                                             edit_access_level=123,
                                             share_access_level=123)

    def test_17_get_dashboard_users(self):
        result = self.__dashboard.get_dashboard_users(
            dashboard_id=self.__dashboard_id)
        self.assertIsInstance(result,
                              dict,
                              msg="get dashboard users : check instance")

    def test_17_get_dashboard_users_required_params(self):
        with self.assertRaises(TypeError,
                               msg="get dashboard users : required params"):
            self.__dashboard.get_dashboard_users()

    def test_17_get_dashboard_users_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get dashboard users : validation errors"):
            self.__dashboard.get_dashboard_users(dashboard_id="123")

    def test_18_remove_shared_dashboard(self):
        result = self.__dashboard.remove_shared_dashboard(shared_id=1)
        self.assertIsInstance(result,
                              list,
                              msg="remove shared dashboard : check instance")

    def test_18_remove_shared_dashboard_required_params(self):
        with self.assertRaises(
                TypeError, msg="remove shared dashboard : required params"):
            self.__dashboard.remove_shared_dashboard()

    def test_18_remove_shared_dashboard_validation_errors(self):
        with self.assertRaises(
                TypeError, msg="remove shared dashboard : validation errors"):
            self.__dashboard.remove_shared_dashboard(shared_id="123")

    def test_19_get_shared_dashboards(self):
        result = self.__dashboard.get_shared_dashboards()
        self.assertIsInstance(result,
                              dict,
                              msg="get shared dashboards : check instance")

    def test_19_get_shared_dashboards_all_params(self):
        result = self.__dashboard.get_shared_dashboards(page=0, size=10)
        self.assertIsInstance(
            result,
            dict,
            msg="get shared dashboards (all params) : check instance")

    def test_19_get_shared_dashboards_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="get shared dashboards : validation errors"):
            self.__dashboard.get_shared_dashboards(page="0", size="10")

    def test_20_update_shared_dashboard(self):
        dashboards = self.__dashboard.get_shared_dashboards()
        if dashboards["totalSize"] < 1:
            self.skipTest("update shared dashboard : empty shared dashboards")
        config = {
            "layout": [{
                "w": 20,
                "h": 43,
                "x": 0,
                "y": 0,
                "moved": False,
                "static": True
            }]
        }
        try:
            result = self.__dashboard.update_shared_dashboard(
                dashboard_id=dashboards["data"][0]["id"],
                config=config,
                order=2)
            self.assertIsInstance(
                result, list, msg="update shared dashboard : check instance")
        except DashboardException as e:
            self.assertEqual(
                e.code,
                105,
                msg="update shared dashboard : update access denied")

    def test_20_update_shared_dashboard_required_params(self):
        with self.assertRaises(
                TypeError, msg="update shared dashboard : required params"):
            self.__dashboard.update_shared_dashboard()

    def test_20_update_shared_dashboard_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="update shared dashboard : validation errors"):
            self.__dashboard.update_shared_dashboard(dashboard_id="123",
                                                     order="5",
                                                     config="test")

    def test_21_add_user_collaborator(self):
        try:
            result = self.__dashboard.add_user_collaborator(report_id=180,
                                                            identity=IDENTITY)
            self.assertIsInstance(result,
                                  dict,
                                  msg="add user collaborator : check instance")
        except DashboardException as e:
            self.assertEqual(e.code,
                             105,
                             msg="add user collaborator : access denied")

    def test_21_add_user_collaborator_required_params(self):
        with self.assertRaises(TypeError,
                               msg="add user collaborator : required params"):
            self.__dashboard.add_user_collaborator()

    def test_21_add_user_collaborator_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="add user collaborator : validation errors"):
            self.__dashboard.add_user_collaborator(report_id="13",
                                                   identity=123)

    def test_22_get_user_collaborators(self):
        try:
            result = self.__dashboard.get_user_collaborators(report_id=180)
            self.assertIsInstance(
                result, list, msg="get user collaborators : check instance")
        except DashboardException as e:
            self.assertEqual(e.code,
                             105,
                             msg="get user collaborators : access denied")

    def test_22_get_user_collaborators_required_params(self):
        with self.assertRaises(InvalidDataException,
                               msg="get user collaborators : required params"):
            self.__dashboard.get_user_collaborators()

    def test_22_get_user_collaborators_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="get user collaborators : validation errors"):
            self.__dashboard.get_user_collaborators(report_id="12345")

    def test_23_remove_collaborator(self):
        try:
            result = self.__dashboard.remove_collaborator(report_id=180,
                                                          user_id=123)
            self.assertIsInstance(result,
                                  dict,
                                  msg="remove collaborator : check instance")
        except DashboardException as e:
            self.assertEqual(e.code,
                             105,
                             msg="remove collaborator : access denied")

    def test_23_remove_collaborator_required_params(self):
        with self.assertRaises(TypeError,
                               msg="remove collaborator : required params"):
            self.__dashboard.remove_collaborator()

    def test_23_remove_collaborator_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="remove collaborator : validation errors"):
            self.__dashboard.remove_collaborator(report_id="123",
                                                 user_id="123")

    def test_24_get_user_report_hash(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 0:
            self.skipTest("get user report hash : empty user reports")

        result = self.__dashboard.get_user_report_hash(
            user_report_id=user_reports["data"][0]["id"])
        self.assertIsInstance(result,
                              str,
                              msg="get user report hash : check instance")

    def test_24_get_user_report_hash_required_params(self):
        with self.assertRaises(TypeError,
                               msg="get user report hash : required params"):
            self.__dashboard.get_user_report_hash()

    def test_24_get_user_report_hash_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="get user report hash : validation errors"):
            self.__dashboard.get_user_report_hash(user_report_id="123")

    def test_25_get_public_user_report(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 0:
            self.skipTest("get public user report : empty user reports")

        user_report_id = user_reports["data"][0]["id"]
        user_report_hash = self.__dashboard.get_user_report_hash(
            user_report_id=user_report_id)

        result = self.__dashboard.get_public_user_report(
            user_report_id=user_report_id, user_report_hash=user_report_hash)
        self.assertIsInstance(result,
                              dict,
                              msg="get public user report : check instance")

    def test_25_get_public_user_report_required_params(self):
        with self.assertRaises(TypeError,
                               msg="get public user report : required params"):
            self.__dashboard.get_public_user_report()

    def test_25_get_public_user_report_validation_errors(self):
        with self.assertRaises(
                InvalidDataException,
                msg="get public user report : validation errors"):
            self.__dashboard.get_public_user_report(user_report_id="123",
                                                    user_report_hash=123456)

    def test_26_public_execute(self):
        user_reports = self.__dashboard.get_all_user_reports()
        if user_reports["totalSize"] < 0:
            self.skipTest("public execute : empty user reports")

        user_report_id = user_reports["data"][0]["id"]
        user_report_hash = self.__dashboard.get_user_report_hash(
            user_report_id=user_report_id)

        result = self.__dashboard.public_execute(
            user_report_id=user_report_id,
            user_report_hash=user_report_hash,
            page=0,
            size=10,
            load_from_cache=False,
            execute_params={})
        self.assertIsInstance(result,
                              dict,
                              msg="public execute : check instance")

    def test_26_public_execute_required_params(self):
        with self.assertRaises(TypeError,
                               msg="public execute : required params"):
            self.__dashboard.public_execute()

    def test_26_public_execute_validation_errors(self):
        with self.assertRaises(InvalidDataException,
                               msg="public execute : validation errors"):
            self.__dashboard.public_execute(user_report_id="123",
                                            user_report_hash=123,
                                            page="0",
                                            size="10",
                                            load_from_cache="False",
                                            execute_params="{}")