implemented get_job_document for AWS IoT

This commit is contained in:
Stephan Huber 2018-09-24 09:29:57 +02:00
parent 88596518f5
commit c49a8387bd
4 changed files with 4847 additions and 4429 deletions

File diff suppressed because it is too large Load Diff

View File

@ -610,6 +610,9 @@ class IoTBackend(BaseBackend):
def describe_job(self, job_id):
return self.jobs[job_id]
def get_job_document(self, job_id):
return self.jobs[job_id]
available_regions = boto3.session.Session().get_available_regions("iot")
iot_backends = {region: IoTBackend(region) for region in available_regions}

View File

@ -149,6 +149,16 @@ class IoTResponse(BaseResponse):
targetSelection=job.target_selection
)))
def get_job_document(self):
job = self.iot_backend.get_job_document(job_id=self._get_param("jobId"))
if job.document is not None:
json.dumps({'document': job.document})
else:
# job.document_source is not None:
# TODO: needs to be implemented to get document_source's content from S3
return json.dumps({'document': ''})
def create_keys_and_certificate(self):
set_as_active = self._get_bool_param("setAsActive")
cert, key_pair = self.iot_backend.create_keys_and_certificate(

View File

@ -1,7 +1,7 @@
from __future__ import unicode_literals
import json
import sure # noqa
import boto3
from moto import mock_iot
@ -681,3 +681,65 @@ def test_describe_job_1():
"expiresInSec").which.should.equal(123)
job.should.have.key('job').which.should.have.key("jobExecutionsRolloutConfig").which.should.have.key(
"maximumPerMinute").which.should.equal(10)
@mock_iot
def test_get_job_document_with_document_source():
client = boto3.client('iot', region_name='eu-west-1')
name = "my-thing"
job_id = "TestJob"
# thing
thing = client.create_thing(thingName=name)
thing.should.have.key('thingName').which.should.equal(name)
thing.should.have.key('thingArn')
job = client.create_job(
jobId=job_id,
targets=[thing["thingArn"]],
documentSource="https://s3-eu-west-1.amazonaws.com/bucket-name/job_document.json",
presignedUrlConfig={
'roleArn': 'arn:aws:iam::1:role/service-role/iot_job_role',
'expiresInSec': 123
},
targetSelection="CONTINUOUS",
jobExecutionsRolloutConfig={
'maximumPerMinute': 10
}
)
job.should.have.key('jobId').which.should.equal(job_id)
job.should.have.key('jobArn')
job_document = client.get_job_document(jobId=job_id)
job_document.should.have.key('document').which.should.equal('')
@mock_iot
def test_get_job_document_with_document():
client = boto3.client('iot', region_name='eu-west-1')
name = "my-thing"
job_id = "TestJob1"
# thing
thing = client.create_thing(thingName=name)
thing.should.have.key('thingName').which.should.equal(name)
thing.should.have.key('thingArn')
job = client.create_job(
jobId=job_id,
targets=[thing["thingArn"]],
document=json.dumps({'foo': 'bar'}),
presignedUrlConfig={
'roleArn': 'arn:aws:iam::1:role/service-role/iot_job_role',
'expiresInSec': 123
},
targetSelection="CONTINUOUS",
jobExecutionsRolloutConfig={
'maximumPerMinute': 10
}
)
job.should.have.key('jobId').which.should.equal(job_id)
job.should.have.key('jobArn')
job_document = client.get_job_document(jobId=job_id)
job_document.should.have.key('document').which.should.equal('')