Repository: getmoto/moto

Issue:
SQS Message timestamp attributes in exponential notation
When sending and receiving messages through SQS, the attributes `SentTimestamp` and `ApproximateFirstReceiveTimestamp` contain a string with a number in exponential notation. 

Example (taken from atlassian/localstack#135, which describes this issue):
```json
{
  "Messages": [{
    "Body": "Test Message!",
    "Attributes": {
      "ApproximateFirstReceiveTimestamp": "1.49138149959e+12",
      "SenderId": "AIDAIT2UOQQY3AUEKVGXU",
      "ApproximateReceiveCount": "1",
      "SentTimestamp": "1.49138142195e+12"
    },
    "ReceiptHandle": "xuazrzyjcgpgzpzlxlyxmujbgzfkswixjkywshturlylrfwzyccutlumitgduyzddwkaoypcmswlkxrrjghdyztfewrpmkxdufptyketrfumwzicmggogdbaucwztvorplibccpfhirmalnixvfbklzrgncpisdsiuiajqwefxueqhuygfibmgqwx",
    "MD5OfBody": "df69267381a60e476252c989db9ac8ad",
    "MessageId": "a6ed436b-076a-0d8d-73e1-cc3291a19c28"
  }]
}
```

This is different from AWS behavior, and causes some troubles as it cannot be parsed directly as a long value. Per [AWS documentation](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) these values should contain the epoch time in milliseconds.

This is happening with master branch. 




Discussion:

Resolving patch:
diff --git a/moto/sqs/models.py b/moto/sqs/models.py
--- a/moto/sqs/models.py
+++ b/moto/sqs/models.py
@@ -96,7 +96,7 @@ def body(self):
         return escape(self._body)
 
     def mark_sent(self, delay_seconds=None):
-        self.sent_timestamp = unix_time_millis()
+        self.sent_timestamp = int(unix_time_millis())
         if delay_seconds:
             self.delay(delay_seconds=delay_seconds)
 
@@ -111,7 +111,7 @@ def mark_received(self, visibility_timeout=None):
             visibility_timeout = 0
 
         if not self.approximate_first_receive_timestamp:
-            self.approximate_first_receive_timestamp = unix_time_millis()
+            self.approximate_first_receive_timestamp = int(unix_time_millis())
 
         self.approximate_receive_count += 1
 


Test patch:
diff --git a/tests/test_sqs/test_sqs.py b/tests/test_sqs/test_sqs.py
--- a/tests/test_sqs/test_sqs.py
+++ b/tests/test_sqs/test_sqs.py
@@ -272,6 +272,25 @@ def test_send_receive_message_with_attributes():
     message2.get('MD5OfMessageAttributes').should.equal('994258b45346a2cc3f9cbb611aa7af30')
 
 
+@mock_sqs
+def test_send_receive_message_timestamps():
+    sqs = boto3.resource('sqs', region_name='us-east-1')
+    conn = boto3.client("sqs", region_name='us-east-1')
+    conn.create_queue(QueueName="test-queue")
+    queue = sqs.Queue("test-queue")
+
+    queue.send_message(MessageBody="derp")
+    messages = conn.receive_message(
+        QueueUrl=queue.url, MaxNumberOfMessages=1)['Messages']
+
+    message = messages[0]
+    sent_timestamp = message.get('Attributes').get('SentTimestamp')
+    approximate_first_receive_timestamp = message.get('Attributes').get('ApproximateFirstReceiveTimestamp')
+
+    int.when.called_with(sent_timestamp).shouldnt.throw(ValueError)
+    int.when.called_with(approximate_first_receive_timestamp).shouldnt.throw(ValueError)
+
+
 @mock_sqs
 def test_receive_messages_with_wait_seconds_timeout_of_zero():
     """