@@ -184,6 +184,42 @@ def test_subscribe_to_messages_async_callbacks(
184184 future .cancel ()
185185
186186
187+ def test_creating_subscriptions_with_non_default_settings (
188+ publisher , subscriber , project , topic_path , subscription_path , cleanup
189+ ):
190+ # Make sure the topic and subscription get deleted.
191+ cleanup .append ((publisher .delete_topic , topic_path ))
192+ cleanup .append ((subscriber .delete_subscription , subscription_path ))
193+
194+ # create a topic and a subscription, customize the latter's policy
195+ publisher .create_topic (topic_path )
196+
197+ msg_retention_duration = {"seconds" : 911 }
198+ expiration_policy = {"ttl" : {"seconds" : 90210 }}
199+ new_subscription = subscriber .create_subscription (
200+ subscription_path ,
201+ topic_path ,
202+ ack_deadline_seconds = 30 ,
203+ retain_acked_messages = True ,
204+ message_retention_duration = msg_retention_duration ,
205+ expiration_policy = expiration_policy ,
206+ )
207+
208+ # fetch the subscription and check its settings
209+ project_path = subscriber .project_path (project )
210+ subscriptions = subscriber .list_subscriptions (project_path )
211+
212+ subscriptions = [sub for sub in subscriptions if sub .topic == topic_path ]
213+ assert len (subscriptions ) == 1
214+ subscription = subscriptions [0 ]
215+
216+ assert subscription == new_subscription
217+ assert subscription .ack_deadline_seconds == 30
218+ assert subscription .retain_acked_messages
219+ assert subscription .message_retention_duration .seconds == 911
220+ assert subscription .expiration_policy .ttl .seconds == 90210
221+
222+
187223def test_listing_project_topics (publisher , project , cleanup ):
188224 topic_paths = [
189225 publisher .topic_path (project , "topic-{}" .format (i ) + unique_resource_id ("." ))
0 commit comments