Skip to content
Snippets Groups Projects
Commit ca020e61 authored by Luca Morandini's avatar Luca Morandini
Browse files

- Added student per courses function implementation and tests

- Removed some redundant code
parent e436641a
Branches
No related tags found
No related merge requests found
......@@ -41,4 +41,4 @@ def main():
current_app.logger.error(e)
return {'message': f'Error {e}'}, 500
return {'message':'Method not allowed'}, 405
......@@ -6,7 +6,51 @@ def config(k):
return f.read()
def main():
r = requests.get(f'{config("ES_URL")}/{config("ES_DATABASE")}',
verify=False,
auth=(config("ES_USERNAME"), config("ES_PASSWORD")))
return r.json(), r.status_code
try:
r = requests.post(f'{config("ES_URL")}/{config("ES_DATABASE")}/_search',
verify=False,
auth=(config('ES_USERNAME'), config('ES_PASSWORD')),
headers={'Content-type': 'application/json'},
data=json.dumps({'_source': False,
'query': {
'bool' : {
'must' : [
{
'term' : {
'courses' : request.headers['X-Fission-Params-Courseid']
}
},
{
'term': {
'type': 'student'
}
}
]
}
},
'fields':[
{'field':'id'},
{'field':'timestamp'},
{'field':'name'}
],
'sort': [
{
'name': {
'order': 'asc',
'missing': '_last',
'unmapped_type': 'keyword'
}
}
]
})
)
return r.json(), r.status_code
except Exception as e:
current_app.logger.error(e)
return {'message': f'Error {e}'}, 500
return {'message':'Method not allowed'}, 405
......@@ -42,5 +42,4 @@ def main():
current_app.logger.error(e)
return {'message': f'Error {e}'}, 500
return {'message':'Method not allowed'}, 405
......@@ -104,6 +104,31 @@ class TestEnd2End(unittest.TestCase):
self.assertEqual(o[0]['fields']['name'][0], 'Cloud Computing')
self.assertEqual(o[1]['fields']['name'][0], 'Introduction to Programming')
def test_courses_students(self):
self.assertEqual(test_request.put('/courses/90024', {'name': 'Cloud Computing'}).status_code, 201)
self.assertEqual(test_request.put('/courses/90059', {'name': 'Introduction to Programming'}).status_code, 201)
self.assertEqual(test_request.put('/students/1', {'name': 'John Doe', 'courses': '90024'}).status_code, 201)
self.assertEqual(test_request.put('/students/2', {'name': 'Jane Doe', 'courses': ['90024', '90059']}).status_code, 201)
time.sleep(1)
r= test_request.get('/courses/90024/students')
o= (r.json()['hits'])['hits']
self.assertEqual(r.status_code, 200)
self.assertEqual(len(o), 2)
self.assertEqual(o[0]['fields']['name'][0], 'Jane Doe')
self.assertEqual(o[1]['fields']['name'][0], 'John Doe')
r= test_request.get('/courses/90059/students')
o= (r.json()['hits'])['hits']
self.assertEqual(len(o), 1)
self.assertEqual(r.status_code, 200)
self.assertEqual(o[0]['fields']['name'][0], 'Jane Doe')
r= test_request.get('/courses/99999/students')
o= (r.json()['hits'])['hits']
self.assertEqual(r.status_code, 200)
self.assertEqual(len(o), 0)
if __name__ == '__main__':
test_request = HTTPSession('http', 'localhost', 9090)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment