예제 #1
0
 def test_delete_favorite_view(self) -> None:
     view = TSC.ViewItem()
     view._id = "d79634e1-6063-4ec9-95ff-50acbf609ff5"
     view._name = "ENDANGERED SAFARI"
     with requests_mock.mock() as m:
         m.delete("{0}/{1}/views/{2}".format(self.baseurl, self.user.id, view.id))
         self.server.favorites.delete_favorite_view(self.user, view)
예제 #2
0
    def test_populate_permissions(self):
        with open(POPULATE_PERMISSIONS_XML, 'rb') as f:
            response_xml = f.read().decode('utf-8')
        with requests_mock.mock() as m:
            m.get(self.baseurl +
                  "/e490bec4-2652-4fda-8c4e-f087db6fa328/permissions",
                  text=response_xml)
            single_view = TSC.ViewItem()
            single_view._id = "e490bec4-2652-4fda-8c4e-f087db6fa328"

            self.server.views.populate_permissions(single_view)
            permissions = single_view.permissions

            self.assertEqual(permissions[0].grantee.tag_name, 'group')
            self.assertEqual(permissions[0].grantee.id,
                             'c8f2773a-c83a-11e8-8c8f-33e6d787b506')
            self.assertDictEqual(
                permissions[0].capabilities, {
                    TSC.Permission.Capability.ViewComments:
                    TSC.Permission.Mode.Allow,
                    TSC.Permission.Capability.Read:
                    TSC.Permission.Mode.Allow,
                    TSC.Permission.Capability.AddComment:
                    TSC.Permission.Mode.Allow,
                    TSC.Permission.Capability.ExportData:
                    TSC.Permission.Mode.Allow,
                    TSC.Permission.Capability.ExportImage:
                    TSC.Permission.Mode.Allow,
                })
예제 #3
0
    def test_populate_preview_image_missing_id(self):
        single_view = TSC.ViewItem()
        single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'
        self.assertRaises(TSC.MissingRequiredFieldError, self.server.views.populate_preview_image, single_view)

        single_view._id = None
        single_view._workbook_id = '3cc6cd06-89ce-4fdc-b935-5294135d6d42'
        self.assertRaises(TSC.MissingRequiredFieldError, self.server.views.populate_preview_image, single_view)
예제 #4
0
 def test_add_favorite_view(self) -> None:
     response_xml = read_xml_asset(ADD_FAVORITE_VIEW_XML)
     view = TSC.ViewItem()
     view._id = "d79634e1-6063-4ec9-95ff-50acbf609ff5"
     view._name = "ENDANGERED SAFARI"
     with requests_mock.mock() as m:
         m.put("{0}/{1}".format(self.baseurl, self.user.id), text=response_xml)
         self.server.favorites.add_favorite_view(self.user, view)
예제 #5
0
 def test_populate_image(self):
     with open(POPULATE_PREVIEW_IMAGE, 'rb') as f:
         response = f.read()
     with requests_mock.mock() as m:
         m.get(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/image', content=response)
         single_view = TSC.ViewItem()
         single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'
         self.server.views.populate_image(single_view)
     self.assertEqual(response, single_view.image)
예제 #6
0
 def test_populate_image_high_resolution(self):
     with open(POPULATE_PREVIEW_IMAGE, 'rb') as f:
         response = f.read()
     with requests_mock.mock() as m:
         m.get(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/image?resolution=high', content=response)
         single_view = TSC.ViewItem()
         single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'
         req_option = TSC.ImageRequestOptions(imageresolution=TSC.ImageRequestOptions.Resolution.High)
         self.server.views.populate_image(single_view, req_option)
     self.assertEqual(response, single_view.image)
예제 #7
0
 def test_populate_preview_image(self):
     with open(POPULATE_PREVIEW_IMAGE, 'rb') as f:
         response = f.read()
     with requests_mock.mock() as m:
         m.get(self.siteurl + '/workbooks/3cc6cd06-89ce-4fdc-b935-5294135d6d42/'
               'views/d79634e1-6063-4ec9-95ff-50acbf609ff5/previewImage', content=response)
         single_view = TSC.ViewItem()
         single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'
         single_view._workbook_id = '3cc6cd06-89ce-4fdc-b935-5294135d6d42'
         self.server.views.populate_preview_image(single_view)
     self.assertEqual(response, single_view.preview_image)
예제 #8
0
    def test_populate_csv(self):
        with open(POPULATE_CSV, 'rb') as f:
            response = f.read()
        with requests_mock.mock() as m:
            m.get(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/data', content=response)
            single_view = TSC.ViewItem()
            single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'
            self.server.views.populate_csv(single_view)

            csv_file = b"".join(single_view.csv)
            self.assertEqual(response, csv_file)
예제 #9
0
    def test_populate_csv_default_maxage(self) -> None:
        with open(POPULATE_CSV, "rb") as f:
            response = f.read()
        with requests_mock.mock() as m:
            m.get(self.baseurl + "/d79634e1-6063-4ec9-95ff-50acbf609ff5/data",
                  content=response)
            single_view = TSC.ViewItem()
            single_view._id = "d79634e1-6063-4ec9-95ff-50acbf609ff5"
            self.server.views.populate_csv(single_view)

            csv_file = b"".join(single_view.csv)
            self.assertEqual(response, csv_file)
예제 #10
0
 def test_populate_image_with_options(self) -> None:
     with open(POPULATE_PREVIEW_IMAGE, "rb") as f:
         response = f.read()
     with requests_mock.mock() as m:
         m.get(
             self.baseurl +
             "/d79634e1-6063-4ec9-95ff-50acbf609ff5/image?resolution=high&maxAge=10",
             content=response)
         single_view = TSC.ViewItem()
         single_view._id = "d79634e1-6063-4ec9-95ff-50acbf609ff5"
         req_option = TSC.ImageRequestOptions(
             imageresolution=TSC.ImageRequestOptions.Resolution.High,
             maxage=10)
         self.server.views.populate_image(single_view, req_option)
         self.assertEqual(response, single_view.image)
예제 #11
0
    def test_populate_pdf(self):
        with open(POPULATE_PDF, 'rb') as f:
            response = f.read()
        with requests_mock.mock() as m:
            m.get(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/pdf?type=letter&orientation=portrait',
                  content=response)
            single_view = TSC.ViewItem()
            single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'

            size = TSC.PDFRequestOptions.PageType.Letter
            orientation = TSC.PDFRequestOptions.Orientation.Portrait
            req_option = TSC.PDFRequestOptions(size, orientation)

            self.server.views.populate_pdf(single_view, req_option)
            self.assertEqual(response, single_view.pdf)
예제 #12
0
    def test_populate_excel(self) -> None:
        self.server.version = "3.8"
        self.baseurl = self.server.views.baseurl
        with open(POPULATE_EXCEL, "rb") as f:
            response = f.read()
        with requests_mock.mock() as m:
            m.get(
                self.baseurl +
                "/d79634e1-6063-4ec9-95ff-50acbf609ff5/crosstab/excel?maxAge=1",
                content=response)
            single_view = TSC.ViewItem()
            single_view._id = "d79634e1-6063-4ec9-95ff-50acbf609ff5"
            request_option = TSC.CSVRequestOptions(maxage=1)
            self.server.views.populate_excel(single_view, request_option)

            excel_file = b"".join(single_view.excel)
            self.assertEqual(response, excel_file)
예제 #13
0
    def test_update_tags(self):
        with open(ADD_TAGS_XML, 'rb') as f:
            add_tags_xml = f.read().decode('utf-8')
        with open(UPDATE_XML, 'rb') as f:
            update_xml = f.read().decode('utf-8')
        with requests_mock.mock() as m:
            m.put(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/tags', text=add_tags_xml)
            m.delete(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/tags/b', status_code=204)
            m.delete(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5/tags/d', status_code=204)
            m.put(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5', text=update_xml)
            single_view = TSC.ViewItem()
            single_view._id = 'd79634e1-6063-4ec9-95ff-50acbf609ff5'
            single_view._initial_tags.update(['a', 'b', 'c', 'd'])
            single_view.tags.update(['a', 'c', 'e'])
            updated_view = self.server.views.update(single_view)

        self.assertEqual(single_view.tags, updated_view.tags)
        self.assertEqual(single_view._initial_tags, updated_view._initial_tags)
예제 #14
0
    def test_add_permissions(self):
        with open(UPDATE_PERMISSIONS, 'rb') as f:
            response_xml = f.read().decode('utf-8')

        single_view = TSC.ViewItem()
        single_view._id = '21778de4-b7b9-44bc-a599-1506a2639ace'

        bob = UserItem.as_reference("7c37ee24-c4b1-42b6-a154-eaeab7ee330a")
        group_of_people = GroupItem.as_reference(
            "5e5e1978-71fa-11e4-87dd-7382f5c437af")

        new_permissions = [
            PermissionsRule(bob, {'Write': 'Allow'}),
            PermissionsRule(group_of_people, {'Read': 'Deny'})
        ]

        with requests_mock.mock() as m:
            m.put(self.baseurl +
                  "/21778de4-b7b9-44bc-a599-1506a2639ace/permissions",
                  text=response_xml)
            permissions = self.server.views.update_permissions(
                single_view, new_permissions)

        self.assertEqual(permissions[0].grantee.tag_name, 'group')
        self.assertEqual(permissions[0].grantee.id,
                         '5e5e1978-71fa-11e4-87dd-7382f5c437af')
        self.assertDictEqual(
            permissions[0].capabilities,
            {TSC.Permission.Capability.Read: TSC.Permission.Mode.Deny})

        self.assertEqual(permissions[1].grantee.tag_name, 'user')
        self.assertEqual(permissions[1].grantee.id,
                         '7c37ee24-c4b1-42b6-a154-eaeab7ee330a')
        self.assertDictEqual(
            permissions[1].capabilities,
            {TSC.Permission.Capability.Write: TSC.Permission.Mode.Allow})
예제 #15
0
    def test_update_tags(self) -> None:
        with open(ADD_TAGS_XML, "rb") as f:
            add_tags_xml = f.read().decode("utf-8")
        with open(UPDATE_XML, "rb") as f:
            update_xml = f.read().decode("utf-8")
        with requests_mock.mock() as m:
            m.put(self.baseurl + "/d79634e1-6063-4ec9-95ff-50acbf609ff5/tags",
                  text=add_tags_xml)
            m.delete(self.baseurl +
                     "/d79634e1-6063-4ec9-95ff-50acbf609ff5/tags/b",
                     status_code=204)
            m.delete(self.baseurl +
                     "/d79634e1-6063-4ec9-95ff-50acbf609ff5/tags/d",
                     status_code=204)
            m.put(self.baseurl + "/d79634e1-6063-4ec9-95ff-50acbf609ff5",
                  text=update_xml)
            single_view = TSC.ViewItem()
            single_view._id = "d79634e1-6063-4ec9-95ff-50acbf609ff5"
            single_view._initial_tags.update(["a", "b", "c", "d"])
            single_view.tags.update(["a", "c", "e"])
            updated_view = self.server.views.update(single_view)

        self.assertEqual(single_view.tags, updated_view.tags)
        self.assertEqual(single_view._initial_tags, updated_view._initial_tags)
예제 #16
0
 def test_populate_image_missing_id(self):
     single_view = TSC.ViewItem()
     single_view._id = None
     self.assertRaises(TSC.MissingRequiredFieldError,
                       self.server.views.populate_image, single_view)