Best Python code snippet using localstack_python
test_ses.py
Source:test_ses.py
1import json2import os3from datetime import date, datetime4import pytest5import localstack.config as config6TEST_TEMPLATE_ATTRIBUTES = {7 "TemplateName": "hello-world",8 "SubjectPart": "Subject test",9 "TextPart": "hello\nworld",10 "HtmlPart": "hello<br/>world",11}12@pytest.fixture13def create_template(ses_client):14 created_template_names = []15 def _create_template(Template):16 ses_client.create_template(Template=Template)17 created_template_names.append(Template["TemplateName"])18 yield _create_template19 for name in created_template_names:20 ses_client.delete_template(TemplateName=name)21class TestSES:22 def test_list_templates(self, ses_client, create_template):23 create_template(Template=TEST_TEMPLATE_ATTRIBUTES)24 templ_list = ses_client.list_templates()["TemplatesMetadata"]25 assert 1 == len(templ_list)26 created_template = templ_list[0]27 assert TEST_TEMPLATE_ATTRIBUTES["TemplateName"] == created_template["Name"]28 assert type(created_template["CreatedTimestamp"]) in (date, datetime)29 # Should not fail after 2 consecutive tries30 templ_list = ses_client.list_templates()["TemplatesMetadata"]31 assert 1 == len(templ_list)32 created_template = templ_list[0]33 assert TEST_TEMPLATE_ATTRIBUTES["TemplateName"] == created_template["Name"]34 assert type(created_template["CreatedTimestamp"]) in (date, datetime)35 def test_delete_template(self, ses_client, create_template):36 templ_list = ses_client.list_templates()["TemplatesMetadata"]37 assert 0 == len(templ_list)38 create_template(Template=TEST_TEMPLATE_ATTRIBUTES)39 templ_list = ses_client.list_templates()["TemplatesMetadata"]40 assert 1 == len(templ_list)41 ses_client.delete_template(TemplateName=TEST_TEMPLATE_ATTRIBUTES["TemplateName"])42 templ_list = ses_client.list_templates()["TemplatesMetadata"]43 assert 0 == len(templ_list)44 def test_get_identity_verification_attributes(self, ses_client):45 domain = "example.com"46 email = "user@example.com"47 test_values = [domain, email]48 response = ses_client.get_identity_verification_attributes(Identities=test_values)[49 "VerificationAttributes"50 ]51 assert 2 == len(response)52 for value in test_values:53 assert "Success" == response[value]["VerificationStatus"]54 assert "VerificationToken" in response[domain]55 assert "VerificationToken" not in response[email]56 def test_send_email_save(self, ses_client):57 data_dir = config.dirs.data or config.dirs.tmp58 email = "user@example.com"59 ses_client.verify_email_address(EmailAddress=email)60 message = ses_client.send_email(61 Source=email,62 Message={63 "Subject": {64 "Data": "A_SUBJECT",65 },66 "Body": {67 "Text": {68 "Data": "A_MESSAGE",69 },70 },71 },72 Destination={73 "ToAddresses": ["success@example.com"],74 },75 )76 with open(os.path.join(data_dir, "ses", message["MessageId"] + ".json"), "r") as f:77 message = f.read()78 contents = json.loads(message)79 assert email == contents["Source"]80 assert "A_SUBJECT" == contents["Subject"]81 assert "A_MESSAGE" == contents["Body"]82 assert ["success@example.com"] == contents["Destinations"]["ToAddresses"]83 def test_send_templated_email_save(self, ses_client, create_template):84 data_dir = config.dirs.data or config.dirs.tmp85 email = "user@example.com"86 ses_client.verify_email_address(EmailAddress=email)87 ses_client.delete_template(TemplateName=TEST_TEMPLATE_ATTRIBUTES["TemplateName"])88 create_template(Template=TEST_TEMPLATE_ATTRIBUTES)89 message = ses_client.send_templated_email(90 Source=email,91 Template=TEST_TEMPLATE_ATTRIBUTES["TemplateName"],92 TemplateData='{"A key": "A value"}',93 Destination={94 "ToAddresses": ["success@example.com"],95 },96 )97 with open(os.path.join(data_dir, "ses", message["MessageId"] + ".json"), "r") as f:98 message = f.read()99 contents = json.loads(message)100 assert email == contents["Source"]101 assert [TEST_TEMPLATE_ATTRIBUTES["TemplateName"]] == contents["Template"]102 assert ['{"A key": "A value"}'] == contents["TemplateData"]...
simple_email_service.py
Source:simple_email_service.py
1import boto32from email import encoders3from email.mime.base import MIMEBase4from email.mime.application import MIMEApplication5from email.mime.multipart import MIMEMultipart6from email.mime.text import MIMEText7import csv8import io91011class SES():12 def __init__(self) -> None:13 self.ses_client = boto3.client('ses')14 15 def verify_client(self, email_address:str):16 response = self.ses_client.verify_email_address(EmailAddress=email_address)17 return response18 19 def delete_client(self, email_address:str):20 response = self.ses_client.delete_identity(Identity=email_address)21 return response22 23 def send_email(self, email_id, to, data):24 msg = MIMEMultipart()25 msg["Subject"] = "Search Result of Cards"26 msg["From"] = email_id27 msg["To"] = to2829 html = """\30 <html>31 <head></head>32 <body>33 <p>Hi!<br>34 Download your search result file in this email.35 </p>36 </body>37 </html>38 """39 # Set message body40 body = MIMEText(html, "html")41 msg.attach(body)4243 output = io.StringIO()44 writer = csv.writer(output)45 for item in data:46 writer.writerow([item['CardID'], item['CardName'],47 item['email'], item['contact1'], item['contact2'], 48 item['website'], item['add']])49 50 output.seek(0)51 filename = "card_results.csv"52 part = MIMEApplication(output.read())53 part.add_header("Content-Disposition",54 "attachment",55 filename=filename)56 msg.attach(part)5758 response = self.ses_client.send_raw_email(59 Source=email_id,60 Destinations=[to],61 RawMessage={"Data": msg.as_string()}62 )63 return response
...
billing_mail.py
Source:billing_mail.py
1import os2import boto33import datetime4MAIL_FROM = os.environ['MAIL_FROM']5MAIL_TO = os.environ['MAIL_TO']6cloud_watch_client = boto3.client('cloudwatch', region_name='us-east-1')7ses_client = boto3.client('ses', region_name='us-east-1')8def lambda_handler(event, context):9 if not is_registerd_email_address():10 register_email_address()11 return12 billing = getBilling()13 send_email(billing)14 return15def is_registerd_email_address():16 return len(ses_client.list_verified_email_addresses()["VerifiedEmailAddresses"]) == 117def register_email_address():18 return ses_client.verify_email_address(19 EmailAddress=MAIL_FROM20 )21def send_email(billing):22 return ses_client.send_email(23 Source=MAIL_FROM,24 Destination={25 'ToAddresses': [26 MAIL_TO,27 ]28 },29 Message={30 'Subject': {31 'Data': 'ãã·ã¹ãã ã¡ã¼ã«ãç¾å¨ã®AWSå©ç¨æé',32 },33 'Body': {34 'Text': {35 'Data': 'ç¾å¨ã®AWSå©ç¨æã¯ã$' + str(billing) + ' ã§ãã' ,36 },37 }38 }39 )40def getBilling():41 start_time = datetime.datetime.today() - datetime.timedelta(days=1)42 end_time = datetime.datetime.today()43 statistics = cloud_watch_client.get_metric_statistics(44 Namespace='AWS/Billing',45 MetricName='EstimatedCharges',46 Dimensions=[47 {48 'Name': 'Currency',49 'Value': 'USD'50 }51 ],52 StartTime=start_time,53 EndTime=end_time,54 Period=3600*24,55 Statistics=['Maximum']56 )...
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!!