cumulusci 3.52.0.dev0__tar.gz → 3.53.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/HISTORY.rst +20 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/PKG-INFO +22 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/README.rst +1 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/cci.py +1 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/org.py +44 -14
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/service.py +32 -7
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_cci.py +4 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_org.py +138 -57
- cumulusci-3.53.0.dev0/cumulusci/cli/tests/test_service.py +527 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/utils.py +16 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/base_config.py +1 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/org_config.py +13 -2
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/test_config.py +52 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/base_project_keychain.py +92 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/encrypted_file_project_keychain.py +0 -12
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/runtime.py +10 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tasks.py +56 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cumulusci.yml +10 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/CumulusCI.py +26 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_cumulusci_library.py +44 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/schema/cumulusci.jsonschema.json +4 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/delete.py +6 -47
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_working_directory.py +4 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/subtask_configurator.py +10 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_delete.py +1 -1
- cumulusci-3.53.0.dev0/cumulusci/tasks/bulkdata/tests/test_updates.py +404 -0
- cumulusci-3.53.0.dev0/cumulusci/tasks/bulkdata/update_data.py +226 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/connectedapp.py +2 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/base.py +11 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/deploy.py +10 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/get_user_info.py +7 -15
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_base.py +2 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_deploy.py +44 -27
- cumulusci-3.53.0.dev0/cumulusci/tasks/marketing_cloud/util.py +35 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/libdoc.py +27 -3
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_robotframework.py +49 -9
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_schema.py +5 -8
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/fileutils.py +14 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_fileutils.py +23 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/cumulusci_yml.py +8 -0
- cumulusci-3.53.0.dev0/cumulusci/version.txt +1 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/PKG-INFO +22 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/SOURCES.txt +3 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/requires.txt +8 -9
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cli.rst +3 -5
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/config.rst +2 -4
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/connected_orgs.rst +22 -16
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/data.rst +48 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/headless.rst +1 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/requirements/dev.txt +14 -17
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/requirements/prod.txt +9 -13
- cumulusci-3.52.0.dev0/cumulusci/cli/tests/test_service.py +0 -627
- cumulusci-3.52.0.dev0/cumulusci/version.txt +0 -1
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/AUTHORS.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/CONTRIBUTING.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/LICENSE +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/MANIFEST.in +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/__main__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/error.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/logger.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/plan.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/project.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/runtime.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_error.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_logger.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_plan.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_project.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_runtime.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_ui.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/ui.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/cli/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/BaseConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/BaseTaskFlowConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/OrgConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/ScratchOrgConfig.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/base_task_flow_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/marketing_cloud_service_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/oauth2_service_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/project_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/scratch_org_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/sfdx_org_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/_test_config_backwards_compatibility.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/test_config_expensive.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/tests/test_config_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/universal_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/config/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/debug.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/resolvers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/test_dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/test_github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/tests/test_resolvers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/dependencies/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/flowrunner.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/environment_project_keychain.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/tests/test_base_project_keychain.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/keychain/tests/test_encrypted_file_project_keychain.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/metadeploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/source/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/source/github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/source/local_folder.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/template_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_flowrunner.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_github.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_source.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_utils_merge_config.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/test_versions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/tests/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/core/versions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/admin_profile.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/delete_excludes.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/README.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/cumulusci.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/dot-gitignore +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/mapping.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/files/templates/project/scratch_def.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/client.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/tests/test_client.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/oauth/tests/test_salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/CumulusCI.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/Salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/Salesforce.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/form_handlers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locator_manager.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locators_52.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locators_53.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/locators_54.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/BasePageObjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/ObjectManagerPageObject.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/PageObjectLibrary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/PageObjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/pageobjects/baseobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/perftests/short/collection_perf.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/BarTestPage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/FooTestPage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/base.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/bulkdata.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/communities.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/cumulusci/datagen.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/TestLibraryA.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/TestLibraryB.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/TestListener.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/api.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/browsers.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/classic.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/create_contact.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/faker.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/forms.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/locators.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/base_pageobjects.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/example_page_object.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/listing_page.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/objectmanager.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/pageobjects/pageobjects.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/performance.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/populate.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/test_testlistener.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/salesforce/ui.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_locator_manager.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_pageobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_salesforce_locators.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_template_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/robotframework/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/mc_soap_envelopes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/metadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/org_schema.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/org_schema_models.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/package_install.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/package_zip.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/soap_envelopes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/metadata_test_strings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_metadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_package_install.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_package_zip.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/salesforce_api/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/anon.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/batch.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/testrunner.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/apex/tests/test_apex_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/base_generate_data_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/dates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/extract.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/factory_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_and_load_data.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_and_load_data_from_yaml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_from_yaml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/generate_mapping.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/load.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/mapping_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/queue_manager.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/snowfakery_utils/snowfakery_run_until.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/step.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Account.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Case.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Contact.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/Opportunity.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/OpportunityContactRole.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/dummy_data_factory.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/global_describe.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping-oid.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_after.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_simple.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v1.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v2.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_v3.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mapping_vanilla_sf.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/mock_data_factory_without_mapping.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/recordtypes.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/child/child2.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/child.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/gen_npsp_standard_objects.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/include_parent.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/npsp_standard_objects_macros.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/options.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/query_snowfakery.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/sf_standard_object_macros.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_2.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/simple_snowfakery_channels_2.load.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/snowfakery/unique_values.recipe.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_base_generate_data_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_dates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_extract.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_factory_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generate_and_load.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generate_from_snowfakery_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_generatemapping.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_load.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_mapping_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_snowfakery.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_step.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/tests/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/bulkdata/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/command.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/create_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/datadictionary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/dx_convert_from.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/base.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/commit_status.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/merge.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/publish.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/pull_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/release.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/release_report.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tag.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_commit_status.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_merge.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_publish.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_pull_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_release.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_release_report.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_tag.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/test_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/tests/util_github_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/github/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/mc_constants.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/expected-payload.json +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_api_soap_envelopes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/marketing_cloud/tests/test_get_user_info.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/ee_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/managed_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/metadata_map.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/modify.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/package.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/destructiveChanges.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/package.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/package_metadata/namespaced_report_folder/reports/namespace__TestFolder/TestReport.report +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/sample_package.xml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_ee_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_managed_src.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_modify.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata/tests/test_package.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/base.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/duplicate_rules.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/field_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/help_text.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/layouts.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/permissions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/picklists.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/sharing.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_base.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_duplicate_rules.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_field_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_help_text.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_layouts.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_permissions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_picklists.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_sharing.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/tests/test_value_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadata_etl/value_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metadeploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/metaxml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/licenses.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/packages.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/permsets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/recordtypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/sobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_licenses.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_packages.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_permset_preflights.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_recordtypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/preflight/tests/test_sobjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/README.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/push_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/pushfails.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tests/test_push_api.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/push/tests/test_push_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/README.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/exceptions.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/generator.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/provider.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/full/example1.md +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/1.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/2.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/multi/3.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/change_notes/single/1.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_generator.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_provider.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/test_task.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/release_notes/tests/utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/DebugListener.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/model.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/debugger/ui.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/lint.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/lint_defaults.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/robotframework.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/stylesheet.css +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/template.html +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/TestLibrary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/TestPageObjects.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/TestResource.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/failing_tests.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/performance.robot +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_debugger.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_robot_lint.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/robotframework/tests/test_robot_parallel.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseRetrieveMetadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceApiTask.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceMetadataApiTask.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseSalesforceTask.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/BaseUninstallMetadata.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/CreateCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/CreatePackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/Deploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/DeployBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/EnsureRecordTypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/GetInstalledPackages.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/ListCommunities.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/ListCommunityTemplates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/PublishCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/RetrievePackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/RetrieveReportsAndDashboards.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/RetrieveUnpackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/SOQLQuery.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallLocal.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallLocalBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallPackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UninstallPackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/UpdateAdminProfile.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/activate_flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/composite.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/create_permission_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/custom_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/custom_settings_wait.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/enable_prediction.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/insert_record.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/install_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/license_preflights.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/network_member_group.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/org_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/package_upload.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/profiles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/promote_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/sourcetracking.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_CreateCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_CreatePackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_Deploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_DeployBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_EnsureRecordTypes.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_ListCommunities.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_ListCommunityTemplates.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_PackageUpload.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_ProfileGrantAllAccess.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_PublishCommunity.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrievePackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrieveReportsAndDashboards.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_RetrieveUnpackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_SOQLQuery.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocal.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallLocalNamespacedBundles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackage.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackaged.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_UninstallPackagedIncremental.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_activate_flow.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_base_tasks.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_composite.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_create_permission_sets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_custom_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_custom_settings_wait.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_enable_prediction.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_insert_record.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_install_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_network_member_group.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_org_settings.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_profiles.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_sourcetracking.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_trigger_handlers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/test_update_dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/tests/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/trigger_handlers.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/uninstall_packaged_incremental.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/update_dependencies.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/update_profile.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/permsets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/photos.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/tests/photo.mock.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/tests/test_permsets.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/salesforce/users/tests/test_photos.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/conftest.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_command.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_connectedapp.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_create_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_datadictionary.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_dx_convert_from.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_metadeploy.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_metaxml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_promote_package_version.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_pushfails.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_salesforce.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_sfdx.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/tests/test_util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tasks/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_orgconnect.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/pytest_plugins/pytest_sf_vcr.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/pytest_plugins/pytest_typeguard.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_entry_points.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_integration_infrastructure.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_main.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/test_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/tests/util.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/classutils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/git.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/http/multi_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/http/requests_utils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/http/tests/test_multi_request.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/iterators.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/logging.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/parallel/task_worker_queues/parallel_worker_queue.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/parallel/task_worker_queues/tests/test_parallel_worker.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_git.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_logging.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_org_schema.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_org_schema_models.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/tests/test_waiting.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/waiting.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/__init__.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/metadata_tree.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/robot_xml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/salesforce_encoding.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/test/test_metadata_tree.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/xml/test/test_salesforce_encoding.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/model_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/safer_loader.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/bad_cci.yml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/test_cumulusci_yml.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/test_model_parser.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/yaml/tests/test_safer_loader.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci/utils/ziputils.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/dependency_links.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/entry_points.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/not-zip-safe +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/cumulusci.egg-info/top_level.txt +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/2gp_testing.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/Makefile +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/about.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cheat_sheet.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/commands.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/concepts.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/conf.py +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/continuous_integration.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/contributing.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cookbook.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/cumulusci_flow.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/dev.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image1.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image12.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image15.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image17.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/diagram/img/image3.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/env_var_reference.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/get_started.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/github_actions.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/history.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/cci_service_list.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/cumulus_ci_workflow.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/env-var.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/env-var2.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github-commit_status_error.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github-commit_status_pass.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github-creating_a_uat_release.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_checks.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_personal_access_token_scopes.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_secrets.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/github_workflow.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/locate_elements_screenshot.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/pipx.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/robot_log_screenshot.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/robot_toggled_results_screenshot.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/salesforce-org-process.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/service-list.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/skipping_task.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/windows_python.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/images/windows_python_success.png +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/index.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/install.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/internals.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/intro.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/make.bat +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/managed_2gp.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/managed_package.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/metadata_etl.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/npsp_eda_2gp.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/packaging.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/push_upgrades.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/reference.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/release_notes.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot_advanced.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot_debugger.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/robot_tutorial.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/scratch_orgs.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/tutorial.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/unlocked_package.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/docs/unpackaged.rst +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/pyproject.toml +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/setup.cfg +0 -0
- {cumulusci-3.52.0.dev0 → cumulusci-3.53.0.dev0}/setup.py +0 -0
|
@@ -2,7 +2,27 @@
|
|
|
2
2
|
History
|
|
3
3
|
=======
|
|
4
4
|
|
|
5
|
+
3.52.0 (2022-02-03)
|
|
6
|
+
-------------------
|
|
7
|
+
|
|
8
|
+
Changes
|
|
9
|
+
|
|
10
|
+
* Flow steps can now be replaced with the same syntax for all step types! (Current step types are: 'task' or 'flow'). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override#replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to ``None`` when replacing with a step of a differing type. (#3043)
|
|
11
|
+
* Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
|
|
12
|
+
* Added a new option ``--preview`` to the ``robot_libdoc`` task. When set to ``true`` it automatically opens a browser window to the generated documentation. (#3057)
|
|
13
|
+
* The robot keyword ``Locate element by label`` has been removed from the Salesforce.py library. This wasn't designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the form ``label:<text>`` (eg: ``label:First Name``) (#3048)
|
|
14
|
+
* Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
|
|
15
|
+
* If you have Python code that is importing CumulusCI's config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
|
|
16
|
+
|
|
17
|
+
Issues Closed
|
|
18
|
+
|
|
19
|
+
* Fixed an issue where overriding flow steps was not working as documented. (#3043)
|
|
20
|
+
* We fixed a bug where the ``Run Task`` and ``Run Task Class`` robot keywords throw an error like ``AttributeError: module 'robot.api.logger' has no attribute 'log'`` in rare cases (#3053)
|
|
21
|
+
* Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
|
|
22
|
+
|
|
23
|
+
|
|
5
24
|
3.51.1 (2022-01-25)
|
|
25
|
+
-------------------
|
|
6
26
|
|
|
7
27
|
Issues Closed
|
|
8
28
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cumulusci
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.53.0.dev0
|
|
4
4
|
Summary: Build and release tools for Salesforce developers
|
|
5
5
|
Home-page: https://github.com/SFDO-Tooling/CumulusCI
|
|
6
6
|
Author: Salesforce.org
|
|
@@ -57,9 +57,7 @@ Description: =========
|
|
|
57
57
|
Questions?
|
|
58
58
|
----------
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Others can ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
60
|
+
Ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
63
61
|
|
|
64
62
|
*Please note:* CumulusCI is distributed under an `open source license <https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE>`_ and is not covered by the Salesforce Master Subscription Agreement.
|
|
65
63
|
|
|
@@ -68,7 +66,27 @@ Description: =========
|
|
|
68
66
|
History
|
|
69
67
|
=======
|
|
70
68
|
|
|
69
|
+
3.52.0 (2022-02-03)
|
|
70
|
+
-------------------
|
|
71
|
+
|
|
72
|
+
Changes
|
|
73
|
+
|
|
74
|
+
* Flow steps can now be replaced with the same syntax for all step types! (Current step types are: 'task' or 'flow'). See the [replacing a flow step](https://cumulusci.readthedocs.io/en/latest/config.html?highlight=override#replace-a-flow-step) docs for more details. CumulusCI is still compatible with the old syntax which required setting the current step type to ``None`` when replacing with a step of a differing type. (#3043)
|
|
75
|
+
* Whenever possible, while running the ``robot_libdoc`` task libdoc generates relative pathnames when creating CSV output (#3058)
|
|
76
|
+
* Added a new option ``--preview`` to the ``robot_libdoc`` task. When set to ``true`` it automatically opens a browser window to the generated documentation. (#3057)
|
|
77
|
+
* The robot keyword ``Locate element by label`` has been removed from the Salesforce.py library. This wasn't designed to be a keyword but was accidentally exported as one. If you want to find an input or textarea element by its label you can use a locator of the form ``label:<text>`` (eg: ``label:First Name``) (#3048)
|
|
78
|
+
* Updated to `Snowfakery 2.5.0 <https://github.com/SFDO-Tooling/Snowfakery/releases/tag/v2.5.0>`__
|
|
79
|
+
* If you have Python code that is importing CumulusCI's config classes, some of them have been reorganized into modules with a snake_case name. The old CamelCase imports should still work, but the new names are preferred for consistency with other parts of the codebase.
|
|
80
|
+
|
|
81
|
+
Issues Closed
|
|
82
|
+
|
|
83
|
+
* Fixed an issue where overriding flow steps was not working as documented. (#3043)
|
|
84
|
+
* We fixed a bug where the ``Run Task`` and ``Run Task Class`` robot keywords throw an error like ``AttributeError: module 'robot.api.logger' has no attribute 'log'`` in rare cases (#3053)
|
|
85
|
+
* Fixed a bug in the `snowfakery` task which caused Unique IDs to not always be actually unique. (#3059)
|
|
86
|
+
|
|
87
|
+
|
|
71
88
|
3.51.1 (2022-01-25)
|
|
89
|
+
-------------------
|
|
72
90
|
|
|
73
91
|
Issues Closed
|
|
74
92
|
|
|
@@ -49,8 +49,6 @@ from minute 36 through minute 54.
|
|
|
49
49
|
Questions?
|
|
50
50
|
----------
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
Others can ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
52
|
+
Ask in the `CumulusCI group in the Trailblazer Community <https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9ZCAU>`_.
|
|
55
53
|
|
|
56
54
|
*Please note:* CumulusCI is distributed under an `open source license <https://github.com/SFDO-Tooling/CumulusCI/blob/main/LICENSE>`_ and is not covered by the Salesforce Master Subscription Agreement.
|
|
@@ -120,7 +120,7 @@ def handle_exception(
|
|
|
120
120
|
traceback.print_exc(file=log_file) # log stacktrace silently
|
|
121
121
|
|
|
122
122
|
if should_show_stacktraces and not isinstance(error, USAGE_ERRORS):
|
|
123
|
-
|
|
123
|
+
error_console.print_exception()
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
def connection_error_message(console: Console):
|
|
@@ -11,7 +11,12 @@ from rich.console import Console
|
|
|
11
11
|
from cumulusci.cli.ui import CliTable, SimpleSalesforceUIHelpers
|
|
12
12
|
from cumulusci.core.config import OrgConfig, ScratchOrgConfig
|
|
13
13
|
from cumulusci.core.exceptions import OrgNotFound
|
|
14
|
-
from cumulusci.oauth.client import
|
|
14
|
+
from cumulusci.oauth.client import (
|
|
15
|
+
PROD_LOGIN_URL,
|
|
16
|
+
SANDBOX_LOGIN_URL,
|
|
17
|
+
OAuth2Client,
|
|
18
|
+
OAuth2ClientConfig,
|
|
19
|
+
)
|
|
15
20
|
from cumulusci.salesforce_api.utils import get_simple_salesforce_connection
|
|
16
21
|
from cumulusci.utils import parse_api_datetime
|
|
17
22
|
|
|
@@ -109,27 +114,35 @@ def org_browser(runtime, org_name, path, url_only):
|
|
|
109
114
|
org_config.save()
|
|
110
115
|
|
|
111
116
|
|
|
112
|
-
def setup_client(
|
|
113
|
-
"""Provides an OAuth2Client for
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
def setup_client(connected_app, login_url=None, sandbox=None) -> OAuth2Client:
|
|
118
|
+
"""Provides an OAuth2Client for connecting an Org"""
|
|
119
|
+
if login_url:
|
|
120
|
+
base_uri = login_url
|
|
121
|
+
elif sandbox:
|
|
122
|
+
base_uri = SANDBOX_LOGIN_URL
|
|
123
|
+
elif connected_app.login_url:
|
|
124
|
+
base_uri = connected_app.login_url
|
|
125
|
+
else:
|
|
126
|
+
base_uri = PROD_LOGIN_URL
|
|
127
|
+
base_uri = base_uri.rstrip("/")
|
|
119
128
|
|
|
120
129
|
sf_client_config = OAuth2ClientConfig(
|
|
121
130
|
client_id=connected_app.client_id,
|
|
122
131
|
client_secret=connected_app.client_secret,
|
|
123
132
|
redirect_uri=connected_app.callback_url,
|
|
124
|
-
auth_uri=
|
|
125
|
-
token_uri=
|
|
133
|
+
auth_uri=f"{base_uri}/services/oauth2/authorize",
|
|
134
|
+
token_uri=f"{base_uri}/services/oauth2/token",
|
|
126
135
|
scope="web full refresh_token",
|
|
127
136
|
)
|
|
128
137
|
return OAuth2Client(sf_client_config)
|
|
129
138
|
|
|
130
139
|
|
|
131
140
|
def connect_org_to_keychain(
|
|
132
|
-
client: OAuth2Client,
|
|
141
|
+
client: OAuth2Client,
|
|
142
|
+
runtime,
|
|
143
|
+
global_org: bool,
|
|
144
|
+
org_name: str,
|
|
145
|
+
connected_app: str,
|
|
133
146
|
) -> None:
|
|
134
147
|
"""Use the given client to authorize into an org, and save the
|
|
135
148
|
new OrgConfig to the keychain."""
|
|
@@ -137,6 +150,7 @@ def connect_org_to_keychain(
|
|
|
137
150
|
|
|
138
151
|
global_org = global_org or runtime.project_config is None
|
|
139
152
|
org_config = OrgConfig(oauth_dict, org_name, runtime.keychain, global_org)
|
|
153
|
+
org_config.config["connected_app"] = connected_app
|
|
140
154
|
org_config.load_userinfo()
|
|
141
155
|
org_config._load_orginfo()
|
|
142
156
|
if org_config.organization_sobject["TrialExpirationDate"] is None:
|
|
@@ -153,6 +167,12 @@ def connect_org_to_keychain(
|
|
|
153
167
|
name="connect", help="Connects a new org's credentials using OAuth Web Flow"
|
|
154
168
|
)
|
|
155
169
|
@orgname_option_or_argument(required=True)
|
|
170
|
+
@click.option(
|
|
171
|
+
"--connected-app",
|
|
172
|
+
"--connected_app",
|
|
173
|
+
"connected_app_name",
|
|
174
|
+
help="Name of the connected_app service to use.",
|
|
175
|
+
)
|
|
156
176
|
@click.option(
|
|
157
177
|
"--sandbox", is_flag=True, help="If set, connects to a Salesforce sandbox org"
|
|
158
178
|
)
|
|
@@ -171,7 +191,9 @@ def connect_org_to_keychain(
|
|
|
171
191
|
is_flag=True,
|
|
172
192
|
)
|
|
173
193
|
@pass_runtime(require_project=False, require_keychain=True)
|
|
174
|
-
def org_connect(
|
|
194
|
+
def org_connect(
|
|
195
|
+
runtime, org_name, sandbox, login_url, default, global_org, connected_app_name=None
|
|
196
|
+
):
|
|
175
197
|
runtime.check_org_overwrite(org_name)
|
|
176
198
|
|
|
177
199
|
if login_url and ".lightning." in login_url:
|
|
@@ -180,8 +202,15 @@ def org_connect(runtime, org_name, sandbox, login_url, default, global_org):
|
|
|
180
202
|
"Use the my.salesforce.com version instead"
|
|
181
203
|
)
|
|
182
204
|
|
|
183
|
-
|
|
184
|
-
|
|
205
|
+
connected_app_name = (
|
|
206
|
+
connected_app_name or runtime.keychain.get_default_service_name("connected_app")
|
|
207
|
+
)
|
|
208
|
+
click.echo(f"Connecting org using the {connected_app_name} connected app...")
|
|
209
|
+
connected_app = runtime.keychain.get_service("connected_app", connected_app_name)
|
|
210
|
+
sf_client = setup_client(connected_app, login_url, sandbox)
|
|
211
|
+
connect_org_to_keychain(
|
|
212
|
+
sf_client, runtime, global_org, org_name, connected_app_name
|
|
213
|
+
)
|
|
185
214
|
|
|
186
215
|
if default and runtime.project_config is not None:
|
|
187
216
|
runtime.keychain.set_default_org(org_name)
|
|
@@ -273,6 +302,7 @@ def org_info(runtime, org_name, print_json):
|
|
|
273
302
|
ui_key_set = {
|
|
274
303
|
"config_file",
|
|
275
304
|
"config_name",
|
|
305
|
+
"connected_app",
|
|
276
306
|
"created",
|
|
277
307
|
"date_created",
|
|
278
308
|
"days",
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import json
|
|
2
1
|
import os
|
|
3
2
|
from pathlib import Path
|
|
4
3
|
from typing import Callable, Optional
|
|
@@ -35,7 +34,7 @@ def service_list(runtime, plain, print_json):
|
|
|
35
34
|
|
|
36
35
|
console = Console()
|
|
37
36
|
if print_json:
|
|
38
|
-
console.
|
|
37
|
+
console.print_json(data=services)
|
|
39
38
|
return None
|
|
40
39
|
|
|
41
40
|
configured_services = runtime.keychain.list_services()
|
|
@@ -84,17 +83,43 @@ class ConnectServiceCommand(click.MultiCommand):
|
|
|
84
83
|
return sorted(services.keys())
|
|
85
84
|
|
|
86
85
|
def _build_param(self, attribute: str, details: dict) -> click.Option:
|
|
87
|
-
|
|
86
|
+
required = details.get("required", False)
|
|
88
87
|
default_factory: Optional[Callable] = self._get_callable_default(
|
|
89
88
|
details.get("default_factory")
|
|
90
89
|
)
|
|
91
|
-
|
|
90
|
+
default = details.get("default")
|
|
91
|
+
if default is not None:
|
|
92
|
+
# This gives the user a chance to change the default
|
|
93
|
+
# (but only if they didn't specify it as a command line option)
|
|
94
|
+
default_factory = lambda: default # noqa
|
|
95
|
+
prompt = True
|
|
96
|
+
# Since there's a default value,
|
|
97
|
+
# we don't need to indicate this option as required in help,
|
|
98
|
+
required = False
|
|
99
|
+
elif default_factory:
|
|
100
|
+
# If there's a function to calculate the default,
|
|
101
|
+
# we'll call it instead of prompting the user.
|
|
102
|
+
# This provides a hook for collecting the value in other ways,
|
|
103
|
+
# such as via an oauth flow.
|
|
104
|
+
prompt = None
|
|
105
|
+
else:
|
|
106
|
+
# If there's no default, we prompt the user only if the option is required.
|
|
107
|
+
prompt = required
|
|
108
|
+
|
|
109
|
+
# Make sure the description is included in the prompt
|
|
110
|
+
description = details.get("description")
|
|
111
|
+
if prompt:
|
|
112
|
+
prompt = attribute
|
|
113
|
+
if description:
|
|
114
|
+
prompt += f" ({description})"
|
|
92
115
|
|
|
93
116
|
kwargs = {
|
|
94
117
|
"prompt": prompt,
|
|
95
|
-
"required":
|
|
96
|
-
"help":
|
|
118
|
+
"required": required,
|
|
119
|
+
"help": description,
|
|
97
120
|
"default": default_factory,
|
|
121
|
+
# If there is a preset default, this causes it to be shown in help.
|
|
122
|
+
"show_default": default,
|
|
98
123
|
}
|
|
99
124
|
return click.Option((f"--{attribute}",), **kwargs)
|
|
100
125
|
|
|
@@ -138,7 +163,7 @@ class ConnectServiceCommand(click.MultiCommand):
|
|
|
138
163
|
f"Sorry, I don't know about the '{service_type}' service."
|
|
139
164
|
)
|
|
140
165
|
|
|
141
|
-
attributes = service_config
|
|
166
|
+
attributes = service_config.get("attributes", {}).items()
|
|
142
167
|
params = [self._build_param(attr, cnfg) for attr, cnfg in attributes]
|
|
143
168
|
params.extend(self._get_default_options(runtime))
|
|
144
169
|
|
|
@@ -114,6 +114,7 @@ def test_main__cci_show_stacktraces(
|
|
|
114
114
|
init_logger,
|
|
115
115
|
get_tempfile_logger,
|
|
116
116
|
tee,
|
|
117
|
+
capsys,
|
|
117
118
|
):
|
|
118
119
|
runtime = mock.Mock()
|
|
119
120
|
runtime.universal_config.cli__show_stacktraces = True
|
|
@@ -121,7 +122,7 @@ def test_main__cci_show_stacktraces(
|
|
|
121
122
|
cli.side_effect = Exception
|
|
122
123
|
get_tempfile_logger.return_value = (mock.Mock(), "tempfile.log")
|
|
123
124
|
|
|
124
|
-
with pytest.raises(
|
|
125
|
+
with pytest.raises(SystemExit):
|
|
125
126
|
cci.main(["cci"])
|
|
126
127
|
|
|
127
128
|
check_latest_version.assert_called_once()
|
|
@@ -129,6 +130,8 @@ def test_main__cci_show_stacktraces(
|
|
|
129
130
|
CliRuntime.assert_called_once()
|
|
130
131
|
cli.assert_called_once()
|
|
131
132
|
post_mortem.assert_not_called()
|
|
133
|
+
captured = capsys.readouterr()
|
|
134
|
+
assert "Traceback (most recent call last)" in captured.err
|
|
132
135
|
|
|
133
136
|
|
|
134
137
|
@mock.patch("cumulusci.cli.cci.tee_stdout_stderr")
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import io
|
|
2
2
|
import json
|
|
3
|
-
from contextlib import contextmanager
|
|
4
3
|
from datetime import date, datetime, timedelta
|
|
5
4
|
from pathlib import Path
|
|
6
5
|
from unittest import mock
|
|
@@ -9,16 +8,22 @@ import click
|
|
|
9
8
|
import pytest
|
|
10
9
|
import responses
|
|
11
10
|
|
|
12
|
-
from cumulusci.
|
|
13
|
-
|
|
11
|
+
from cumulusci.core.config import (
|
|
12
|
+
BaseProjectConfig,
|
|
13
|
+
OrgConfig,
|
|
14
|
+
ScratchOrgConfig,
|
|
15
|
+
ServiceConfig,
|
|
16
|
+
UniversalConfig,
|
|
17
|
+
)
|
|
14
18
|
from cumulusci.core.exceptions import (
|
|
15
19
|
OrgNotFound,
|
|
16
20
|
ScratchOrgException,
|
|
17
21
|
ServiceNotConfigured,
|
|
18
22
|
)
|
|
23
|
+
from cumulusci.core.keychain import BaseProjectKeychain
|
|
19
24
|
|
|
20
25
|
from .. import org
|
|
21
|
-
from .utils import run_click_command
|
|
26
|
+
from .utils import run_cli_command, run_click_command
|
|
22
27
|
|
|
23
28
|
|
|
24
29
|
class TestOrgCommands:
|
|
@@ -81,22 +86,17 @@ class TestOrgCommands:
|
|
|
81
86
|
click_echo.assert_called_once_with(start_url)
|
|
82
87
|
org_config.save.assert_called_once_with()
|
|
83
88
|
|
|
84
|
-
@mock.patch("cumulusci.
|
|
89
|
+
@mock.patch("cumulusci.oauth.client.OAuth2Client.auth_code_flow")
|
|
85
90
|
@responses.activate
|
|
86
|
-
def test_org_connect(self,
|
|
87
|
-
|
|
88
|
-
client_instance.auth_code_flow.return_value = {
|
|
91
|
+
def test_org_connect(self, auth_code_flow):
|
|
92
|
+
auth_code_flow.return_value = {
|
|
89
93
|
"instance_url": "https://instance",
|
|
90
94
|
"access_token": "BOGUS",
|
|
91
95
|
"id": "OODxxxxxxxxxxxx/user",
|
|
92
96
|
}
|
|
93
|
-
oauth2client.return_value = client_instance
|
|
94
97
|
runtime = mock.Mock()
|
|
95
|
-
runtime.
|
|
96
|
-
|
|
97
|
-
client_secret="asdfasdf",
|
|
98
|
-
callback_url="http://localhost:8080/callback",
|
|
99
|
-
)
|
|
98
|
+
runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
|
|
99
|
+
runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
|
|
100
100
|
responses.add(
|
|
101
101
|
method="GET",
|
|
102
102
|
url="https://instance/services/oauth2/userinfo",
|
|
@@ -116,37 +116,70 @@ class TestOrgCommands:
|
|
|
116
116
|
status=200,
|
|
117
117
|
)
|
|
118
118
|
responses.add("GET", "https://instance/services/data", json=[{"version": 45.0}])
|
|
119
|
-
run_click_command(
|
|
120
|
-
org.org_connect,
|
|
121
|
-
runtime=runtime,
|
|
122
|
-
org_name="test",
|
|
123
|
-
sandbox=False,
|
|
124
|
-
login_url=None,
|
|
125
|
-
default=True,
|
|
126
|
-
global_org=False,
|
|
127
|
-
)
|
|
128
119
|
|
|
129
|
-
runtime
|
|
130
|
-
|
|
131
|
-
org_config = runtime.keychain.
|
|
120
|
+
result = run_cli_command("org", "connect", "test", "--default", runtime=runtime)
|
|
121
|
+
|
|
122
|
+
name, org_config = runtime.keychain.get_default_org()
|
|
123
|
+
assert name == "test"
|
|
124
|
+
assert org_config.id == "OODxxxxxxxxxxxx/user"
|
|
125
|
+
assert org_config.connected_app == "built-in"
|
|
132
126
|
assert org_config.expires == "Persistent"
|
|
133
|
-
|
|
127
|
+
assert "Connecting org using the built-in connected app..." in result.output
|
|
128
|
+
assert "test is now the default org" in result.output
|
|
134
129
|
|
|
135
|
-
@
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
"
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
)
|
|
145
|
-
|
|
130
|
+
@mock.patch("cumulusci.oauth.client.OAuth2Client.auth_code_flow")
|
|
131
|
+
@responses.activate
|
|
132
|
+
def test_org_connect__non_default_connected_app(self, auth_code_flow):
|
|
133
|
+
auth_code_flow.return_value = {
|
|
134
|
+
"instance_url": "https://instance",
|
|
135
|
+
"access_token": "BOGUS",
|
|
136
|
+
"id": "OODxxxxxxxxxxxx/user",
|
|
137
|
+
}
|
|
138
|
+
runtime = mock.Mock()
|
|
139
|
+
runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
|
|
140
|
+
runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
|
|
141
|
+
runtime.keychain.set_service(
|
|
142
|
+
"connected_app",
|
|
143
|
+
"other",
|
|
144
|
+
ServiceConfig(
|
|
145
|
+
{
|
|
146
|
+
"login_url": "https://other",
|
|
147
|
+
"callback_url": "http://localhost:8080/callback",
|
|
148
|
+
"client_id": "ID",
|
|
149
|
+
"client_secret": "SECRET",
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
)
|
|
153
|
+
responses.add(
|
|
154
|
+
method="GET",
|
|
155
|
+
url="https://instance/services/oauth2/userinfo",
|
|
156
|
+
body=b"{}",
|
|
157
|
+
status=200,
|
|
158
|
+
)
|
|
159
|
+
responses.add(
|
|
160
|
+
method="GET",
|
|
161
|
+
url="https://instance/services/data/v45.0/sobjects/Organization/OODxxxxxxxxxxxx",
|
|
162
|
+
json={
|
|
163
|
+
"TrialExpirationDate": None,
|
|
164
|
+
"OrganizationType": "Developer Edition",
|
|
165
|
+
"IsSandbox": False,
|
|
166
|
+
"InstanceName": "CS420",
|
|
167
|
+
"NamespacePrefix": None,
|
|
168
|
+
},
|
|
169
|
+
status=200,
|
|
170
|
+
)
|
|
171
|
+
responses.add("GET", "https://instance/services/data", json=[{"version": 45.0}])
|
|
172
|
+
|
|
173
|
+
result = run_cli_command(
|
|
174
|
+
"org", "connect", "test", "--connected_app", "other", runtime=runtime
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
org_config = runtime.keychain.get_org("test")
|
|
178
|
+
assert org_config.connected_app == "other"
|
|
179
|
+
assert "Connecting org using the other connected app..." in result.output
|
|
146
180
|
|
|
147
181
|
@mock.patch("cumulusci.cli.org.connect_org_to_keychain")
|
|
148
|
-
|
|
149
|
-
def test_org_connect__sandbox(self, cli_runtime, connect_to_keychain):
|
|
182
|
+
def test_org_connect__sandbox(self, connect_to_keychain):
|
|
150
183
|
mocked_connected_app = mock.Mock()
|
|
151
184
|
mocked_connected_app.client_id = "foo"
|
|
152
185
|
mocked_connected_app.client_secret = "bar"
|
|
@@ -155,30 +188,19 @@ class TestOrgCommands:
|
|
|
155
188
|
runtime = mock.Mock()
|
|
156
189
|
runtime.keychain.get_service.return_value = mocked_connected_app
|
|
157
190
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
with self.mock_main_context():
|
|
161
|
-
cci.main(["cci", "org", "connect", "blah", "--sandbox"])
|
|
191
|
+
run_cli_command("org", "connect", "blah", "--sandbox", runtime=runtime)
|
|
162
192
|
|
|
163
193
|
actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
|
|
164
194
|
assert actual_client_config.auth_uri.startswith("https://test.salesforce.com/")
|
|
165
195
|
assert actual_client_config.token_uri.startswith("https://test.salesforce.com/")
|
|
166
196
|
|
|
167
197
|
@mock.patch("cumulusci.cli.org.connect_org_to_keychain")
|
|
168
|
-
|
|
169
|
-
def test_org_connect__prod_default(self, cli_runtime, connect_to_keychain):
|
|
170
|
-
mocked_connected_app = mock.Mock()
|
|
171
|
-
mocked_connected_app.client_id = "foo"
|
|
172
|
-
mocked_connected_app.client_secret = "bar"
|
|
173
|
-
mocked_connected_app.callback_url = "https://foo.bar.baz/"
|
|
174
|
-
|
|
198
|
+
def test_org_connect__prod_default(self, connect_to_keychain):
|
|
175
199
|
runtime = mock.Mock()
|
|
176
|
-
runtime.
|
|
177
|
-
|
|
178
|
-
cli_runtime.return_value = runtime
|
|
200
|
+
runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
|
|
201
|
+
runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
|
|
179
202
|
|
|
180
|
-
|
|
181
|
-
cci.main(["cci", "org", "connect", "blah"])
|
|
203
|
+
run_cli_command("org", "connect", "blah", runtime=runtime)
|
|
182
204
|
|
|
183
205
|
actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
|
|
184
206
|
assert actual_client_config.auth_uri.startswith("https://login.salesforce.com/")
|
|
@@ -186,6 +208,59 @@ class TestOrgCommands:
|
|
|
186
208
|
"https://login.salesforce.com/"
|
|
187
209
|
)
|
|
188
210
|
|
|
211
|
+
@mock.patch("cumulusci.cli.org.connect_org_to_keychain")
|
|
212
|
+
def test_org_connect__other_connected_app_login_url(self, connect_to_keychain):
|
|
213
|
+
runtime = mock.Mock()
|
|
214
|
+
runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
|
|
215
|
+
runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
|
|
216
|
+
runtime.keychain.set_service(
|
|
217
|
+
"connected_app",
|
|
218
|
+
"other",
|
|
219
|
+
ServiceConfig(
|
|
220
|
+
{
|
|
221
|
+
"client_id": "foo",
|
|
222
|
+
"client_secret": "bar",
|
|
223
|
+
"callback_url": "https://foo.bar.baz/",
|
|
224
|
+
"login_url": "https://other",
|
|
225
|
+
}
|
|
226
|
+
),
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
run_cli_command(
|
|
230
|
+
"org", "connect", "blah", "--connected-app", "other", runtime=runtime
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
|
|
234
|
+
assert actual_client_config.auth_uri.startswith("https://other/")
|
|
235
|
+
assert actual_client_config.token_uri.startswith("https://other/")
|
|
236
|
+
|
|
237
|
+
@mock.patch("cumulusci.cli.org.connect_org_to_keychain")
|
|
238
|
+
def test_org_connect__login_url_from_cli_option(self, connect_to_keychain):
|
|
239
|
+
runtime = mock.Mock()
|
|
240
|
+
runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
|
|
241
|
+
runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
|
|
242
|
+
|
|
243
|
+
run_cli_command(
|
|
244
|
+
"org", "connect", "blah", "--login-url", "https://custom", runtime=runtime
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
actual_client_config = connect_to_keychain.call_args_list[0][0][0].client_config
|
|
248
|
+
assert actual_client_config.auth_uri.startswith("https://custom/")
|
|
249
|
+
assert actual_client_config.token_uri.startswith("https://custom/")
|
|
250
|
+
|
|
251
|
+
def test_org_connect__bad_connected_app_name(self):
|
|
252
|
+
runtime = mock.Mock()
|
|
253
|
+
runtime.project_config = BaseProjectConfig(UniversalConfig(), config={})
|
|
254
|
+
runtime.keychain = BaseProjectKeychain(runtime.project_config, None)
|
|
255
|
+
|
|
256
|
+
with pytest.raises(
|
|
257
|
+
ServiceNotConfigured,
|
|
258
|
+
match="No service of type connected_app configured with name: bogus",
|
|
259
|
+
):
|
|
260
|
+
run_cli_command(
|
|
261
|
+
"org", "connect", "blah", "--connected-app", "bogus", runtime=runtime
|
|
262
|
+
)
|
|
263
|
+
|
|
189
264
|
@mock.patch("cumulusci.cli.org.OAuth2Client")
|
|
190
265
|
@responses.activate
|
|
191
266
|
def test_org_connect_expires(self, oauth2client):
|
|
@@ -370,7 +445,12 @@ class TestOrgCommands:
|
|
|
370
445
|
|
|
371
446
|
def test_org_info(self):
|
|
372
447
|
org_config = mock.Mock()
|
|
373
|
-
org_config.config = {
|
|
448
|
+
org_config.config = {
|
|
449
|
+
"days": 1,
|
|
450
|
+
"default": True,
|
|
451
|
+
"password": None,
|
|
452
|
+
"connected_app": "built-in",
|
|
453
|
+
}
|
|
374
454
|
org_config.expires = date.today()
|
|
375
455
|
org_config.latest_api_version = "42.0"
|
|
376
456
|
runtime = mock.Mock()
|
|
@@ -384,6 +464,7 @@ class TestOrgCommands:
|
|
|
384
464
|
[
|
|
385
465
|
["Org: test", ""],
|
|
386
466
|
["\x1b[1mapi_version\x1b[0m", "42.0"],
|
|
467
|
+
["\x1b[1mconnected_app\x1b[0m", "built-in"],
|
|
387
468
|
["\x1b[1mdays\x1b[0m", "1"],
|
|
388
469
|
["\x1b[1mdefault\x1b[0m", "True"],
|
|
389
470
|
["\x1b[1mpassword\x1b[0m", "None"],
|