Best Python code snippet using localstack_python
sns_listener.py
Source: sns_listener.py
...21 topic_arn = topic_arn[0]22 if topic_arn not in SNS_SUBSCRIPTIONS:23 SNS_SUBSCRIPTIONS[topic_arn] = []24 if req_action == 'SetSubscriptionAttributes':25 sub = get_subscription_by_arn(req_data['SubscriptionArn'][0])26 if not sub:27 return make_error(message='Unable to find subscription for given ARN', code=400)28 attr_name = req_data['AttributeName'][0]29 attr_value = req_data['AttributeValue'][0]30 sub[attr_name] = attr_value31 return make_response(req_action)32 elif req_action == 'GetSubscriptionAttributes':33 sub = get_subscription_by_arn(req_data['SubscriptionArn'][0])34 if not sub:35 return make_error(message='Unable to find subscription for given ARN', code=400)36 content = '<Attributes>'37 for key, value in sub.items():38 content += '<entry><key>%s</key><value>%s</value></entry>\n' % (key, value)39 content += '</Attributes>'40 return make_response(req_action, content=content)41 elif req_action == 'Subscribe':42 if 'Endpoint' not in req_data:43 return make_error(message='Endpoint not specified in subscription', code=400)44 elif req_action == 'Publish':45 message = req_data['Message'][0]46 sqs_client = aws_stack.connect_to_service('sqs')47 for subscriber in SNS_SUBSCRIPTIONS[topic_arn]:48 if subscriber['Protocol'] == 'sqs':49 queue_name = subscriber['Endpoint'].split(':')[5]50 queue_url = subscriber.get('sqs_queue_url')51 if not queue_url:52 queue_url = aws_stack.get_sqs_queue_url(queue_name)53 subscriber['sqs_queue_url'] = queue_url54 sqs_client.send_message(QueueUrl=queue_url,55 MessageBody=create_sns_message_body(subscriber, req_data))56 elif subscriber['Protocol'] == 'lambda':57 lambda_api.process_sns_notification(58 subscriber['Endpoint'],59 topic_arn, message, subject=req_data.get('Subject')60 )61 elif subscriber['Protocol'] == 'http':62 requests.post(63 subscriber['Endpoint'],64 headers={65 'Content-Type': 'text/plain',66 'x-amz-sns-message-type': 'Notification'67 },68 data=json.dumps({69 'Type': 'Notification',70 'Message': message,71 })72 )73 else:74 LOGGER.warning('Unexpected protocol "%s" for SNS subscription' % subscriber['Protocol'])75 # return response here because we do not want the request to be forwarded to SNS76 return make_response(req_action)77 return True78 else:79 # This branch is executed by the proxy after we've already received a80 # response from the backend, hence we can utilize the "reponse" variable here81 if method == 'POST' and path == '/':82 req_data = urlparse.parse_qs(data)83 req_action = req_data['Action'][0]84 if req_action == 'Subscribe' and response.status_code < 400:85 response_data = xmltodict.parse(response.content)86 topic_arn = (req_data.get('TargetArn') or req_data.get('TopicArn'))[0]87 sub_arn = response_data['SubscribeResponse']['SubscribeResult']['SubscriptionArn']88 subscription = {89 # http://docs.aws.amazon.com/cli/latest/reference/sns/get-subscription-attributes.html90 'TopicArn': topic_arn,91 'Endpoint': req_data['Endpoint'][0],92 'Protocol': req_data['Protocol'][0],93 'SubscriptionArn': sub_arn,94 'RawMessageDelivery': 'false'95 }96 SNS_SUBSCRIPTIONS[topic_arn].append(subscription)97# ---------------98# HELPER METHODS99# ---------------100def get_subscription_by_arn(sub_arn):101 # TODO maintain separate map instead of traversing all items102 for key, subscriptions in SNS_SUBSCRIPTIONS.items():103 for sub in subscriptions:104 if sub['SubscriptionArn'] == sub_arn:105 return sub106def make_response(op_name, content=''):107 response = Response()108 if not content:109 content = '<MessageId>%s</MessageId>' % short_uid()110 response._content = """<{op_name}Response xmlns="http://sns.amazonaws.com/doc/2010-03-31/">111 <{op_name}Result>112 {content}113 </{op_name}Result>114 <ResponseMetadata><RequestId>{req_id}</RequestId></ResponseMetadata>...
test_sns_listener.py
Source: test_sns_listener.py
...15 sns_listener.do_subscribe(topic_arn,16 'http://localhost:1234/listen',17 'http',18 sub_arn)19 assert(sns_listener.get_subscription_by_arn(sub_arn) is not None)20 sns_listener.do_unsubscribe(sub_arn)21 assert(sns_listener.get_subscription_by_arn(sub_arn) is None)22def test_create_sns_message_body_raw_message_delivery():23 subscriber = {24 'RawMessageDelivery': 'true'25 }26 action = {27 'Message': ['msg']28 }29 result = sns_listener.create_sns_message_body(subscriber, action)30 assert (result == 'msg')31def test_create_sns_message_body():32 subscriber = {33 'TopicArn': 'arn',34 'RawMessageDelivery': 'false',35 }...
34136_test_sns_listener.py
Source: 34136_test_sns_listener.py
...15 sns_listener.do_subscribe(topic_arn,16 'http://localhost:1234/listen',17 'http',18 sub_arn)19 assert(sns_listener.get_subscription_by_arn(sub_arn) is not None)20 sns_listener.do_unsubscribe(sub_arn)21 assert(sns_listener.get_subscription_by_arn(sub_arn) is None)22def test_create_sns_message_body_raw_message_delivery():23 subscriber = {24 'RawMessageDelivery': 'true'25 }26 action = {27 'Message': ['msg']28 }29 result = sns_listener.create_sns_message_body(subscriber, action)30 assert (result == 'msg')31def test_create_sns_message_body():32 subscriber = {33 'TopicArn': 'arn',34 'RawMessageDelivery': 'false',35 }...
Check out the latest blogs from LambdaTest on this topic:
The fact is not alien to us anymore that cross browser testing is imperative to enhance your application’s user experience. Enhanced knowledge of popular and highly acclaimed testing frameworks goes a long way in developing a new app. It holds more significance if you are a full-stack developer or expert programmer.
QA testers have a unique role and responsibility to serve the customer. Serving the customer in software testing means protecting customers from application defects, failures, and perceived failures from missing or misunderstood requirements. Testing for known requirements based on documentation or discussion is the core of the testing profession. One unique way QA testers can both differentiate themselves and be innovative occurs when senseshaping is used to improve the application user experience.
Having a good web design can empower business and make your brand stand out. According to a survey by Top Design Firms, 50% of users believe that website design is crucial to an organization’s overall brand. Therefore, businesses should prioritize website design to meet customer expectations and build their brand identity. Your website is the face of your business, so it’s important that it’s updated regularly as per the current web design trends.
Enterprise resource planning (ERP) is a form of business process management software—typically a suite of integrated applications—that assists a company in managing its operations, interpreting data, and automating various back-office processes. The introduction of a new ERP system is analogous to the introduction of a new product into the market. If the product is not handled appropriately, it will fail, resulting in significant losses for the business. Most significantly, the employees’ time, effort, and morale would suffer as a result of the procedure.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!