def test_get_paginated_50(self): url = 'https://foo.cc.columbia.edu/api/v1/search' mock_response_1 = get_mock_response_with_pagination(url) mock_response_2 = MagicMock(headers={'link': url + 'page=2'}) mock_response_2.json.return_value = {'value': 'second response'} self._mock_requests.get.side_effect = [ mock_response_1, mock_response_2 ] test_client = CanvasAPIv1('https://foo.cc.columbia.edu/api/v1/', TEST_TOKEN, requests_lib=self._mock_requests, per_page=50) generator = test_client._get_paginated(url) next_value = next(generator) assert 'value' in next_value assert next_value['value'] == 'first response' next_value = next(generator) assert 'value' in next_value assert next_value['value'] == 'second response' print(self._mock_requests.get.mock_calls) # there should be no additional pages to paginate, so expect an error: with self.assertRaises(StopIteration): next(generator)
def test_put_page_is_sis_course_id(self): course = 'ASDFD5100_007_2018_2' url = 'test_page' title = 'Test Title' body = '<html><body><h1>Test Title</h1><p>Foo</p></body></html>' data = { 'wiki_page[url]': url, 'wiki_page[published]': True, 'wiki_page[notify_of_update]': False, 'wiki_page[title]': title, 'wiki_page[front_page]': False, 'wiki_page[body]': body } test_client = CanvasAPIv1('https://foo.cc.columbia.edu/api/v1/', 'foo_token', requests_lib=self._mock_requests, is_sis_course_id=True) test_client.put_page(course, url=url, title=title, body=body) course_str = 'sis_course_id:{}'.format(course) url = 'https://foo.cc.columbia.edu/api/v1/courses/{}/pages/{}'.format( course_str, url) _assert_request_called_once_with(self._mock_requests.put, url, params=DEFAULT_PARAMS, data=data)
def test_get_account_roles_sis(self): test_client = CanvasAPIv1('https://foo.cc.columbia.edu/api/v1/', 'foo_token', requests_lib=self._mock_requests, is_sis_account_id=True) test_client.get_account_roles('ASDF') url = 'https://foo.cc.columbia.edu/api/v1/accounts/sis_account_id:ASDF/roles' _assert_request_called_once_with(self._mock_requests.get, url)
This module provides a collection of utilities and a thin wrapper interface with the Canvas API using a combination of the python CanvasAPIv1 package and direct HTTPS connections. References: - UNL's Canvas API instance is at: https://canvas.unl.edu/api/v1/ - UNL's Live instance: https://canvas.unl.edu/doc/api/live - CanvasAPIv1 (canvas-api-client) documentation: https://wgwz.github.io/canvas-lms-tools/canvas_api_client.html#module-canvas_api_client.v1_client """ canvasHost = "canvas.unl.edu" api = CanvasAPIv1(config.canvasUrl, config.canvasApiKey) def getGroupCategoryId(groupSetName): """ Retrieves the Canvas "Group Set" ID (internally this is designated as a Group Category) given the name of the group such as "Assignment Pairs". If no match is found, None is returned. """ path = ("/api/v1/courses/" + config.canvasCourseId + "/group_categories/?access_token=" + config.canvasApiKey) connection = http.client.HTTPSConnection(canvasHost) connection.request("GET", path) response = connection.getresponse() #print("Status: {} and reason: {}".format(response.status, response.reason))
def setUp(self, ): self._mock_requests = MagicMock() self.test_client = CanvasAPIv1('https://foo.cc.columbia.edu/api/v1/', 'foo_token', requests_lib=self._mock_requests)