def test_objectstore_create(job_sample, jm): """ test posting data to the objectstore via webtest. extected result are: - return code 200 - return message successful - 1 job stored in the objectstore """ tjc = TreeherderJobCollection() tj = tjc.get_job(job_sample) tjc.add(tj) resp = test_utils.post_collection(jm.project, tjc) assert resp.status_int == 200 assert resp.json['message'] == 'well-formed JSON stored' stored_objs = jm.get_os_dhub().execute( proc="objectstore_test.selects.row_by_guid", placeholders=[job_sample["job"]["job_guid"]]) assert len(stored_objs) == 1 assert stored_objs[0]['job_guid'] == job_sample["job"]["job_guid"] jm.disconnect()
def test_send_with_oauth(self, mock_post, mock_time, mock_generate_nonce): """Tests that oauth data is sent to server""" mock_time.return_value = 1342229050 mock_generate_nonce.return_value = "46810593" mock_post.return_value = self._expected_response_return_object() client = TreeherderClient( protocol='http', host='host', ) tjc = TreeherderJobCollection() for job in self.job_data: tjc.add(tjc.get_job(job)) break client.post_collection('project', 'key', 'secret', tjc) self.assertEqual(mock_post.call_count, 1) path, resp = mock_post.call_args self.assertEqual(path[0], "http://host/api/project/project/objectstore/?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=uq%2BrkJCRPyPUdXExSasm25ab8m4%3D")
def test_send_with_oauth(self, mock_post, mock_time, mock_generate_nonce): """Tests that oauth data is sent to server""" mock_time.return_value = 1342229050 mock_generate_nonce.return_value = "46810593" mock_post.return_value = self._expected_response_return_object() client = TreeherderClient( protocol='http', host='host', ) tjc = TreeherderJobCollection() for job in self.job_data: tjc.add(tjc.get_job(job)) break client.post_collection('project', 'key', 'secret', tjc) self.assertEqual(mock_post.call_count, 1) path, resp = mock_post.call_args self.assertEqual( path[0], "http://host/api/project/project/objectstore/?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=uq%2BrkJCRPyPUdXExSasm25ab8m4%3D" )
def test_post_job_collection(self): """Can add a treeherder collections to a TreeherderRequest.""" tjc = TreeherderJobCollection() for job in self.job_data: tjc.add(tjc.get_job(job)) client = TreeherderClient( server_url='http://host', client_id='client-abc', secret='secret123', ) def request_callback(request): # Check that the expected content was POSTed. posted_json = json.loads(request.body) self.assertEqual(posted_json, tjc.get_collection_data()) return (200, {}, '{"message": "Job successfully updated"}') url = client._get_endpoint_url(tjc.endpoint_base, project='project') responses.add_callback(responses.POST, url, match_querystring=True, callback=request_callback, content_type='application/json') client.post_collection('project', tjc)
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_objectstore_create(job_sample, jm): """ test posting data to the objectstore via webtest. extected result are: - return code 200 - return message successful - 1 job stored in the objectstore """ tjc = TreeherderJobCollection() tj = tjc.get_job(job_sample) tjc.add(tj) resp = test_utils.post_collection(jm.project, tjc) assert resp.status_int == 200 assert resp.json['message'] == 'well-formed JSON stored' stored_objs = jm.get_os_dhub().execute( proc="objectstore_test.selects.row_by_guid", placeholders=[job_sample["job"]["job_guid"]] ) assert len(stored_objs) == 1 assert stored_objs[0]['job_guid'] == job_sample["job"]["job_guid"] jm.disconnect()
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_send_with_oauth(self, mock_post, mock_time, mock_generate_nonce): """Tests that oauth data is sent to server""" mock_time.return_value = 1342229050 mock_generate_nonce.return_value = "46810593" mock_post.return_value = self._expected_response_return_object() client = TreeherderClient( protocol='http', host='host', ) tjc = TreeherderJobCollection() for job in self.job_data: tjc.add(tjc.get_job(job)) break client.post_collection('project', 'key', 'secret', tjc) self.assertEqual(mock_post.call_count, 1) path, resp = mock_post.call_args self.assertEqual(path[0], "http://host/api/project/project/objectstore/?oauth_body_hash=C4jFXK8TBoFeh9wHOu1IkU7tERw%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=hNqHsAd7sdGyDLfWf7n9Bb%2B2rzM%3D")
def test_job_collection(self): """Confirm the collection matches the sample data""" tjc = TreeherderJobCollection() for job in self.job_data: tj = TreeherderJob(job) tjc.add(tj) self.assertTrue(len(self.job_data) == len(tjc.data))
def running_jobs_stored(jm, running_jobs, result_set_stored): """ stores a list of buildapi running jobs """ running_jobs.update(result_set_stored[0]) tjc = TreeherderJobCollection() tj = tjc.get_job(running_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def running_jobs_stored( jm, running_jobs, result_set_stored): """ stores a list of buildapi running jobs into the objectstore """ running_jobs.update(result_set_stored[0]) tjc = TreeherderJobCollection(job_type='update') tj = tjc.get_job(running_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def completed_jobs_stored(jm, completed_jobs, result_set_stored, mock_post_json): """ stores a list of buildapi completed jobs """ completed_jobs['revision_hash'] = result_set_stored[0]['revision_hash'] tjc = TreeherderJobCollection() tj = tjc.get_job(completed_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def completed_jobs_stored( jm, completed_jobs, result_set_stored, mock_post_json): """ stores a list of buildapi completed jobs """ completed_jobs['revision_hash'] = result_set_stored[0]['revision_hash'] tjc = TreeherderJobCollection() tj = tjc.get_job(completed_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def pending_jobs_stored(jm, pending_jobs, result_set_stored): """ stores a list of buildapi pending jobs into the jobs store using BuildApiTreeHerderAdapter """ pending_jobs.update(result_set_stored[0]) tjc = TreeherderJobCollection() tj = tjc.get_job(pending_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def running_jobs_stored( jm, running_jobs, result_set_stored, mock_post_json): """ stores a list of buildapi running jobs """ running_jobs.update(result_set_stored[0]) running_jobs.update({'project': jm.project}) tjc = TreeherderJobCollection() tj = tjc.get_job(running_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def pending_jobs_stored( jm, pending_jobs, result_set_stored): """ stores a list of buildapi pending jobs into the jobs store using BuildApiTreeHerderAdapter """ pending_jobs.update(result_set_stored[0]) tjc = TreeherderJobCollection(job_type='update') tj = tjc.get_job(pending_jobs) tjc.add(tj) test_utils.post_collection(jm.project, tjc)
def completed_jobs_stored( test_repository, failure_classifications, completed_jobs, result_set_stored, mock_post_json): """ stores a list of buildapi completed jobs """ completed_jobs['revision'] = result_set_stored[0]['revision'] completed_jobs.update({'project': test_repository.name}) tjc = TreeherderJobCollection() tj = tjc.get_job(completed_jobs) tjc.add(tj) test_utils.post_collection(test_repository.name, tjc)
def running_jobs_stored( test_repository, failure_classifications, running_jobs, result_set_stored, mock_post_json): """ stores a list of buildapi running jobs """ running_jobs.update(result_set_stored[0]) running_jobs.update({'project': test_repository.name}) tjc = TreeherderJobCollection() tj = tjc.get_job(running_jobs) tjc.add(tj) test_utils.post_collection(test_repository.name, tjc)
def pending_jobs_stored( test_repository, failure_classifications, pending_jobs, result_set_stored, mock_post_json): """ stores a list of buildapi pending jobs into the jobs store using BuildApiTreeHerderAdapter """ pending_jobs.update(result_set_stored[0]) pending_jobs.update({'project': test_repository.name}) tjc = TreeherderJobCollection() tj = tjc.get_job(pending_jobs) tjc.add(tj) test_utils.post_collection(test_repository.name, tjc)
def test_objectstore_with_bad_secret(job_sample, jm): """ test calling with the wrong project secret. extected result are: - return code 403 - return message authentication failed """ tjc = TreeherderJobCollection() tj = tjc.get_job(job_sample) tjc.add(tj) resp = test_utils.post_collection( jm.project, tjc, status=403, consumer_secret='not-so-secret' ) assert resp.status_int == 403 assert resp.json['detail'] == "Client authentication failed for project, {0}".format(jm.project) assert resp.json['response'] == "invalid_client"
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_objectstore_with_bad_key(job_sample, jm): """ test calling with the wrong project key. extected result are: - return code 403 - return message failed """ tjc = TreeherderJobCollection() tj = tjc.get_job(job_sample) tjc.add(tj) resp = test_utils.post_collection( jm.project, tjc, status=403, consumer_key='wrong-key' ) assert resp.status_int == 403 assert resp.json['response'] == "access_denied" assert resp.json['detail'] == "oauth_consumer_key does not match project, {0}, credentials".format(jm.project)
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): """Can add a treeherder collections to a TreeherderRequest.""" 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") def request_callback(request): # Check that the expected content was POSTed. posted_json = json.loads(request.body) self.assertEqual(posted_json, tjc.get_collection_data()) return (200, {}, '{"message": "Job successfully updated"}') url = client._get_project_uri("project", tjc.endpoint_base) responses.add_callback( responses.POST, url, match_querystring=True, callback=request_callback, content_type="application/json" ) client.post_collection("project", tjc)
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.post_collection('project', 'key', 'secret', tjc) path, resp = mock_post.call_args self.assertEqual(mock_post.call_count, 1) self.assertEqual(tjc.to_json(), resp['data'])
def test_objectstore_with_bad_key(job_sample, jm): """ test calling with the wrong project key. extected result are: - return code 403 - return message failed """ tjc = TreeherderJobCollection() tj = tjc.get_job(job_sample) tjc.add(tj) resp = test_utils.post_collection(jm.project, tjc, status=403, consumer_key='wrong-key') assert resp.status_int == 403 assert resp.json['response'] == "access_denied" assert resp.json[ 'detail'] == "oauth_consumer_key does not match project, {0}, credentials".format( jm.project)
def test_objectstore_with_bad_secret(job_sample, jm): """ test calling with the wrong project secret. extected result are: - return code 403 - return message authentication failed """ tjc = TreeherderJobCollection() tj = tjc.get_job(job_sample) tjc.add(tj) resp = test_utils.post_collection(jm.project, tjc, status=403, consumer_secret='not-so-secret') assert resp.status_int == 403 assert resp.json[ 'detail'] == "Client authentication failed for project, {0}".format( jm.project) assert resp.json['response'] == "invalid_client"
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"))
def test_send_job_collection(self, mock_send): """Can add a treeherder collections to a TreeherderRequest.""" tjc = TreeherderJobCollection() for job in self.job_data: tjc.add(tjc.get_job(job)) req = TreeherderRequest( protocol='http', host='host', project='project', oauth_key='key', oauth_secret='secret', ) req.post(tjc) self.assertEqual(mock_send.call_count, 1) self.assertEqual( tjc.to_json(), mock_send.call_args_list[0][1]['data'] )