<s> import copy <EOL> import uuid <EOL> from oslo_serialization import jsonutils <EOL> from requests_mock . contrib import fixture <EOL> import six <EOL> import testtools <EOL> import barbicanclient . barbican <EOL> BASE_HOST = '<STR_LIT>' <EOL> BASE_URL = "<STR_LIT>" % BASE_HOST <EOL> UPDATED = '<STR_LIT>' <EOL> V2_URL = "<STR_LIT>" % BASE_URL <EOL> V2_DESCRIBED_BY_HTML = { '<STR_LIT>' : '<STR_LIT>' <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } <EOL> V2_DESCRIBED_BY_PDF = { '<STR_LIT>' : '<STR_LIT>' <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } <EOL> V2_VERSION = { '<STR_LIT:id>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ { '<STR_LIT>' : V2_URL , '<STR_LIT>' : '<STR_LIT>' } , <EOL> V2_DESCRIBED_BY_HTML , V2_DESCRIBED_BY_PDF ] , <EOL> '<STR_LIT:status>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : UPDATED } <EOL> V3_URL = "<STR_LIT>" % BASE_URL <EOL> V3_MEDIA_TYPES = [ { '<STR_LIT>' : '<STR_LIT:application/json>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } , <EOL> { '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } ] <EOL> V3_VERSION = { '<STR_LIT:id>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ { '<STR_LIT>' : V3_URL , '<STR_LIT>' : '<STR_LIT>' } ] , <EOL> '<STR_LIT>' : V3_MEDIA_TYPES , <EOL> '<STR_LIT:status>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : UPDATED } <EOL> def _create_version_list ( versions ) : <EOL> return jsonutils . dumps ( { '<STR_LIT>' : { '<STR_LIT>' : versions } } ) <EOL> def _create_single_version ( version ) : <EOL> return jsonutils . dumps ( { '<STR_LIT:version>' : version } ) <EOL> V3_VERSION_LIST = _create_version_list ( [ V3_VERSION , V2_VERSION ] ) <EOL> V2_VERSION_LIST = _create_version_list ( [ V2_VERSION ] ) <EOL> V3_VERSION_ENTRY = _create_single_version ( V3_VERSION ) <EOL> V2_VERSION_ENTRY = _create_single_version ( V2_VERSION ) <EOL> BARBICAN_ENDPOINT = '<STR_LIT>' <EOL> def _get_normalized_token_data ( ** kwargs ) : <EOL> ref = copy . deepcopy ( kwargs ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , uuid . uuid4 ( ) . hex ) <EOL> ref [ '<STR_LIT:username>' ] = ref . get ( '<STR_LIT:username>' , uuid . uuid4 ( ) . hex ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , <EOL> ref . get ( '<STR_LIT>' , uuid . uuid4 ( ) . hex ) ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , <EOL> ref . get ( '<STR_LIT>' , uuid . uuid4 ( ) . hex ) ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , uuid . uuid4 ( ) . hex ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , uuid . uuid4 ( ) . hex ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , uuid . uuid4 ( ) . hex ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , <EOL> uuid . uuid4 ( ) . hex ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , [ { '<STR_LIT:name>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex } ] ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , [ ] ) <EOL> ref [ '<STR_LIT>' ] = ref . get ( '<STR_LIT>' , BARBICAN_ENDPOINT ) <EOL> return ref <EOL> def generate_v2_project_scoped_token ( ** kwargs ) : <EOL> """<STR_LIT>""" <EOL> ref = _get_normalized_token_data ( ** kwargs ) <EOL> o = { '<STR_LIT>' : { '<STR_LIT>' : { '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT>' : True , <EOL> '<STR_LIT:id>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:name>' : ref . get ( '<STR_LIT>' ) <EOL> } <EOL> } , <EOL> '<STR_LIT:user>' : { '<STR_LIT:id>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:name>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT:username>' : ref . get ( '<STR_LIT:username>' ) , <EOL> '<STR_LIT>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ref . get ( '<STR_LIT>' ) <EOL> } <EOL> } } <EOL> o [ '<STR_LIT>' ] [ '<STR_LIT>' ] = [ <EOL> { '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } ] , <EOL> '<STR_LIT>' : [ ] , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } , <EOL> { '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } ] , <EOL> '<STR_LIT>' : [ ] , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } ] <EOL> return o <EOL> def generate_v3_project_scoped_token ( ** kwargs ) : <EOL> """<STR_LIT>""" <EOL> ref = _get_normalized_token_data ( ** kwargs ) <EOL> o = { '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:password>' ] , <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:name>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:name>' : ref . get ( <EOL> '<STR_LIT>' ) <EOL> } <EOL> } , <EOL> '<STR_LIT:user>' : { '<STR_LIT:id>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:name>' : ref . get ( '<STR_LIT:username>' ) , <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : ref . get ( '<STR_LIT>' ) , <EOL> '<STR_LIT:name>' : ref . get ( '<STR_LIT>' ) <EOL> } <EOL> } , <EOL> '<STR_LIT>' : ref . get ( '<STR_LIT>' ) <EOL> } } <EOL> o [ '<STR_LIT>' ] [ '<STR_LIT>' ] = [ <EOL> { '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:url>' : ref . get ( '<STR_LIT>' ) <EOL> } ] , <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } , <EOL> { '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:url>' : ref . get ( '<STR_LIT>' ) <EOL> } , <EOL> { <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:url>' : ref . get ( '<STR_LIT>' ) <EOL> } ] , <EOL> '<STR_LIT:id>' : uuid . uuid4 ( ) . hex , <EOL> '<STR_LIT:type>' : '<STR_LIT>' } ] <EOL> token_id = uuid . uuid4 ( ) . hex <EOL> return token_id , o <EOL> class KeystoneClientFixture ( testtools . TestCase ) : <EOL> def setUp ( self ) : <EOL> super ( KeystoneClientFixture , self ) . setUp ( ) <EOL> self . responses = self . useFixture ( fixture . Fixture ( ) ) <EOL> self . barbican = barbicanclient . barbican . Barbican ( ) <EOL> self . test_arguments = { } <EOL> def get_arguments ( self , auth_version = '<STR_LIT>' ) : <EOL> if auth_version . lower ( ) == '<STR_LIT>' : <EOL> version_specific = { <EOL> '<STR_LIT>' : V3_URL , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> else : <EOL> version_specific = { <EOL> '<STR_LIT>' : V2_URL , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> self . test_arguments . update ( version_specific ) <EOL> return self . _to_argv ( self . test_arguments ) <EOL> def _to_argv ( self , argument_dict ) : <EOL> argv = [ ] <EOL> for k , v in six . iteritems ( argument_dict ) : <EOL> argv . extend ( [ k , v ] ) <EOL> return argv <EOL> def _delete_secret ( self , auth_version ) : <EOL> ref = '<STR_LIT>' . format ( BARBICAN_ENDPOINT , uuid . uuid4 ( ) ) <EOL> self . responses . delete ( ref , status_code = <NUM_LIT> ) <EOL> argv = self . get_arguments ( auth_version ) <EOL> argv . extend ( [ '<STR_LIT>' , BARBICAN_ENDPOINT , '<STR_LIT>' , '<STR_LIT>' , ref ] ) <EOL> try : <EOL> self . barbican . run ( argv = argv ) <EOL> except : <EOL> self . fail ( '<STR_LIT>' ) <EOL> def test_v2_auth ( self ) : <EOL> self . responses . get ( V2_URL , body = V2_VERSION_ENTRY ) <EOL> self . responses . post ( <EOL> '<STR_LIT>' . format ( V2_URL ) , <EOL> json = generate_v2_project_scoped_token ( ) <EOL> ) <EOL> self . _delete_secret ( '<STR_LIT>' ) <EOL> def test_v3_auth ( self ) : <EOL> self . responses . get ( V3_URL , text = V3_VERSION_ENTRY ) <EOL> id , v3_token = generate_v3_project_scoped_token ( ) <EOL> self . responses . post ( <EOL> '<STR_LIT>' . format ( V3_URL ) , <EOL> json = v3_token , <EOL> headers = { '<STR_LIT>' : '<STR_LIT>' } <EOL> ) <EOL> self . _delete_secret ( '<STR_LIT>' ) </s>
