def set_password(self, user, password): """Sets the password of a user salesforce dev documentation link: https://www.salesforce.com/us/developer/docs/api_rest/Content/dome_sobject_user_password.htm Arguments: * user: the userID of the user to set * password: the new password """ url = self.base_url + 'sobjects/User/%s/password' % user params = {'NewPassword': password} result = self._call_salesforce('POST', url, data=json.dumps(params)) # salesforce return 204 No Content when the request is successful if result.status_code != 200 and result.status_code != 204: raise SalesforceGeneralError(url, 'User', result.status_code, result.content) json_result = result.json(object_pairs_hook=OrderedDict) if len(json_result) == 0: return None return json_result
def test_delete_scratch_org__exception(scratch_org_factory): scratch_org = scratch_org_factory() with ExitStack() as stack: stack.enter_context(patch(f"{PATCH_ROOT}.async_to_sync")) get_latest_revision_numbers = stack.enter_context( patch(f"{PATCH_ROOT}.get_latest_revision_numbers")) get_latest_revision_numbers.return_value = { "name": { "member": 1, "member2": 1 }, "name1": { "member": 1, "member2": 1 }, } sf_delete_scratch_org = stack.enter_context( patch(f"{PATCH_ROOT}.delete_org")) sf_delete_scratch_org.side_effect = SalesforceGeneralError( "https://example.com", 418, "I'M A TEAPOT", [{ "error": "Short and stout" }]) with pytest.raises(SalesforceGeneralError): delete_scratch_org(scratch_org, originating_user_id=None) scratch_org.refresh_from_db() assert scratch_org.delete_queued_at is None assert get_latest_revision_numbers.called
def describe(self): """Describes all available objects """ url = self.base_url + "sobjects" result = self._call_salesforce('GET', url) if result.status_code != 200: raise SalesforceGeneralError(url, 'describe', result.status_code, result.content) json_result = result.json(object_pairs_hook=OrderedDict) if len(json_result) == 0: return None return json_result
def restful(self, path, params, method='GET'): """Allows you to make a direct REST call if you know the path Arguments: * path: The path of the request Example: sobjects/User/ABC123/password' * params: dict of parameters to pass to the path * method: HTTP request method, default GET """ url = self.base_url + path result = self._call_salesforce(method, url, params=params) if result.status_code != 200: raise SalesforceGeneralError(url, path, result.status_code, result.content) json_result = result.json(object_pairs_hook=OrderedDict) if len(json_result) == 0: return None return json_result
def search(self, search): """Returns the result of a Salesforce search as a dict decoded from the Salesforce response JSON payload. Arguments: * search -- the fully formatted SOSL search string, e.g. `FIND {Waldo}` """ url = self.base_url + 'search/' # `requests` will correctly encode the query string passed as `params` params = {'q': search} result = self._call_salesforce('GET', url, params=params) if result.status_code != 200: raise SalesforceGeneralError(url, 'search', result.status_code, result.content) json_result = result.json(object_pairs_hook=OrderedDict) if len(json_result) == 0: return None return json_result