def sanitize_tokens(interaction, current_cassette): if interaction.data['response']['status']['code'] != 200: return try: response_body = interaction.data['response']['body']['string'] json_body = json.loads(response_body) except KeyError: print("""Response does not contain a string body! Interaction: {}""".format(interaction.data)) return try: access_token = json_body['access_token'] current_cassette.placeholders.append( cassette.Placeholder(placeholder=placeholder_access_token, replace=access_token)) except KeyError: pass try: refresh_token = json_body['refresh_token'] current_cassette.placeholders.append( cassette.Placeholder(placeholder=placeholder_refresh_token, replace=refresh_token)) except KeyError: pass
def test_cassette_initialization(): serializers.serializer_registry['test'] = Serializer() cassette.Cassette.default_cassette_options['placeholders'] = [] with recorder.Betamax.configure() as config: config.define_cassette_placeholder('<TO-OVERRIDE>', 'default') config.define_cassette_placeholder('<KEEP-DEFAULT>', 'config') placeholders = [{ 'placeholder': '<TO-OVERRIDE>', 'replace': 'override', }, { 'placeholder': '<ONLY-OVERRIDE>', 'replace': 'cassette', }] instance = cassette.Cassette('test_cassette', 'test', placeholders=placeholders) expected = [ cassette.Placeholder('<TO-OVERRIDE>', 'override'), cassette.Placeholder('<KEEP-DEFAULT>', 'config'), cassette.Placeholder('<ONLY-OVERRIDE>', 'cassette'), ] assert instance.placeholders == expected cassette.Cassette.default_cassette_options['placeholders'] = []
def sanitize_token(interaction, current_cassette): headers = interaction.data['request']['headers'] token = headers.get("Authorization") if token is None: return current_cassette.placeholders.append( cassette.Placeholder(placeholder=TOKEN_PLACEHOLDER, replace=token[0])) current_cassette.placeholders.append( cassette.Placeholder(placeholder=USER_PLACEHOLDER, replace=USER))
def sanitizeToken(interaction: Dict, current_cassette: cassette) -> None: headers = interaction.data['request']['headers'] token = headers.get('Authorization')[0] if token is None: return current_cassette.placeholders.append( cassette.Placeholder(placeholder='<AUTH_TOKEN>', replace=token))
def betamax_sanitizer(interaction, current_cassette): """betamax data sanitizer for dynamic data""" headers = interaction.data['response']['headers'] for h in headers.get('Set-Cookie', []): if 'BIGip' in h: current_cassette.placeholders.append( cassette.Placeholder(placeholder='<BIG-IP-COOKIE>', replace=h))
def sanitize_token(interaction, current_cassette): req_headers = interaction.data["request"]["headers"] token = req_headers["Authorization"] current_cassette.placeholders.append( cassette.Placeholder(placeholder="<AUTH_TOKEN>", replace=token[0])) resp_body = interaction.data["response"]["body"]["string"] try: access_token = json.loads(resp_body)["access_token"] # Create different placeholders ACCESS_TOKEN_1, ACCESS_TOKEN_2, and so on, # so we can check when the storage service has sent different tokens. placeholder = "<ACCESS_TOKEN_%d>" % len(current_cassette.placeholders) current_cassette.placeholders.append( cassette.Placeholder(placeholder=placeholder, replace=access_token)) except KeyError: pass
def _sanitize_token(interaction: Dict, current_cassette: cassette) -> None: if interaction.data['response']['status']['code'] != 200: return headers = interaction.data['request']['headers'] to_obscure = headers.get(target_field)[0] if to_obscure is None: return current_cassette.placeholders.append( cassette.Placeholder(placeholder='<OBSCURED>', replace=to_obscure))
def app_installation_login(self): """Login as the specific installation of a GitHub App.""" if (self.current_cassette.is_recording() and self.private_key_bytes and self.app_id and self.app_installation_id): self.gh.login_as_app_installation( self.private_key_bytes, app_id=self.app_id, installation_id=self.app_installation_id, ) token = self.gh.session.auth.token else: token = "v1.{}".format("x" * 10) now = datetime.datetime.now(tz=dateutil.tz.UTC) expires_at_dt = now + datetime.timedelta(seconds=60 * 60) expires_at = expires_at_dt.isoformat() self.gh.session.app_installation_token_auth({ "token": token, "expires_at": expires_at }) self.current_cassette.placeholders.append( cassette.Placeholder("<INSTALLATION_TOKEN>", token))