# -*- coding: utf-8 -*-
# Import pytohn libs
from __future__ import absolute_import
# Import Salt testing libs
from salttesting.unit import skipIf, TestCase
from salttesting.mock import NO_MOCK, NO_MOCK_REASON, MagicMock
from salttesting.helpers import ensure_in_syspath
ensure_in_syspath('../../')
# Import Salt libs
from salt.modules import artifactory
# Import 3rd-party libs
import salt.ext.six as six
@skipIf(NO_MOCK, NO_MOCK_REASON)
class ArtifactoryTestCase(TestCase):
org_module_functions = {}
def __save_module_functions(self):
for name, val in six.iteritems(artifactory.__dict__):
if callable(val):
self.org_module_functions[name] = val
def __restore_module_functions(self):
for name, val in six.iteritems(self.org_module_functions):
artifactory.__dict__[name] = val
def setUp(self):
self.__save_module_functions()
def tearDown(self):
self.__restore_module_functions()
def test_artifact_get_metadata(self):
artifactory._get_artifact_metadata_xml = MagicMock(return_value='''
com.company.sampleapp.web-module
web
1.1_RC11
1.0.1
1.0_RC20
1.0_RC22
20140623120632
''')
metadata = artifactory._get_artifact_metadata(artifactory_url='http://artifactory.example.com/artifactory',
repository='libs-releases',
group_id='com.company.sampleapp.web-module',
artifact_id='web',
headers={})
self.assertEqual(metadata['latest_version'], '1.1_RC11')
def test_snapshot_version_get_metadata(self):
artifactory._get_snapshot_version_metadata_xml = MagicMock(return_value='''
com.company.sampleapp.web-module
web
1.1_RC8-SNAPSHOT
20140418.150212
1
20140623104055
pom
1.1_RC8-20140418.150212-1
20140418150212
war
1.1_RC8-20140418.150212-1
20140418150212
''')
metadata = artifactory._get_snapshot_version_metadata(artifactory_url='http://artifactory.example.com/artifactory',
repository='libs-releases',
group_id='com.company.sampleapp.web-module',
artifact_id='web',
version='1.1_RC8-SNAPSHOT',
headers={})
self.assertEqual(metadata['snapshot_versions']['war'], '1.1_RC8-20140418.150212-1')
def test_artifact_metadata_url(self):
metadata_url = artifactory._get_artifact_metadata_url(artifactory_url='http://artifactory.example.com/artifactory',
repository='libs-releases',
group_id='com.company.sampleapp.web-module',
artifact_id='web')
self.assertEqual(metadata_url, "http://artifactory.example.com/artifactory/libs-releases/com/company/sampleapp/web-module/web/maven-metadata.xml")
def test_snapshot_version_metadata_url(self):
metadata_url = artifactory._get_snapshot_version_metadata_url(artifactory_url='http://artifactory.example.com/artifactory',
repository='libs-snapshots',
group_id='com.company.sampleapp.web-module',
artifact_id='web',
version='1.0_RC10-SNAPSHOT')
self.assertEqual(metadata_url, "http://artifactory.example.com/artifactory/libs-snapshots/com/company/sampleapp/web-module/web/1.0_RC10-SNAPSHOT/maven-metadata.xml")
def test_construct_url_for_released_version(self):
artifact_url, file_name = artifactory._get_release_url(repository='libs-releases',
group_id='com.company.sampleapp.web-module',
artifact_id='web',
packaging='war',
artifactory_url='http://artifactory.example.com/artifactory',
version='1.0_RC20')
self.assertEqual(artifact_url, "http://artifactory.example.com/artifactory/libs-releases/com/company/sampleapp/web-module/web/1.0_RC20/web-1.0_RC20.war")
self.assertEqual(file_name, "web-1.0_RC20.war")
def test_construct_url_for_snapshot_version(self):
prev_artifactory_get_snapshot_version_metadata = artifactory._get_snapshot_version_metadata
artifactory._get_snapshot_version_metadata = MagicMock(return_value={'snapshot_versions': {'war': '1.0_RC10-20131127.105838-2'}})
artifact_url, file_name = artifactory._get_snapshot_url(artifactory_url='http://artifactory.example.com/artifactory',
repository='libs-snapshots',
group_id='com.company.sampleapp.web-module',
artifact_id='web',
version='1.0_RC10-SNAPSHOT',
packaging='war',
headers={})
self.assertEqual(artifact_url, "http://artifactory.example.com/artifactory/libs-snapshots/com/company/sampleapp/web-module/web/1.0_RC10-SNAPSHOT/web-1.0_RC10-20131127.105838-2.war")
self.assertEqual(file_name, "web-1.0_RC10-20131127.105838-2.war")