from __future__ import absolute_import import pytest import plistlib import os from jss import JSSPrefs, JSS from xml.etree import ElementTree from subprocess import call import boto from boto.s3.connection import S3Connection from boto.s3.bucket import Bucket JSS_PREFS = { 'jss_url': 'https://localhost:8444', 'jss_user': 'admin', 'jss_password': 'P@ssw0rd', 'verify': False, 'suppress_warnings': False, 'repos': [], } JAMFCLOUD_PREFS = { 'jss_url': os.environ.get('JAMFCLOUD_URL'), 'jss_user': os.environ.get('JAMFCLOUD_USER'), 'jss_password': os.environ.get('JAMFCLOUD_PASSWORD'), 'verify': False, 'suppress_warnings': False, 'repos': [], } @pytest.fixture def jss_prefs_dict(): # type: () -> dict return JSS_PREFS @pytest.fixture def cloud_jss_prefs_dict(): # type: () -> dict return JAMFCLOUD_PREFS @pytest.fixture def jss_prefs_file(tmpdir): # type: (str) -> str prefs_path = tmpdir.join('com.github.sheagcraig.python-jss.plist') plistlib.writePlist(JSS_PREFS, prefs_path) return prefs_path @pytest.fixture def jss_prefs(jss_prefs_file): # type: (str) -> JSSPrefs prefs = JSSPrefs(preferences_file=jss_prefs_file) return prefs @pytest.fixture def j(jss_prefs_dict): # type: (dict) -> JSS o = JSS( url=jss_prefs_dict['jss_url'], user=jss_prefs_dict['jss_user'], password=jss_prefs_dict['jss_password'], ssl_verify=jss_prefs_dict['verify'], ) return o @pytest.fixture def cloud_j(cloud_jss_prefs_dict): # type: (dict) -> JSS o = JSS( url=cloud_jss_prefs_dict['jss_url'], user=cloud_jss_prefs_dict['jss_user'], password=cloud_jss_prefs_dict['jss_password'], ssl_verify=cloud_jss_prefs_dict['verify'], ) return o @pytest.fixture def package(): # type: () -> JSS.Package pass # def is_afp_responsive(afpurl): # """Check if something responds to ``url``.""" # pass def is_smb_responsive(smburl): """Check if something responds to ``url``.""" status = call(['/usr/bin/smbutil', 'view', smburl]) return status == 0 @pytest.fixture def dp_smb_ip_port(docker_ip, docker_services): docker_services.wait_until_responsive( timeout=30.0, pause=0.1, check=lambda: is_smb_responsive("//jss:jss@%s:%s" % (docker_ip, docker_services.port_for('samba', 139))) ) return docker_ip, docker_services.port_for('samba', 139) # @pytest.fixture # def dp_afp_url(docker_ip, docker_services): # afp_url = 'afp://%s:%s/distribution_point' % ( # docker_ip, # docker_services.port_for('afp', 549), # ) # docker_services.wait_until_responsive( # timeout=30.0, pause=0.1, # check=lambda: is_afp_responsive(afp_url) # ) # return afp_url @pytest.fixture def uapi_token(jss_prefs_dict, j): response = j.post('uapi/auth/tokens', data={}) json_data = response.json() @pytest.fixture def pkg_path(): return os.path.abspath("testdata/Microsoft_Outlook_2016_16.15.18070902_Installer.pkg") @pytest.fixture def s3_connection(): # calling_format is passed because i use a bucket with periods which normally raises a CertificateError # see: https://github.com/boto/boto/issues/2836 return boto.s3.connect_to_region('ap-southeast-2', calling_format=boto.s3.connection.OrdinaryCallingFormat()) #return S3Connection(calling_format=boto.s3.connection.OrdinaryCallingFormat()) @pytest.fixture def s3_bucket(s3_connection): # type: (S3Connection) -> Bucket return s3_connection.get_bucket('python-jss-pytest')