def test_treeheder_auth(self, mock_time, mock_generate_nonce):

        """Tests that oauth data is sent to server"""
        mock_time.return_value = 1342229050
        mock_generate_nonce.return_value = "46810593"

        tjc = TreeherderJobCollection()
        tjc.add(tjc.get_job(self.job_data[0]))

        auth = TreeherderAuth("key", "secret", "project")
        req = requests.Request(
            url="http://host/api/project/project/jobs/", json=tjc.get_collection_data(), auth=auth, method="POST"
        )
        prepped_request = req.prepare()
        self.assertEqual(
            prepped_request.url,
            (
                "http://host/api/project/project/jobs/?"
                "oauth_body_hash=IKbDoi5GvTRaqjRTCDyKIN5wWiY%3D&"
                "oauth_nonce=46810593&"
                "oauth_timestamp=1342229050&"
                "oauth_consumer_key=key&"
                "oauth_signature_method=HMAC-SHA1&"
                "oauth_version=1.0&"
                "oauth_token=&"
                "user=project&"
                "oauth_signature=DJe%2F%2FJtw7s2XUrciG%2Bl1tfJJen8%3D"
            ),
        )
    def test_post_job_collection(self, mock_post):
        """Can add a treeherder collections to a TreeherderRequest."""
        mock_post.return_value = self._expected_response_return_object()

        tjc = TreeherderJobCollection()

        for job in self.job_data:
            tjc.add(tjc.get_job(job))

        client = TreeherderClient(
            protocol='http',
            host='host',
            client_id='client-abc',
            secret='secret123',
            )

        client.post_collection('project', tjc)

        path, resp = mock_post.call_args

        self.assertEqual(mock_post.call_count, 1)
        self.assertEqual(
            tjc.get_collection_data(),
            resp['json']
            )
    def test_treeheder_auth(self, mock_time, mock_generate_nonce):
        """Tests that oauth data is sent to server"""
        mock_time.return_value = 1342229050
        mock_generate_nonce.return_value = "46810593"

        tjc = TreeherderJobCollection()
        tjc.add(tjc.get_job(self.job_data[0]))

        auth = TreeherderAuth('key', 'secret', 'project')
        req = requests.Request(url='http://host/api/project/project/jobs/',
                               json=tjc.get_collection_data(),
                               auth=auth,
                               method='POST')
        prepped_request = req.prepare()
        self.assertEqual(
            prepped_request.url,
            ("http://host/api/project/project/jobs/?"
             "oauth_body_hash=IKbDoi5GvTRaqjRTCDyKIN5wWiY%3D&"
             "oauth_nonce=46810593&"
             "oauth_timestamp=1342229050&"
             "oauth_consumer_key=key&"
             "oauth_signature_method=HMAC-SHA1&"
             "oauth_version=1.0&"
             "oauth_token=&"
             "user=project&"
             "oauth_signature=DJe%2F%2FJtw7s2XUrciG%2Bl1tfJJen8%3D"))
    def test_post_job_collection(self, mock_post):
        """Can add a treeherder collections to a TreeherderRequest."""
        mock_post.return_value = self._expected_response_return_object()

        tjc = TreeherderJobCollection()

        for job in self.job_data:

            tjc.add(tjc.get_job(job))

        client = TreeherderClient(protocol="http", host="host")

        auth = TreeherderAuth("key", "secret", "project")
        client.post_collection("project", tjc, auth=auth)

        path, resp = mock_post.call_args

        self.assertEqual(mock_post.call_count, 1)
        self.assertEqual(tjc.get_collection_data(), resp["json"])
    def test_send_without_oauth(self, mock_post, mock_time,
                                mock_generate_nonce):

        """Can send data to the server."""
        mock_time.return_value = 1342229050
        mock_generate_nonce.return_value = "46810593"

        host = 'host'

        req = TreeherderRequest(
            protocol='http',
            host=host,
            project='project',
            oauth_key=None,
            oauth_secret=None,
            )

        mock_response = mock_post.return_value

        tjc = TreeherderJobCollection()

        for job in self.job_data:

            tjc.add(tjc.get_job(job))
            break

        response = req.post(tjc)

        self.assertEqual(mock_response, response)
        self.assertEqual(mock_post.call_count, 1)

        path, resp = mock_post.call_args

        deserialized_data = json.loads(resp['data'])
        self.assertEqual(
            deserialized_data,
            tjc.get_collection_data()
            )
        self.assertEqual(
            resp['headers']['Content-Type'],
            'application/json',
            )
    def test_post_job_collection(self, mock_post):
        """Can add a treeherder collections to a TreeherderRequest."""
        mock_post.return_value = self._expected_response_return_object()

        tjc = TreeherderJobCollection()

        for job in self.job_data:
            tjc.add(tjc.get_job(job))

        client = TreeherderClient(
            protocol='http',
            host='host',
            client_id='client-abc',
            secret='secret123',
        )

        client.post_collection('project', tjc)

        path, resp = mock_post.call_args

        self.assertEqual(mock_post.call_count, 1)
        self.assertEqual(tjc.get_collection_data(), resp['json'])
    def test_treeheder_auth(self, mock_time, mock_generate_nonce):

        """Tests that oauth data is sent to server"""
        mock_time.return_value = 1342229050
        mock_generate_nonce.return_value = "46810593"

        tjc = TreeherderJobCollection()
        tjc.add(tjc.get_job(self.job_data[0]))

        auth = TreeherderAuth('key', 'secret', 'project')
        req = requests.Request(url='http://host/api/project/project/jobs/',
                               json=tjc.get_collection_data(),
                               auth=auth, method='POST')
        prepped_request = req.prepare()
        self.assertEqual(prepped_request.url, ("http://host/api/project/project/jobs/?"
                                               "oauth_body_hash=DEn0vGleFUlmCzsFtv1fzBEpNHg%3D&"
                                               "oauth_nonce=46810593&"
                                               "oauth_timestamp=1342229050&"
                                               "oauth_consumer_key=key&"
                                               "oauth_signature_method=HMAC-SHA1&"
                                               "oauth_version=1.0&"
                                               "oauth_token=&"
                                               "user=project&"
                                               "oauth_signature=kxmsE%2BCqRDtV%2Bqk9GYeA7n4F%2FCI%3D"))