Skip to content
Snippets Groups Projects
Verified Commit ad0c9dc3 authored by Peter Stanko's avatar Peter Stanko
Browse files

Integration test for storage

parent 29e4a9ab
No related branches found
No related tags found
No related merge requests found
Pipeline #
import shutil
from pathlib import Path from pathlib import Path
from typing import Union from typing import Union
import abc
from storage.utils.compress import compress_entity, decompress_entity from storage.utils.compress import compress_entity, decompress_entity
from storage.utils.update import entity_update from storage.utils.update import entity_update
from storage.inputs import filter_entity, git_clone from storage.inputs import filter_entity, git_clone
...@@ -42,7 +41,8 @@ class Entity(object): ...@@ -42,7 +41,8 @@ class Entity(object):
Returns(Path): Entity id Returns(Path): Entity id
""" """
return self.base_dir / self.entity_id full_path = self.base_dir / self.entity_id
return full_path
@property @property
def zip_path(self) -> Path: def zip_path(self) -> Path:
...@@ -77,6 +77,10 @@ class Entity(object): ...@@ -77,6 +77,10 @@ class Entity(object):
""" """
return decompress_entity(self) return decompress_entity(self)
def clean(self):
self.compress()
shutil.rmtree(self.files_path)
def update_subdir(self, source: Union[str, Path], subdir: str) -> Path: def update_subdir(self, source: Union[str, Path], subdir: str) -> Path:
"""Updates subdirectory of the entity with files """Updates subdirectory of the entity with files
Args: Args:
...@@ -198,9 +202,10 @@ class UploadedEntity(object): ...@@ -198,9 +202,10 @@ class UploadedEntity(object):
self.clean() self.clean()
return self.entity return self.entity
""" """
{ {
"id" : "UUID", "id" : "UUID",
"source":{ "source":{
"type":"git"/"zip" "type":"git"/"zip"
"path" : string OR "path" : string OR
...@@ -211,4 +216,3 @@ class UploadedEntity(object): ...@@ -211,4 +216,3 @@ class UploadedEntity(object):
"whitelist": "" "whitelist": ""
} }
""" """
...@@ -80,7 +80,6 @@ class AbstractStoragePart(object): ...@@ -80,7 +80,6 @@ class AbstractStoragePart(object):
) )
return to_instance return to_instance
def __instance(self, entity_id) -> Entity: def __instance(self, entity_id) -> Entity:
return self._entity_klass(entity_id=entity_id, base_dir=self.path) return self._entity_klass(entity_id=entity_id, base_dir=self.path)
......
import pytest
from pathlib import Path
from storage import Storage, Submission
@pytest.fixture
def workspace_dir(tmpdir):
return tmpdir.mkdir('workspace')
@pytest.fixture
def test_files_dir(tmpdir):
return tmpdir.mkdir('test_files')
@pytest.fixture()
def submissions_dir(tmpdir):
return tmpdir.mkdir('submissions')
@pytest.fixture
def git_config():
return dict(
type='git',
url='https://github.com/pestanko/example-repo',
branch='master'
)
@pytest.fixture
def storage_instance(test_files_dir, workspace_dir, submissions_dir) -> Storage:
storage_config = dict(
test_files_dir=test_files_dir,
workspace_dir=workspace_dir,
submissions_dir=submissions_dir
)
return Storage(config=storage_config)
@pytest.fixture
def submission_request(git_config):
return dict(
entity_id="11111111111111111111",
source=git_config,
whitelist="src/*"
)
@pytest.fixture
def submission(submission_request: dict, storage_instance: Storage):
return storage_instance.submissions.create(**submission_request)
def test_repo_will_be_cloned_successfully(submission: Submission, storage_instance: Storage):
assert submission.files_path.exists()
assert (submission.files_path / 'src').exists()
assert (submission.files_path / 'src/main.c').exists()
assert (submission.files_path / 'src/hello.c').exists()
def test_repo_will_be_ziped(submission: Submission, storage_instance: Storage):
assert submission.files_path.exists()
assert submission.compress()
assert submission.zip_path.exists()
submission.clean()
assert not submission.files_path.exists()
assert submission.decompress()
assert submission.files_path.exists()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment