def test_delete_merges_with_data_key(self, call_mock, merge_mock): """ Test that the call to delete method calls merge helper with 'data' as dictionary key (second positional parameter) """ client.delete(self.req_ctx, self.url) merge_mock.assert_called_once_with(mock.ANY, "data", mock.ANY)
def test_delete_merges_with_request_kwargs(self, call_mock, merge_mock): """ Test that the call to delete method calls merge helper with request_kwargs dictionary as first positional parameter """ client.delete(self.req_ctx, self.url, **self.request_kwargs) merge_mock.assert_called_once_with(self.request_kwargs, mock.ANY, mock.ANY)
def test_delete_merges_with_payload(self, call_mock, merge_mock): """ Test that the call to delete method with a payload calls merge helper and passes in the payload as the value parameter. """ client.delete(self.req_ctx, self.url, self.payload) merge_mock.assert_called_once_with(mock.ANY, mock.ANY, self.payload)
def test_delete_merges_with_data_key(self, call_mock, merge_mock): """ Test that the call to delete method calls merge helper with 'data' as dictionary key (second positional parameter) """ client.delete(self.req_ctx, self.url) merge_mock.assert_called_once_with(mock.ANY, 'data', mock.ANY)
def test_delete_makes_call_with_action_url_and_context(self, call_mock, merge_mock): """ Test that the call to delete method sends expected action, url, and request context. """ client.delete(self.req_ctx, self.url) call_mock.assert_called_once_with("DELETE", self.url, self.req_ctx)
def test_delete_with_request_kwargs_and_payload(self, call_mock, merge_mock): """ Test that the call to delete method with payload and request kwargs passes through properly """ client.delete(self.req_ctx, self.url, self.payload, **self.request_kwargs) call_mock.assert_called_once_with(mock.ANY, mock.ANY, mock.ANY, **self.request_kwargs)
def test_delete_makes_call_with_action_url_and_context( self, call_mock, merge_mock): """ Test that the call to delete method sends expected action, url, and request context. """ client.delete(self.req_ctx, self.url) call_mock.assert_called_once_with("DELETE", self.url, self.req_ctx)
def test_delete_with_request_kwargs_and_payload(self, call_mock, merge_mock): """ Test that the call to delete method with payload and request kwargs passes through properly. """ client.delete(self.req_ctx, self.url, self.payload, **self.request_kwargs) call_mock.assert_called_once_with(mock.ANY, mock.ANY, mock.ANY, **self.request_kwargs)
def test_delete_returns_call(self, call_mock, merge_mock): """ Test that the call to put method returns the result of 'call' """ result = client.delete(self.req_ctx, self.url) self.assertEqual(result, call_mock.return_value, "Call to 'delete' should return result of 'call' method")
def destroy_assignment_group(request_ctx, course_id, assignment_group_id, move_assignment_to, **request_kwargs): """ Deletes the assignment group with the given id. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param assignment_group_id: (required) ID :type assignment_group_id: string :param move_assignment_to: (required) The ID of an active Assignment Group to which the assignments that are currently assigned to the destroyed Assignment Group will be assigned. NOTE: If this argument is not provided, any assignments in this Assignment Group will be deleted. :type move_assignment_to: string :return: Destroy an Assignment Group :rtype: requests.Response (with AssignmentGroup data) """ path = '/v1/courses/{course_id}/assignment_groups/{assignment_group_id}' payload = { 'move_assignment_to': move_assignment_to, } url = request_ctx.base_api_url + path.format( course_id=course_id, assignment_group_id=assignment_group_id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def destroy_assignment_group(request_ctx, course_id, assignment_group_id, move_assignment_to, **request_kwargs): """ Deletes the assignment group with the given id. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param assignment_group_id: (required) ID :type assignment_group_id: string :param move_assignment_to: (required) The ID of an active Assignment Group to which the assignments that are currently assigned to the destroyed Assignment Group will be assigned. NOTE: If this argument is not provided, any assignments in this Assignment Group will be deleted. :type move_assignment_to: string :return: Destroy an Assignment Group :rtype: requests.Response (with AssignmentGroup data) """ path = '/v1/courses/{course_id}/assignment_groups/{assignment_group_id}' payload = { 'move_assignment_to' : move_assignment_to, } url = request_ctx.base_api_url + path.format(course_id=course_id, assignment_group_id=assignment_group_id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def conclude_enrollment(request_ctx, course_id, id, task=None, **request_kwargs): """ Delete or conclude an enrollment. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param id: (required) ID :type id: string :param task: (optional) The action to take on the enrollment. :type task: string or None :return: Conclude an enrollment :rtype: requests.Response (with Enrollment data) """ task_types = ("conclude", "delete") utils.validate_attr_is_acceptable(task, task_types) path = "/v1/courses/{course_id}/enrollments/{id}" payload = {"task": task} url = request_ctx.base_api_url + path.format(course_id=course_id, id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def conclude_course(request_ctx, id, event, **request_kwargs): """ Delete or conclude an existing course :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :param event: (required) The action to take on the course. :type event: string :return: Conclude a course :rtype: requests.Response (with void data) """ event_types = ('delete', 'conclude') utils.validate_attr_is_acceptable(event, event_types) path = '/v1/courses/{id}' payload = { 'event': event, } url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def delete_folder(request_ctx, id, force, **request_kwargs): """ Remove the specified folder. You can only delete empty folders unless you set the 'force' flag :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :param force: (required) Set to 'true' to allow deleting a non-empty folder :type force: boolean :return: Delete folder :rtype: requests.Response (with void data) """ path = '/v1/folders/{id}' payload = { 'force': force, } url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def remove_account_admin(request_ctx, account_id, user_id, role=None, role_id=None, **request_kwargs): """ Remove the rights associated with an account admin role from a user. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param account_id: (required) ID :type account_id: string :param user_id: (required) ID :type user_id: string :param role: (optional) (Deprecated) Account role to remove from the user. Defaults to 'AccountAdmin'. Any other account role must be specified explicitly. :type role: string or None :param role_id: (optional) The user's admin relationship with the account will be created with the given role. Defaults to the built-in role for 'AccountAdmin'. :type role_id: integer or None :return: Remove account admin :rtype: requests.Response (with Admin data) """ path = '/v1/accounts/{account_id}/admins/{user_id}' payload = { 'role' : role, 'role_id' : role_id, } url = request_ctx.base_api_url + path.format(account_id=account_id, user_id=user_id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def delete_calendar_event(request_ctx, id, cancel_reason=None, **request_kwargs): """ Delete an event from the calendar and return the deleted event :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :param cancel_reason: (optional) Reason for deleting/canceling the event. :type cancel_reason: string or None :return: Delete a calendar event :rtype: requests.Response (with void data) """ path = '/v1/calendar_events/{id}' payload = { 'cancel_reason': cancel_reason, } url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def delete_appointment_group(request_ctx, id, cancel_reason=None, **request_kwargs): """ Delete an appointment group (and associated time slots and reservations) and return the deleted group :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :param cancel_reason: (optional) Reason for deleting/canceling the appointment group. :type cancel_reason: string or None :return: Delete an appointment group :rtype: requests.Response (with void data) """ path = '/v1/appointment_groups/{id}' payload = { 'cancel_reason': cancel_reason, } url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def conclude_enrollment(request_ctx, course_id, id, task=None, **request_kwargs): """ Delete or conclude an enrollment. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param id: (required) ID :type id: string :param task: (optional) The action to take on the enrollment. :type task: string or None :return: Conclude an enrollment :rtype: requests.Response (with Enrollment data) """ task_types = ('conclude', 'delete', 'inactivate', 'deactivate') utils.validate_attr_is_acceptable(task, task_types) path = '/v1/courses/{course_id}/enrollments/{id}' payload = { 'task': task, } url = request_ctx.base_api_url + path.format(course_id=course_id, id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def conclude_course(request_ctx, id, event, **request_kwargs): """ Delete or conclude an existing course :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :param event: (required) The action to take on the course. :type event: string :return: Conclude a course :rtype: requests.Response (with void data) """ event_types = ('delete', 'conclude') utils.validate_attr_is_acceptable(event, event_types) path = '/v1/courses/{id}' payload = { 'event' : event, } url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, payload=payload, **request_kwargs) return response
def test_delete_returns_call(self, call_mock, merge_mock): """ Test that the call to put method returns the result of 'call' """ result = client.delete(self.req_ctx, self.url) self.assertEqual( result, call_mock.return_value, "Call to 'delete' should return result of 'call' method")
def hide_all_stream_items(request_ctx, **request_kwargs): """ Hide all stream items for the user :param request_ctx: The request context :type request_ctx: :class:RequestContext :return: Hide all stream items :rtype: requests.Response (with void data) """ path = '/v1/users/self/activity_stream' url = request_ctx.base_api_url + path.format() response = client.delete(request_ctx, url, **request_kwargs) return response
def reset_course_favorites(request_ctx, **request_kwargs): """ Reset the current user's course favorites to the default automatically generated list of enrolled courses :param request_ctx: The request context :type request_ctx: :class:RequestContext :return: Reset course favorites :rtype: requests.Response (with void data) """ path = '/v1/users/self/favorites/courses' url = request_ctx.base_api_url + path.format() response = client.delete(request_ctx, url, **request_kwargs) return response
def de_cross_list_section(request_ctx, id, **request_kwargs): """ Undo cross-listing of a Section, returning it to its original course. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :return: De-cross-list a Section :rtype: requests.Response (with Section data) """ path = '/v1/sections/{id}/crosslist' url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_poll(request_ctx, id, **request_kwargs): """ <b>204 No Content</b> response code is returned if the deletion was successful. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :return: Delete a poll :rtype: requests.Response (with void data) """ path = '/v1/polls/{id}' url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_discovery_url(request_ctx, account_id, **request_kwargs): """ Clear discovery url :param request_ctx: The request context :type request_ctx: :class:RequestContext :param account_id: (required) ID :type account_id: string :return: Delete discovery url :rtype: requests.Response (with void data) """ path = "/v1/accounts/{account_id}/account_authorization_configs/discovery_url" url = request_ctx.base_api_url + path.format(account_id=account_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def hide_stream_item(request_ctx, id, **request_kwargs): """ Hide the given stream item. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :return: Hide a stream item :rtype: requests.Response (with void data) """ path = '/v1/users/self/activity_stream/{id}' url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def remove_course_from_favorites(request_ctx, id, **request_kwargs): """ Remove a course from the current user's favorites. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) the ID or SIS ID of the course to remove :type id: string :return: Remove course from favorites :rtype: requests.Response (with Favorite data) """ path = '/v1/users/self/favorites/courses/{id}' url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_group(request_ctx, group_id, **request_kwargs): """ Deletes a group and removes all members. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param group_id: (required) ID :type group_id: string :return: Delete a group :rtype: requests.Response (with Group data) """ path = "/v1/groups/{group_id}" url = request_ctx.base_api_url + path.format(group_id=group_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_section(request_ctx, id, **request_kwargs): """ Delete an existing section. Returns the former Section. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :return: Delete a section :rtype: requests.Response (with Section data) """ path = '/v1/sections/{id}' url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_group(request_ctx, group_id, **request_kwargs): """ Deletes a group and removes all members. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param group_id: (required) ID :type group_id: string :return: Delete a group :rtype: requests.Response (with Group data) """ path = '/v1/groups/{group_id}' url = request_ctx.base_api_url + path.format(group_id=group_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_discovery_url(request_ctx, account_id, **request_kwargs): """ Clear discovery url :param request_ctx: The request context :type request_ctx: :class:RequestContext :param account_id: (required) ID :type account_id: string :return: Delete discovery url :rtype: requests.Response (with void data) """ path = '/v1/accounts/{account_id}/account_authorization_configs/discovery_url' url = request_ctx.base_api_url + path.format(account_id=account_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_group_category(request_ctx, group_category_id, **request_kwargs): """ Deletes a group category and all groups under it. Protected group categories can not be deleted, i.e. "communities", "student_organized", and "imported". :param request_ctx: The request context :type request_ctx: :class:RequestContext :param group_category_id: (required) ID :type group_category_id: string :return: Delete a Group Category :rtype: requests.Response (with void data) """ path = '/v1/group_categories/{group_category_id}' url = request_ctx.base_api_url + path.format(group_category_id=group_category_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_quiz(request_ctx, course_id, id, **request_kwargs): """ :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param id: (required) ID :type id: string :return: Delete a quiz :rtype: requests.Response (with Quiz data) """ path = "/v1/courses/{course_id}/quizzes/{id}" url = request_ctx.base_api_url + path.format(course_id=course_id, id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def remove_observee(request_ctx, user_id, observee_id, **request_kwargs): """ Unregisters a user as being observed by the given user. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param user_id: (required) ID :type user_id: string :param observee_id: (required) ID :type observee_id: string :return: Remove an observee :rtype: requests.Response (with User data) """ path = '/v1/users/{user_id}/observees/{observee_id}' url = request_ctx.base_api_url + path.format(user_id=user_id, observee_id=observee_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_external_feed_groups(request_ctx, group_id, external_feed_id, **request_kwargs): """ Deletes the external feed. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param group_id: (required) ID :type group_id: string :param external_feed_id: (required) ID :type external_feed_id: string :return: Delete an external feed :rtype: requests.Response (with ExternalFeed data) """ path = '/v1/groups/{group_id}/external_feeds/{external_feed_id}' url = request_ctx.base_api_url + path.format(group_id=group_id, external_feed_id=external_feed_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_external_tool_accounts(request_ctx, account_id, external_tool_id, **request_kwargs): """ Remove the specified external tool :param request_ctx: The request context :type request_ctx: :class:RequestContext :param account_id: (required) ID :type account_id: string :param external_tool_id: (required) ID :type external_tool_id: string :return: Delete an external tool :rtype: requests.Response (with void data) """ path = '/v1/accounts/{account_id}/external_tools/{external_tool_id}' url = request_ctx.base_api_url + path.format(account_id=account_id, external_tool_id=external_tool_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_user_login(request_ctx, user_id, id, **request_kwargs): """ Delete an existing login. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param user_id: (required) ID :type user_id: string :param id: (required) ID :type id: string :return: Delete a user login :rtype: requests.Response (with void data) """ path = '/v1/users/{user_id}/logins/{id}' url = request_ctx.base_api_url + path.format(user_id=user_id, id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_page_groups(request_ctx, group_id, url, **request_kwargs): """ Delete a wiki page :param request_ctx: The request context :type request_ctx: :class:RequestContext :param group_id: (required) ID :type group_id: string :param url: (required) ID :type url: string :return: Delete page :rtype: requests.Response (with Page data) """ path = '/v1/groups/{group_id}/pages/{url}' url = request_ctx.base_api_url + path.format(group_id=group_id, url=url) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_custom_gradebook_column(request_ctx, course_id, id, **request_kwargs): """ Permanently deletes a custom column and its associated data :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param id: (required) ID :type id: string :return: Delete a custom gradebook column :rtype: requests.Response (with CustomColumn data) """ path = '/v1/courses/{course_id}/custom_gradebook_columns/{id}' url = request_ctx.base_api_url + path.format(course_id=course_id, id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_communication_channel_id(request_ctx, user_id, id, **request_kwargs): """ Delete an existing communication channel. :param request_ctx: The request context :type request_ctx: :class:RequestContext :param user_id: (required) ID :type user_id: string :param id: (required) ID :type id: string :return: Delete a communication channel :rtype: requests.Response (with CommunicationChannel data) """ path = '/v1/users/{user_id}/communication_channels/{id}' url = request_ctx.base_api_url + path.format(user_id=user_id, id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_group_category(request_ctx, group_category_id, **request_kwargs): """ Deletes a group category and all groups under it. Protected group categories can not be deleted, i.e. "communities", "student_organized", and "imported". :param request_ctx: The request context :type request_ctx: :class:RequestContext :param group_category_id: (required) ID :type group_category_id: string :return: Delete a Group Category :rtype: requests.Response (with void data) """ path = '/v1/group_categories/{group_category_id}' url = request_ctx.base_api_url + path.format( group_category_id=group_category_id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_module(request_ctx, course_id, id, **request_kwargs): """ Delete a module :param request_ctx: The request context :type request_ctx: :class:RequestContext :param course_id: (required) ID :type course_id: string :param id: (required) ID :type id: string :return: Delete module :rtype: requests.Response (with Module data) """ path = '/v1/courses/{course_id}/modules/{id}' url = request_ctx.base_api_url + path.format(course_id=course_id, id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_file(request_ctx, id, **request_kwargs): """ Remove the specified file curl -XDELETE 'https://<canvas>/api/v1/files/<file_id>' \ -H 'Authorization: Bearer <token>' :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :return: Delete file :rtype: requests.Response (with void data) """ path = "/v1/files/{id}" url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response
def delete_file(request_ctx, id, **request_kwargs): """ Remove the specified file curl -XDELETE 'https://<canvas>/api/v1/files/<file_id>' \ -H 'Authorization: Bearer <token>' :param request_ctx: The request context :type request_ctx: :class:RequestContext :param id: (required) ID :type id: string :return: Delete file :rtype: requests.Response (with void data) """ path = '/v1/files/{id}' url = request_ctx.base_api_url + path.format(id=id) response = client.delete(request_ctx, url, **request_kwargs) return response