misc: change create_bundle logic in tests (#86627)
This commit is contained in:
parent
370beb3a84
commit
741efc0e35
|
@ -217,17 +217,9 @@ def test_page_redirect(app, john_doe):
|
|||
app.get('/api/export-import/pages/%s/redirect/' % uuid.uuid4(), status=404)
|
||||
|
||||
|
||||
def create_bundle(app, john_doe, visible=True, version_number='42.0'):
|
||||
app.authorization = ('Basic', (john_doe.username, john_doe.username))
|
||||
|
||||
group, dummy = Group.objects.get_or_create(name='plop')
|
||||
|
||||
page, dummy = Page.objects.get_or_create(
|
||||
slug='test', defaults={'title': 'Test Page', 'template_name': 'standard'}
|
||||
)
|
||||
page.groups.set([group])
|
||||
page_export = app.get(f'/api/export-import/pages/{page.uuid}/').content
|
||||
|
||||
def create_bundle(elements, *args, **kwargs):
|
||||
visible = kwargs.get('visible', True)
|
||||
version_number = kwargs.get('version_number', '42.0')
|
||||
tar_io = io.BytesIO()
|
||||
with tarfile.open(mode='w', fileobj=tar_io) as tar:
|
||||
manifest_json = {
|
||||
|
@ -239,10 +231,7 @@ def create_bundle(app, john_doe, visible=True, version_number='42.0'):
|
|||
'visible': visible,
|
||||
'version_number': version_number,
|
||||
'version_notes': 'foo bar blah',
|
||||
'elements': [
|
||||
{'type': 'pages', 'slug': f'{page.uuid}', 'name': 'Test Page', 'auto-dependency': False},
|
||||
{'type': 'form', 'slug': 'xxx', 'name': 'Xxx'},
|
||||
],
|
||||
'elements': elements,
|
||||
}
|
||||
manifest_fd = io.BytesIO(json.dumps(manifest_json, indent=2).encode())
|
||||
tarinfo = tarfile.TarInfo('manifest.json')
|
||||
|
@ -256,16 +245,29 @@ def create_bundle(app, john_doe, visible=True, version_number='42.0'):
|
|||
tarinfo.size = len(icon_fd.getvalue())
|
||||
tar.addfile(tarinfo, fileobj=icon_fd)
|
||||
|
||||
tarinfo = tarfile.TarInfo(f'pages/{page.uuid}')
|
||||
tarinfo.size = len(page_export)
|
||||
tar.addfile(tarinfo, fileobj=io.BytesIO(page_export))
|
||||
bundle = tar_io.getvalue()
|
||||
return bundle
|
||||
for path, obj in args:
|
||||
tarinfo = tarfile.TarInfo(path)
|
||||
if not hasattr(obj, 'get_serialized_page'):
|
||||
continue
|
||||
export_fd = io.BytesIO(json.dumps({'data': obj.get_serialized_page()}).encode())
|
||||
tarinfo.size = len(export_fd.getvalue())
|
||||
tar.addfile(tarinfo, fileobj=export_fd)
|
||||
|
||||
return tar_io.getvalue()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def bundle(app, john_doe):
|
||||
return create_bundle(app, john_doe)
|
||||
page, dummy = Page.objects.get_or_create(
|
||||
slug='test', defaults={'title': 'Test Page', 'template_name': 'standard'}
|
||||
)
|
||||
return create_bundle(
|
||||
[
|
||||
{'type': 'pages', 'slug': f'{page.uuid}', 'name': 'Test Page', 'auto-dependency': False},
|
||||
{'type': 'form', 'slug': 'xxx', 'name': 'Xxx'},
|
||||
],
|
||||
(f'pages/{page.uuid}', page),
|
||||
)
|
||||
|
||||
|
||||
def test_bundle_import(app, john_doe):
|
||||
|
@ -274,7 +276,18 @@ def test_bundle_import(app, john_doe):
|
|||
|
||||
bundles = []
|
||||
for version_number in ['42.0', '42.1']:
|
||||
bundles.append(create_bundle(app, john_doe, version_number=version_number))
|
||||
page, dummy = Page.objects.get_or_create(
|
||||
slug='test', defaults={'title': 'Test Page', 'template_name': 'standard'}
|
||||
)
|
||||
bundle = create_bundle(
|
||||
[
|
||||
{'type': 'pages', 'slug': f'{page.uuid}', 'name': 'Test Page', 'auto-dependency': False},
|
||||
{'type': 'form', 'slug': 'xxx', 'name': 'Xxx'},
|
||||
],
|
||||
(f'pages/{page.uuid}', page),
|
||||
version_number=version_number,
|
||||
)
|
||||
bundles.append(bundle)
|
||||
|
||||
resp = app.put('/api/export-import/bundle-import/', bundles[0])
|
||||
assert Page.objects.all().count() == 1
|
||||
|
@ -339,7 +352,17 @@ def test_bundle_import(app, john_doe):
|
|||
def test_bundle_declare(app, john_doe):
|
||||
app.authorization = ('Basic', (john_doe.username, john_doe.username))
|
||||
|
||||
bundle = create_bundle(app, john_doe, visible=False)
|
||||
page, dummy = Page.objects.get_or_create(
|
||||
slug='test', defaults={'title': 'Test Page', 'template_name': 'standard'}
|
||||
)
|
||||
bundle = create_bundle(
|
||||
[
|
||||
{'type': 'pages', 'slug': f'{page.uuid}', 'name': 'Test Page', 'auto-dependency': False},
|
||||
{'type': 'form', 'slug': 'xxx', 'name': 'Xxx'},
|
||||
],
|
||||
(f'pages/{page.uuid}', page),
|
||||
visible=False,
|
||||
)
|
||||
resp = app.put('/api/export-import/bundle-declare/', bundle)
|
||||
job_url = resp.json['url']
|
||||
resp = app.get(job_url)
|
||||
|
@ -360,7 +383,17 @@ def test_bundle_declare(app, john_doe):
|
|||
assert application.visible is False
|
||||
assert ApplicationElement.objects.count() == 1
|
||||
|
||||
bundle = create_bundle(app, john_doe, visible=True)
|
||||
page, dummy = Page.objects.get_or_create(
|
||||
slug='test', defaults={'title': 'Test Page', 'template_name': 'standard'}
|
||||
)
|
||||
bundle = create_bundle(
|
||||
[
|
||||
{'type': 'pages', 'slug': f'{page.uuid}', 'name': 'Test Page', 'auto-dependency': False},
|
||||
{'type': 'form', 'slug': 'xxx', 'name': 'Xxx'},
|
||||
],
|
||||
(f'pages/{page.uuid}', page),
|
||||
visible=True,
|
||||
)
|
||||
# create link to element not present in manifest: it should be unlinked
|
||||
last_page = Page.objects.latest('pk')
|
||||
ApplicationElement.objects.create(
|
||||
|
@ -438,7 +471,18 @@ def test_bundle_check(app, john_doe):
|
|||
|
||||
bundles = []
|
||||
for version_number in ['1.0', '2.0']:
|
||||
bundles.append(create_bundle(app, john_doe, version_number=version_number))
|
||||
page, dummy = Page.objects.get_or_create(
|
||||
slug='test', defaults={'title': 'Test Page', 'template_name': 'standard'}
|
||||
)
|
||||
bundle = create_bundle(
|
||||
[
|
||||
{'type': 'pages', 'slug': f'{page.uuid}', 'name': 'Test Page', 'auto-dependency': False},
|
||||
{'type': 'form', 'slug': 'xxx', 'name': 'Xxx'},
|
||||
],
|
||||
(f'pages/{page.uuid}', page),
|
||||
version_number=version_number,
|
||||
)
|
||||
bundles.append(bundle)
|
||||
page_uuid = str(Page.objects.last().uuid)
|
||||
Page.objects.all().delete()
|
||||
PageSnapshot.objects.all().delete()
|
||||
|
|
Loading…
Reference in New Issue