<s> import httplib <EOL> import six <EOL> from st2common . persistence . auth import User <EOL> from st2common . models . db . auth import UserDB <EOL> from st2tests . fixturesloader import FixturesLoader <EOL> from tests . base import APIControllerWithRBACTestCase <EOL> http_client = six . moves . http_client <EOL> __all__ = [ <EOL> '<STR_LIT>' <EOL> ] <EOL> FIXTURES_PACK = '<STR_LIT>' <EOL> TEST_FIXTURES = { <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] <EOL> } <EOL> MOCK_ACTION_1 = { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:c>' : { '<STR_LIT:type>' : '<STR_LIT:string>' , '<STR_LIT:default>' : '<STR_LIT>' , '<STR_LIT>' : <NUM_LIT:0> } , <EOL> '<STR_LIT:d>' : { '<STR_LIT:type>' : '<STR_LIT:string>' , '<STR_LIT:default>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } <EOL> } <EOL> MOCK_ACTION_ALIAS_1 = { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:a>' , '<STR_LIT:b>' ] <EOL> } <EOL> MOCK_RULE_1 = { <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' <EOL> } <EOL> } , <EOL> '<STR_LIT:action>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } , <EOL> '<STR_LIT:description>' : '<STR_LIT>' <EOL> } <EOL> class APIControllersRBACTestCase ( APIControllerWithRBACTestCase ) : <EOL> """<STR_LIT>""" <EOL> register_packs = True <EOL> fixtures_loader = FixturesLoader ( ) <EOL> def setUp ( self ) : <EOL> super ( APIControllersRBACTestCase , self ) . setUp ( ) <EOL> if self . register_packs : <EOL> self . _register_packs ( ) <EOL> self . users = { } <EOL> user_1_db = UserDB ( name = '<STR_LIT>' ) <EOL> user_1_db = User . add_or_update ( user_1_db ) <EOL> self . users [ '<STR_LIT>' ] = user_1_db <EOL> self . models = self . fixtures_loader . save_fixtures_to_db ( fixtures_pack = FIXTURES_PACK , <EOL> fixtures_dict = TEST_FIXTURES ) <EOL> def test_api_endpoints_behind_rbac_wall ( self ) : <EOL> sensor_model = self . models [ '<STR_LIT>' ] [ '<STR_LIT>' ] <EOL> rule_model = self . models [ '<STR_LIT>' ] [ '<STR_LIT>' ] <EOL> enforcement_model = self . models [ '<STR_LIT>' ] [ '<STR_LIT>' ] <EOL> execution_model = self . models [ '<STR_LIT>' ] [ '<STR_LIT>' ] <EOL> supported_endpoints = [ <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( sensor_model . ref ) , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( sensor_model . ref ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT>' : False } <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:POST>' , <EOL> '<STR_LIT>' : MOCK_ACTION_1 <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : MOCK_ACTION_1 <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:POST>' , <EOL> '<STR_LIT>' : MOCK_ACTION_ALIAS_1 <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : MOCK_ACTION_ALIAS_1 <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( rule_model . ref ) , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:POST>' , <EOL> '<STR_LIT>' : MOCK_RULE_1 <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( rule_model . ref ) , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT>' : False } <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( rule_model . ref ) , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( enforcement_model . id ) , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( execution_model . id ) , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:POST>' , <EOL> '<STR_LIT>' : { '<STR_LIT:action>' : '<STR_LIT>' } <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( execution_model . id ) , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( execution_model . id ) , <EOL> '<STR_LIT>' : '<STR_LIT:POST>' , <EOL> '<STR_LIT>' : { '<STR_LIT>' : { } } <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( execution_model . id ) , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' % ( execution_model . id ) , <EOL> '<STR_LIT>' : '<STR_LIT:GET>' <EOL> } , <EOL> { <EOL> '<STR_LIT:path>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:POST>' , <EOL> '<STR_LIT>' : { '<STR_LIT:name>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:user>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT:bar>' } <EOL> } <EOL> ] <EOL> self . use_user ( self . users [ '<STR_LIT>' ] ) <EOL> for endpoint in supported_endpoints : <EOL> response = self . _perform_request_for_endpoint ( endpoint = endpoint ) <EOL> msg = '<STR_LIT>' % ( endpoint [ '<STR_LIT>' ] , <EOL> endpoint [ '<STR_LIT:path>' ] , <EOL> response . body ) <EOL> self . assertEqual ( response . status_code , httplib . FORBIDDEN , msg ) <EOL> def test_icon_png_file_is_whitelisted ( self ) : <EOL> self . use_user ( self . users [ '<STR_LIT>' ] ) <EOL> from st2api . controllers . v1 . packviews import FileController <EOL> FileController . get_one . _pecan [ '<STR_LIT>' ] = { '<STR_LIT>' : None } <EOL> FileController . get_one . _pecan [ '<STR_LIT>' ] = True <EOL> response = self . app . get ( '<STR_LIT>' ) <EOL> self . assertEqual ( response . status_code , httplib . OK ) <EOL> response = self . app . get ( '<STR_LIT>' , <EOL> expect_errors = True ) <EOL> self . assertEqual ( response . status_code , httplib . FORBIDDEN ) <EOL> def _perform_request_for_endpoint ( self , endpoint ) : <EOL> if endpoint [ '<STR_LIT>' ] == '<STR_LIT:GET>' : <EOL> response = self . app . get ( endpoint [ '<STR_LIT:path>' ] , expect_errors = True ) <EOL> elif endpoint [ '<STR_LIT>' ] == '<STR_LIT:POST>' : <EOL> return self . app . post_json ( endpoint [ '<STR_LIT:path>' ] , endpoint [ '<STR_LIT>' ] , expect_errors = True ) <EOL> elif endpoint [ '<STR_LIT>' ] == '<STR_LIT>' : <EOL> return self . app . put_json ( endpoint [ '<STR_LIT:path>' ] , endpoint [ '<STR_LIT>' ] , expect_errors = True ) <EOL> elif endpoint [ '<STR_LIT>' ] == '<STR_LIT>' : <EOL> return self . app . delete ( endpoint [ '<STR_LIT:path>' ] , expect_errors = True ) <EOL> else : <EOL> raise ValueError ( '<STR_LIT>' % ( endpoint [ '<STR_LIT>' ] ) ) <EOL> return response </s>
