| 
									
										
										
										
											2021-02-01 05:15:57 -08:00
										 |  |  | import json | 
					
						
							| 
									
										
										
										
											2021-07-26 07:40:39 +01:00
										 |  |  | from urllib.parse import quote | 
					
						
							| 
									
										
										
										
											2021-02-01 05:15:57 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | import pytest | 
					
						
							| 
									
										
										
										
											2021-10-18 19:44:29 +00:00
										 |  |  | import sure  # noqa # pylint: disable=unused-import | 
					
						
							| 
									
										
										
										
											2017-11-10 18:44:02 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | import moto.server as server | 
					
						
							|  |  |  | from moto import mock_iot | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | """
 | 
					
						
							| 
									
										
										
										
											2017-11-10 18:44:02 +09:00
										 |  |  | Test the different server responses | 
					
						
							| 
									
										
										
										
											2019-10-31 08:44:26 -07:00
										 |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-10 18:44:02 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | @mock_iot | 
					
						
							|  |  |  | def test_iot_list(): | 
					
						
							|  |  |  |     backend = server.create_backend_app("iot") | 
					
						
							|  |  |  |     test_client = backend.test_client() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # just making sure that server is up | 
					
						
							|  |  |  |     res = test_client.get("/things") | 
					
						
							| 
									
										
										
										
											2021-02-01 05:15:57 -08:00
										 |  |  |     res.status_code.should.equal(200) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @pytest.mark.parametrize( | 
					
						
							|  |  |  |     "url_encode_arn", | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         pytest.param(True, id="Target Arn in Path is URL encoded"), | 
					
						
							|  |  |  |         pytest.param(False, id="Target Arn in Path is *not* URL encoded"), | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | @mock_iot | 
					
						
							|  |  |  | def test_list_attached_policies(url_encode_arn): | 
					
						
							|  |  |  |     backend = server.create_backend_app("iot") | 
					
						
							|  |  |  |     test_client = backend.test_client() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     result = test_client.post("/keys-and-certificate?setAsActive=true") | 
					
						
							|  |  |  |     result_dict = json.loads(result.data.decode("utf-8")) | 
					
						
							|  |  |  |     certificate_arn = result_dict["certificateArn"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     test_client.post("/policies/my-policy", json={"policyDocument": {}}) | 
					
						
							|  |  |  |     test_client.put("/target-policies/my-policy", json={"target": certificate_arn}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if url_encode_arn: | 
					
						
							|  |  |  |         certificate_arn = quote(certificate_arn, safe="") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-17 21:41:08 -01:00
										 |  |  |     result = test_client.post(f"/attached-policies/{certificate_arn}") | 
					
						
							| 
									
										
										
										
											2021-02-01 05:15:57 -08:00
										 |  |  |     result.status_code.should.equal(200) | 
					
						
							|  |  |  |     result_dict = json.loads(result.data.decode("utf-8")) | 
					
						
							|  |  |  |     result_dict["policies"][0]["policyName"].should.equal("my-policy") |