This event informs the player what their ID and their name is. It's
significant to tell them their own name because it may be provided
from the server session (obtained by a cookie from the client).
This commit includes a test case which uses the existing /profile
endpoint to set a name, and then verifies that that name is returned
in the player-info event.
node_modules
game.html
lmno-config.json
node_modules
game.html
lmno-config.json
});
response.write(`event: game-info\ndata: ${game_info_json}\n\n`);
});
response.write(`event: game-info\ndata: ${game_info_json}\n\n`);
+ /* And the player-info event. */
+ response.write(`event: player-info\ndata: ${player.info_json()}\n\n`);
+
/* Finally, if this game class has a "state" property, stream that
* current state to the client. */
if (this.state) {
/* Finally, if this game class has a "state" property, stream that
* current state to the client. */
if (this.state) {
-# Post to a URL endpoint with optional JSON data
+# POST to a URL endpoint with optional JSON data
-# curl_post <ENDPOINT> [data]
+# curl_post <ENDPOINT> [data] [CURL_OPTIONS]
- $CURL -X POST ${2:+-H 'Content-Type: application/json' -d "$2"} $URL/$1
+ $CURL ${3:-} -X POST ${2:+-H 'Content-Type: application/json' -d "$2"} $URL/$1
-# Get form a URL endpoint
+# PUT to a URL endpoint with optional JSON data
+# curl_post <ENDPOINT> [data] [CURL_OPTIONS]
+curl_put()
+{
+ $CURL ${3:-} -X PUT ${2:+-H 'Content-Type: application/json' -d "$2"} $URL/$1
+}
+
+# GET from a URL endpoint
+#
+# Usage:
+#
+# curl_get <ENDPOINT> [CURL_OPTIONS]
}
# Create a new game of the specified engine type
}
# Create a new game of the specified engine type
curl_post $tictactoe_game_path/move "{ \"move\": $1 }"
}
curl_post $tictactoe_game_path/move "{ \"move\": $1 }"
}
+lmno_profile()
+{
+ curl_put /profile "{ \"nickname\": \"$1\" }" "-c .test-cookie"
+}
+
+tictactoe_player_info()
+{
+ curl_get $tictactoe_game_path/events "-m 0.1 -b .test-cookie" 2>&1 \
+ | grep player-info -A 1 \
+ | grep ^data
+}
+
+TEST_SUBSECTION "Tic Tac Toe player-info"
+
+TEST "Hit LMNO /profile to set name to 'curl'"
+lmno_profile curl
+TEST_END
+
+TEST "Verify player-info event reports 'curl' name"
+result=$(tictactoe_player_info)
+test "$result" = 'data: {"id":1,"name":"curl"}'
+TEST_END
+
TEST_SUBSECTION "Tic Tac Toe /move"
TEST "Move to the center square"
TEST_SUBSECTION "Tic Tac Toe /move"
TEST "Move to the center square"