diff --git a/go-socket b/go-socket index d298d77..a65b77c 100755 Binary files a/go-socket and b/go-socket differ diff --git a/http.go b/http.go index 7c40044..b3c9398 100644 --- a/http.go +++ b/http.go @@ -339,7 +339,7 @@ func HttpHandleNewMessage(response http.ResponseWriter, request *http.Request) { response.Write([]byte("sent")) } -func HttpHandleGroupsGeWithoutMembers(response http.ResponseWriter, request *http.Request) { +func HttpHandleGroupsGetWithoutMembers(response http.ResponseWriter, request *http.Request) { if !isMethodAllowed(&response, request) { return } diff --git a/main.go b/main.go index 8b13cb6..4afa317 100644 --- a/main.go +++ b/main.go @@ -22,6 +22,8 @@ func main() { http.HandleFunc("/new/group", withCORS(HttpHandeNewGroup)) http.HandleFunc("/mod/group/addclients", withCORS(HttpHandleGroupAddClient)) http.HandleFunc("/new/message", withCORS(HttpHandleNewMessage)) + http.HandleFunc("/get/groups", withCORS(HttpHandleGroupsGetWithoutMembers)) + http.HandleFunc("/get/groupmembers", withCORS(HttpHandleGroupMembersGet)) http.HandleFunc("/ws", ServeWsConnection) log.Println("listening on :8080") diff --git a/tests/.state b/tests/.state index e60a2c4..cf8e299 100644 --- a/tests/.state +++ b/tests/.state @@ -1,5 +1,5 @@ -TOKEN1=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzc0ODc4MDY0LCJpYXQiOjE3NzQ4NzQ0NjR9.6X3z9j0z8USHh7GLKGWETr25_3Cqo9X9ZEfuhXIgePI +TOKEN1=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzc1MDM3Mzc3LCJpYXQiOjE3NzUwMzM3Nzd9.BIZm-58PtXm13_q5O5M7B7YFjmYZFG0hE615POZ8xhY USER1_ID=1 -TOKEN2=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyIiwiZXhwIjoxNzc0ODc4MDY0LCJpYXQiOjE3NzQ4NzQ0NjR9.DCLl1_8VB1nCARc1c4eXpgUt8fzTjzw4KZNOjHv_bdY +TOKEN2=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyIiwiZXhwIjoxNzc1MDM3Mzc3LCJpYXQiOjE3NzUwMzM3Nzd9.mUEEqxtbmmjwICEb_y2LhknR_I7Cis-5kSscm6it5bY USER2_ID=2 -GROUP_ID=1 +GROUP_ID=2 diff --git a/tests/07_get_groups.sh b/tests/07_get_groups.sh new file mode 100755 index 0000000..f304250 --- /dev/null +++ b/tests/07_get_groups.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# Get groups for both users +source "$(dirname "$0")/config.sh" + +TOKEN1=$(load_state "TOKEN1") +TOKEN2=$(load_state "TOKEN2") + +if [[ -z "$TOKEN1" || -z "$TOKEN2" ]]; then + echo "ERROR: Missing tokens. Run 02_login.sh first." + exit 1 +fi + +echo "=== Getting groups for user1 ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groups" \ + -d "token=$TOKEN1") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "202" ]]; then + echo "FAIL: Expected HTTP 202, got $CODE" + exit 1 +fi + +echo "" +echo "=== Getting groups for user2 ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groups" \ + -d "token=$TOKEN2") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "202" ]]; then + echo "FAIL: Expected HTTP 202, got $CODE" + exit 1 +fi + +echo "" +echo "=== Getting groups with invalid token ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groups" \ + -d "token=invalid_token") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "401" ]]; then + echo "FAIL: Expected HTTP 401, got $CODE" + exit 1 +fi + +echo "" +echo "ALL PASSED" diff --git a/tests/08_get_group_members.sh b/tests/08_get_group_members.sh new file mode 100755 index 0000000..98ac632 --- /dev/null +++ b/tests/08_get_group_members.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# Get group members +source "$(dirname "$0")/config.sh" + +TOKEN1=$(load_state "TOKEN1") +TOKEN2=$(load_state "TOKEN2") +GROUP_ID=$(load_state "GROUP_ID") + +if [[ -z "$TOKEN1" || -z "$TOKEN2" || -z "$GROUP_ID" ]]; then + echo "ERROR: Missing state. Run previous scripts first." + echo " TOKEN1=$TOKEN1" + echo " TOKEN2=$TOKEN2" + echo " GROUP_ID=$GROUP_ID" + exit 1 +fi + +echo "=== Getting members of group $GROUP_ID as user1 (owner) ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groupmembers" \ + -d "token=$TOKEN1" \ + -d "group=$GROUP_ID") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "202" ]]; then + echo "FAIL: Expected HTTP 202, got $CODE" + exit 1 +fi + +echo "" +echo "=== Getting members of group $GROUP_ID as user2 (member) ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groupmembers" \ + -d "token=$TOKEN2" \ + -d "group=$GROUP_ID") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "202" ]]; then + echo "FAIL: Expected HTTP 202, got $CODE" + exit 1 +fi + +echo "" +echo "=== Getting members with invalid token ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groupmembers" \ + -d "token=invalid_token" \ + -d "group=$GROUP_ID") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "401" ]]; then + echo "FAIL: Expected HTTP 401, got $CODE" + exit 1 +fi + +echo "" +echo "=== Getting members with invalid group ID ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groupmembers" \ + -d "token=$TOKEN1" \ + -d "group=abc") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "400" ]]; then + echo "FAIL: Expected HTTP 400, got $CODE" + exit 1 +fi + +echo "" +echo "=== Getting members of non-existent group ===" +RESP=$(curl -s -w "\n%{http_code}" -X POST "$BASE_URL/get/groupmembers" \ + -d "token=$TOKEN1" \ + -d "group=999999") +BODY=$(echo "$RESP" | head -1) +CODE=$(echo "$RESP" | tail -1) +echo "Response: $BODY (HTTP $CODE)" + +if [[ "$CODE" != "401" ]]; then + echo "FAIL: Expected HTTP 401, got $CODE" + exit 1 +fi + +echo "" +echo "ALL PASSED" diff --git a/tests/run_all.sh b/tests/run_all.sh index 6271f23..e6f2d84 100755 --- a/tests/run_all.sh +++ b/tests/run_all.sh @@ -43,6 +43,18 @@ echo "=============================" bash "$DIR/06_send_message_reverse.sh" echo "" +echo "=============================" +echo " Step 7: Get groups" +echo "=============================" +bash "$DIR/07_get_groups.sh" +echo "" + +echo "=============================" +echo " Step 8: Get group members" +echo "=============================" +bash "$DIR/08_get_group_members.sh" +echo "" + echo "=============================" echo " Cleanup" echo "============================="