# SPDX-FileCopyrightText: WTF Kooperative eG # # SPDX-License-Identifier: AGPL-3.0-or-later import unittest from ki.test.ApiTest import ApiTest class TestFindProfilesEndpoint(ApiTest): def test_find_profiles_options(self): response = self.client.options("/users/profiles") self.assertEqual(response.status_code, 200) self.assertIn("Access-Control-Allow-Origin", response.headers) self.assertEqual(response.headers["Access-Control-Allow-Origin"], "*") def test_find_nobody(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?nickname=horsthorsthorst", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertEqual(response.json, {"total": 0, "profiles": []}) def test_find_sql_specialchars(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?nickname=%22%27%25", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertEqual(response.json, {"total": 0, "profiles": []}) def test_find_all(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 4}, response.json) self.assertDictContainsSubset({"nickname": "dirtydieter"}, response.json["profiles"][0]) self.assertDictContainsSubset({"nickname": "jutta"}, response.json["profiles"][1]) self.assertDictContainsSubset({"nickname": "giesela"}, response.json["profiles"][2]) self.assertDictContainsSubset({"nickname": "monique"}, response.json["profiles"][3]) def test_find_dieter(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?search=dieter%20php", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 1}, response.json) self.assertDictContainsSubset({"nickname": "dirtydieter"}, response.json["profiles"][0]) def test_not_find_dieter(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?search=dieter%20sqlite", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 0}, response.json) def test_find_sql(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?search=sql", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 2}, response.json) self.assertDictContainsSubset({"nickname": "jutta"}, response.json["profiles"][0]) self.assertDictContainsSubset({"nickname": "giesela"}, response.json["profiles"][1]) def test_find_postgres(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?search=post", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 2}, response.json) self.assertDictContainsSubset({"nickname": "jutta"}, response.json["profiles"][0]) self.assertDictContainsSubset({"nickname": "giesela"}, response.json["profiles"][1]) def test_find_php_franzosen(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?search=php%20franz", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 1}, response.json) self.assertDictContainsSubset({"nickname": "jutta"}, response.json["profiles"][0]) def test_find_franzosen(self): token = self.login("peter", "geheim")["token"] response = self.client.get("/users/profiles?search=französisch", headers={"Authorization": "Bearer " + token}) self.assertEqual(response.status_code, 200) self.assertDictContainsSubset({"total": 2}, response.json) self.assertDictContainsSubset({"nickname": "jutta"}, response.json["profiles"][0]) self.assertDictContainsSubset({"nickname": "monique"}, response.json["profiles"][1]) if __name__ == "main": unittest.main()