Skip to content

Commit 9f7f35b

Browse files
authored
Merge pull request #71 from henilp105/main
fix: CI, tests, bugs
2 parents 405d055 + 190153a commit 9f7f35b

File tree

4 files changed

+59
-53
lines changed

4 files changed

+59
-53
lines changed

.github/workflows/actions.yml

-27
This file was deleted.

.github/workflows/tests.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Run Tests for Backend
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
pull_request:
7+
branches: ["main"]
8+
workflow_dispatch:
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout page source
16+
uses: actions/checkout@v4
17+
18+
- name: MongoDB in GitHub Actions
19+
uses: supercharge/[email protected]
20+
with:
21+
mongodb-port: 27017
22+
23+
- name: Setup Python
24+
uses: actions/setup-python@v5
25+
26+
- name: Install python libraries
27+
run: pip3 install --user -r backend/requirements.txt
28+
29+
- name: load env file
30+
run: |
31+
echo "${{ secrets.TEST_ENV_FILE }}" > backend/.env
32+
33+
- name: Build the Docker image and run tests
34+
run: cd backend && python -m unittest discover -s tests

backend/packages.py

+17-19
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from models.user import User
2323
from models.package import Package
2424
from models.package import Version
25+
from bson import json_util
2526

2627

2728
parameters = {
@@ -604,7 +605,7 @@ def get_package_from_version(namespace_name, package_name, version):
604605
return jsonify({"message": "Package not found", "code": 404}), 404
605606

606607
else:
607-
package_obj = Package.from_json(json.dumps(package))
608+
package_obj = Package.from_json(package)
608609

609610
# Get the package author from id.
610611
package_author = db.users.find_one({"_id": package_obj.author})
@@ -891,19 +892,17 @@ def post_ratings(namespace, package):
891892
)
892893

893894
user = db.users.find_one({"uuid": uuid})
895+
if not user:
896+
return jsonify({"code": 404, "message": "User not found"}), 404
897+
894898
namespace_doc = db.namespaces.find_one({"namespace": namespace})
899+
if not namespace_doc:
900+
return jsonify({"code": 404, "message": "Namespace not found"}), 404
895901
package_doc = db.packages.find_one(
896902
{"name": package, "namespace": namespace_doc["_id"]}
897903
)
898-
899-
if not user or not namespace_doc or not package_doc:
900-
error_message = {
901-
"user": "User not found" if not user else None,
902-
"namespace": "Namespace not found" if not namespace_doc else None,
903-
"package": "Package not found" if not package_doc else None,
904-
"code": 404
905-
}
906-
return jsonify({"message": error_message}), 404
904+
if not package_doc:
905+
return jsonify({"code": 404, "message": "Package not found"}), 404
907906

908907
db.packages.update_one(
909908
{"name": package, "namespace": namespace_doc["_id"]},
@@ -970,19 +969,18 @@ def post_malicious(namespace, package):
970969
)
971970

972971
user = db.users.find_one({"uuid": uuid})
972+
973+
if not user:
974+
return jsonify({"code": 404, "message": "User not found"}), 404
975+
973976
namespace_doc = db.namespaces.find_one({"namespace": namespace})
977+
if not namespace_doc:
978+
return jsonify({"code": 404, "message": "Namespace not found"}), 404
974979
package_doc = db.packages.find_one(
975980
{"name": package, "namespace": namespace_doc["_id"]}
976981
)
977-
978-
if not user or not namespace_doc or not package_doc:
979-
error_message = {
980-
"user": "User not found" if not user else None,
981-
"namespace": "Namespace not found" if not namespace_doc else None,
982-
"package": "Package not found" if not package_doc else None,
983-
"code": 404
984-
}
985-
return jsonify({"message": error_message}), 404
982+
if not package_doc:
983+
return jsonify({"code": 404, "message": "Package not found"}), 404
986984

987985
package_version_doc = db.packages.update_one(
988986
{"name": package, "namespace": namespace_doc["_id"]},

backend/tests/test_packages.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def setUp(self):
3535
"namespace_description": "Test namespace description",
3636
}
3737

38-
def login(self):
38+
def login(self,is_sudo=False):
3939
"""
4040
Helper function to signup and login a user.
4141
@@ -51,7 +51,7 @@ def login(self):
5151

5252
signup_data = {
5353
"email": self.email,
54-
"password": self.password,
54+
"password": self.password if not is_sudo else os.getenv("SUDO_PASSWORD"),
5555
"username": self.username,
5656
}
5757
if self.is_created:
@@ -60,7 +60,7 @@ def login(self):
6060
response_for_signup = self.client.post("/auth/signup", data=signup_data)
6161
self.assertEqual(200, response_for_signup.json["code"])
6262
self.is_created = True
63-
login_data = {"user_identifier": self.email, "password": self.password}
63+
login_data = {"user_identifier": self.email, "password": self.password if not is_sudo else os.getenv("SUDO_PASSWORD")}
6464

6565
# Login with the same user.
6666
response_for_login = self.client.post("/auth/login", data=login_data)
@@ -320,8 +320,8 @@ def test_get_existing_package_version(self):
320320
response = self.client.get(
321321
f"/packages/{self.test_namespace_data['namespace']}/{self.test_package_data['package_name']}/0.0.1"
322322
)
323-
print(response.json["message"])
324-
self.assertEqual(200, response.json["code"])
323+
324+
self.assertEqual(200, response.json["code"]) # TODO: Check after fixing : get_package_from_version 608
325325
print("test_get_existing_package_version passed")
326326

327327
def test_package_invalid_license(self):
@@ -409,6 +409,7 @@ def test_successful_rating_submit(self):
409409
AssertionError: If the response code received from the server is not as expected.
410410
"""
411411
access_token = self.login()
412+
upload_response = self.upload()
412413
response = self.client.post(
413414
f"/ratings/{self.test_namespace_data['namespace']}/{self.test_package_data['package_name']}",
414415
content_type="multipart/form-data",
@@ -475,12 +476,12 @@ def test_successful_post_malicious(self):
475476
AssertionError: If the response code received from the server is not as expected.
476477
"""
477478
access_token = self.login()
479+
upload_response = self.upload()
478480
response = self.client.post(
479481
f"/report/{self.test_namespace_data['namespace']}/{self.test_package_data['package_name']}",
480482
content_type="multipart/form-data",
481483
data={"reason":"the package is found to be malicious"}, headers={"Authorization": f"Bearer {access_token}"},
482484
)
483-
print("test_successful_post_malicious response", response.json)
484485
self.assertEqual(200, response.json["code"])
485486
print("test_successful_post_malicious passed")
486487

@@ -542,7 +543,7 @@ def test_successful_fetch_malicious_reports(self):
542543
AssertionError: If the response code received from the server is not as expected.
543544
"""
544545

545-
access_token = self.login() # create a sudo user
546+
access_token = self.login(is_sudo=True) # create a sudo user
546547
response = self.client.get("/report/view",headers={"Authorization": f"Bearer {access_token}"})
547548
self.assertEqual(200, response.json["code"])
548549
print("test_successful_fetch_malicious_reports passed")

0 commit comments

Comments
 (0)