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

- Added students per course function on the 4th iterations and related test cases

parent ca020e61
Branches
No related tags found
No related merge requests found
......@@ -50,7 +50,5 @@ def main():
current_app.logger.error(e)
return {'message': f'Error {e}'}, 500
return {'message':'Method not allowed'}, 405
from flask import request, current_app
import requests, logging, json
def config(k):
with open(f'/configs/default/parameters/{k}', 'r') as f:
return f.read()
from Commons import Commons
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(Commons.search_url(),
verify=False,
auth=Commons().auth(),
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
include:
- ./functions/coursesstudents/coursesstudents.py
- ./functions/coursesstudents/coursesstudents.py
- ./functions/library/Commons.py
kind: ArchiveUploadSpec
name: functions-coursesstudents-coursesstudents-py-OZr1
......@@ -48,6 +49,7 @@ spec:
functionTimeout: 60
idletimeout: 120
package:
functionName: coursesstudents.main
packageref:
name: coursesstudents-27bee01f-65ad-467b-a400-ddda156e25bf
namespace: ""
......
......@@ -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