Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a case to export/import entities with long names #14438

Merged
merged 1 commit into from
Mar 19, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions tests/foreman/cli/test_satellitesync.py
Original file line number Diff line number Diff line change
Expand Up @@ -1949,6 +1949,106 @@ def test_positive_export_incremental_syncable_check_content(
f'{repomd_refs - drive_files}'
)

@pytest.mark.tier3
def test_postive_export_import_with_long_name(
self,
target_sat,
config_export_import_settings,
export_import_cleanup_module,
module_org,
function_import_org,
):
"""Export and import content entities (product, repository, CV) with a long name.

:id: 66d676ab-4e06-446b-b893-e236b26d37d9

:steps:
1. Create product and repository with a long name, sync it.
2. Export the repository, import it and verify the prod and repo names match the export.
3. Verify the imported content matches the export.
4. Create CV with a long name, add the repo and publish.
5. Export the CV, import it and verify its name matches the export.
6. Verify the imported content matches the export.

:expectedresults:
1. Exports and imports should succeed without any errors and names
and content of imported entities should match the export.

:BZ: 2124275, 2053329

:customerscenario: true
"""
# Create product and repository with a long name, sync it.
product = target_sat.cli_factory.make_product(
{'name': gen_string('alpha', 128), 'organization-id': module_org.id}
)
repo = target_sat.cli_factory.make_repository(
{
'name': gen_string('alpha', 128),
'content-type': 'yum',
'download-policy': 'immediate',
'organization-id': module_org.id,
'product-id': product.id,
}
)
target_sat.cli.Repository.synchronize({'id': repo.id})
exported_packages = target_sat.cli.Package.list({'repository-id': repo.id})

# Export the repository, import it and verify the prod and repo names match the export.
export = target_sat.cli.ContentExport.completeRepository(
{'id': repo.id, 'organization-id': module_org.id}
)
import_path = target_sat.move_pulp_archive(module_org, export['message'])
target_sat.cli.ContentImport.repository(
{'organization-id': function_import_org.id, 'path': import_path}
)
import_repo = target_sat.cli.Repository.info(
{
'organization-id': function_import_org.id,
'name': repo.name,
'product': product.name,
}
)

# Verify the imported content matches the export.
imported_packages = target_sat.cli.Package.list({'repository-id': import_repo['id']})
assert imported_packages == exported_packages, 'Imported content does not match the export'

# Create CV with a long name, add the repo and publish.
exporting_cv = target_sat.cli_factory.make_content_view(
{'name': gen_string('alpha', 128), 'organization-id': module_org.id}
)
target_sat.cli.ContentView.add_repository(
{
'id': exporting_cv.id,
'organization-id': module_org.id,
'repository-id': repo.id,
}
)
target_sat.cli.ContentView.publish({'id': exporting_cv['id']})
exporting_cv = target_sat.cli.ContentView.info({'id': exporting_cv['id']})
assert len(exporting_cv['versions']) == 1
exporting_cvv_id = exporting_cv['versions'][0]['id']

# Export the CV, import it and verify its name matches the export.
export = target_sat.cli.ContentExport.completeVersion(
{'id': exporting_cvv_id, 'organization-id': module_org.id}
)
import_path = target_sat.move_pulp_archive(module_org, export['message'])
target_sat.cli.ContentImport.version(
{'organization-id': function_import_org.id, 'path': import_path}
)
importing_cv = target_sat.cli.ContentView.info(
{'name': exporting_cv['name'], 'organization-id': function_import_org.id}
)
assert len(importing_cv['versions']) == 1

# Verify the imported content matches the export.
imported_packages = target_sat.cli.Package.list(
{'content-view-version-id': importing_cv['versions'][0]['id']}
)
assert exported_packages == imported_packages


class TestInterSatelliteSync:
"""Implements InterSatellite Sync tests in CLI"""
Expand Down
Loading