-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tester and Admin should be able to enroll/play competitive mode games outside of the registration/execution period #236
Comments
sei-bstein
added a commit
that referenced
this issue
Aug 25, 2023
Merged
sei-jbooz
pushed a commit
that referenced
this issue
Sep 12, 2023
* Refactor - move SimpleEntity into Gameboard.Api.Features.Common. * Don't bootstrap JobsService in integration test env * Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182. * Server-side hardening for illegal mime type upload. Removed bare repositories. Updated recommended extensions. * Add improved file upload validation. Add editor config to suppress private member warnings. * Update unit tests * Remove server-side html escaping of user input (handled client side). * Resolved an issue that prevented assignees from being display in the support ticket list. * Remove unnecessary dependency injection from the app hub. * Fix build error in ticket service * Update GH actions config for correct solutions file config. * Remove unused property of game model * Allow API key authentication to resolve grader keys as well as standard user api keys. - Moved GetUserFromApiKey to service level - Added tests to verify resolution of user and grader keys - Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance * set default solution path * Additional test for grader/apikey authentication. * Revert "Additional test for grader/apikey authentication." This reverts commit b75727d. * Additional test for grader api key resolution. * Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user. * Remove incorrect tests * Set default topo timeout to 300 sec (up from 100). * Addresses #236 along with a sister commit in GBUI. * Remove designer from role list for admin enroll.
sei-jbooz
pushed a commit
that referenced
this issue
Sep 15, 2023
* Refactor - move SimpleEntity into Gameboard.Api.Features.Common. * Don't bootstrap JobsService in integration test env * Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182. * Server-side hardening for illegal mime type upload. Removed bare repositories. Updated recommended extensions. * Add improved file upload validation. Add editor config to suppress private member warnings. * Update unit tests * Remove server-side html escaping of user input (handled client side). * Resolved an issue that prevented assignees from being display in the support ticket list. * Remove unnecessary dependency injection from the app hub. * Fix build error in ticket service * Update GH actions config for correct solutions file config. * Remove unused property of game model * Allow API key authentication to resolve grader keys as well as standard user api keys. - Moved GetUserFromApiKey to service level - Added tests to verify resolution of user and grader keys - Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance * set default solution path * Additional test for grader/apikey authentication. * Revert "Additional test for grader/apikey authentication." This reverts commit b75727d. * Additional test for grader api key resolution. * Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user. * Remove incorrect tests * Set default topo timeout to 300 sec (up from 100). * Addresses #236 along with a sister commit in GBUI. * Remove designer from role list for admin enroll. * Cleanup * Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones. * Tone down EF query logging in non-prod environments. * Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit. * Update test signatures * Make practice mode gamespace limit eval use common logic with competitive. * Add logging messages for EF logging configuration (loggingception) * Add logger to datastartupextensions * Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls) * Fix expected exception in player unenroll tests * Code cleanup * Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart. * Improvements to ef logging structure. * Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion. * Correct use of .First * Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior) * Return game challenge specs in alpha order. * Guard against null sponsors in team summary
Merged
sei-jbooz
pushed a commit
that referenced
this issue
Oct 5, 2023
v3.11.0-beta0 * More iteration on reports revamp * Checkpoint for reports revamp * More reports backend * Use challenge specs instead of challenges for reporting. * More reports plumbing * More report plumbing * Add support report to db * Work on support report * Polishing support report * Add reports and initial unit tests * More work on reports * Refactor - move SimpleEntity into Gameboard.Api.Features.Common. * Don't bootstrap JobsService in integration test env * Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182. * Add registration date range to challenges report * Fix player report bugs * Server-side hardening for illegal mime type upload. Removed bare repositories. Updated recommended extensions. * Add improved file upload validation. Add editor config to suppress private member warnings. * Update unit tests * Remove server-side html escaping of user input (handled client side). * Resolved an issue that prevented assignees from being display in the support ticket list. * Remove unnecessary dependency injection from the app hub. * Fix build error in ticket service * Fix merge issue from main * Resolve changes from the merge * Initial version of enrollment report and refactor * Add minimal unit tests for enrollment report * Additional refinements to enrollment report * Remove gamebrain schema generator (no longer needed) * Add WhenCreated to player table. * Added export for enrollment report. * Remove unnecessary pragma warning for new C# tools, unbreak player service tests. * More work on enrollment report * Clarify comments on Enrollment report query * Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates. * Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export. * Refactor of practice backend * Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196. * Rename reports folder * Add tests for query extensions * Started work on practice report * Code cleanup * Fix failing integration tests * Fix a bug with date processing for the enrollment report * Work on practice mode report * Add metadata query * Improvements to practice report * Update practice report models * Add player performance tab to practice mode report * Wrapping up a draft of practice mode * Fix integration test issues * Direct dotnet restore command in Github Action to src * Update GH actions config for correct solutions file config. * Delete extra sln file * Fix stackoverflow in captain resolution * Improvements to support report and solution tooling. * Improvements to support report filters * Code cleanup in engine service * Automatically sort string filters for reports * fixed an issue with the sponsor filter on the enrollment report * Guard against orphaned specIds in the practice mode report * Add games filter to enrollment service. * Guard against unexpected nulls in practice mode report * Guard against unexpected sponsor nulls in practice mode report * Fix criteria processing for practice mode report * PlayerMode to challenges - Add "PlayerMode" to challenges. Resolves #218 - Sort support service by created date by default. * Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one. * Code cleanup in game engine service * Code cleanup * Fix PlayerService constructor signature to remove unused injections * Code cleanup * Align parameter names * Add stat summary for enrollment report * Code cleanup * Fix build * Guard against null sponsors in enrollment report. Hide practice games on home screen. * Present percentile for Practice Mode report as a 0-100 value (up from 0-1). * Add challenge result to practice mode report * Optimize sponsor count stat for the enrollment report * Code cleanup * Remove unused property of game model * Improvements to practice mode workflow (allow detection of active practice session * Change model shape for user active practice challenge. * Enhance information available for an active practice challenge to support new launch path. * Improvement to practice mode/playcomponent * More support for auto-deploy of practice challenges/ new 'play' component. * More work on autolaunch/play component * Finish autolaunch. Resolves #227 * Fix a bug in practice report where player count per sponsor was not computed correctly. * Fix test game engine service interface sig * Fix failing test * Corrected resolution of json options for integration tests. * Code cleanup * Allow API key authentication to resolve grader keys as well as standard user api keys. - Moved GetUserFromApiKey to service level - Added tests to verify resolution of user and grader keys - Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance * set default solution path * Additional test for grader/apikey authentication. * Revert "Additional test for grader/apikey authentication." This reverts commit b75727d. * Additional test for grader api key resolution. * Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user. * Remove incorrect tests * Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive * Add practice admin stuff * Improvements to practice admin * Set default topo timeout to 300 sec (up from 100). * Finished up practice certificates * Fixed broken constructor sig intests * Fixed hours/minutes display for practice certificates and added supporting unit tests. * Always archive team challenges on reset * Removed test (the rule is no longer true) * Playing with various pdf rendering options? * Various code cleanup * Do server-side rendering of certificates in PNG format. * Update tests * Finish server side generation of html for both practice and competitive. * Fix test signatures * Make published certificate collections on User default to empty lists * Bug fixes for various practice mode session end things. * Test fixes * Bug fixes to practice mode. * Addresses #236 along with a sister commit in GBUI. * Fix test types * Update dockerfile for chromium install. * Update Dockerfile - move chromium install to production multistage. * Accommodate docker execution of chromium with --no-sandbox * Disable use of dev shared memory for chromium image generation. * Request full challenge doc from Topomojo during spec sync. * Fix for challenge doc text in practice mode * Try wkhtmltopdf as alternate image generation tool. * Use correct version of wkhtmltopdf binary * DB changes for require sponsor * Remove stray pdf * Decrease quality of images rendered by wkhtmltoimage * Set wkhtmltoimage quality to 30 * Rename player-facing 'Practice Mode' to 'Practice Area' * Fix practice area report routes * Fix count issue on the player prac/competitive report * Fix a count issue on the 'by challenge' grouping of the practice area report. * allow authenticated users to retrieve practice mode settings * Fix grouping issue with per-mode practice area report * Code cleanup * Fix typo in Enrollment report desc * Correct calculation of users per sponsor in Enrollment report. * Change roles who can access reporting. * Improve summary info on report cards to better reflect the corresponding reports. * - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin. - The search box on Challenge Admin now automatically trims whitespace. (Resolves #247) * Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively. * Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report. * Resolved an issue that prevented non-registrars from extending/resetting their practice sessions. * Code cleanup and add dev env logging. * FIxed an issue that prevented the support report's CSV export from working as expected. * Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client. * Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251. * Removed an unnecessary db call from the Enrollment report. * More sponsor fixup * Require sponsor * More work on require sponsor * Prohibit sponsorless players from enrolling in games. * Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also * MOre work on require sponsor schema change. * Remove designer from role list for admin enroll. * More sponsor fixup * More sponsor schema * Finalized user/player sponsor schema changes before fixing tests * Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird * Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions) * Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs. * Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value. * Optimize PG migration and add SQLserver custom migration. * Cleanup * Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones. * Tone down EF query logging in non-prod environments. * Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit. * Update test signatures * Make practice mode gamespace limit eval use common logic with competitive. * Add logging messages for EF logging configuration (loggingception) * Add logger to datastartupextensions * Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls) * Fix expected exception in player unenroll tests * Code cleanup * Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart. * Improvements to ef logging structure. * Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion. * Correct use of .First * Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior) * Return game challenge specs in alpha order. * Code cleanup * Supporting exception architecture for non-null/foreign key sponsors. * Update build task to include all projects. * Clarify default sponsor assignment. * Improvements to specimen builders for integration tests (supporting sponsor changes) * Enable sensitive data logging only in dev * Consolidate data state builder interface. Don't swallow exception on add. * Namespace cleanup * Resolve usercontroll test errors * Updates to tests to use fixture/specimen creation * Revise tests to accommodate non-null sponsors * More work on require sponsor - new schema changes. * More backend for require sponsor - streamlined sponsor API. * Clean up sponsor controller/command architecture. * Update content type validation for sponsors * More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data. * Start on parent sponsor * Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration. * Reshape sponsors endpoints to make more sense. * Fix broken sponsor test * Correct resolution of captain during player enlistment by invitation code. Resolves #194. * Resolves #156 and adds unit tests. * Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway. * Code cleanup * Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on) * Guard against challenges not having players attached by team Id * Ported fix to job service from gamebrain integration branch. Resolves #235. * Add solution guide field for challenge specs (for practice mode). Resolves #234. * Add extra logging for API failures during sync. * Add suggested searches to practice area. Resolves #233. * Add challenge search by playerId. Resolves #263. * Also search challenges by TeamID * Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213. * Extend fix for #213 to practice.
sei-jbooz
pushed a commit
that referenced
this issue
Oct 6, 2023
* More reports backend * Use challenge specs instead of challenges for reporting. * More reports plumbing * More report plumbing * Add support report to db * Work on support report * Polishing support report * Add reports and initial unit tests * More work on reports * Refactor - move SimpleEntity into Gameboard.Api.Features.Common. * Don't bootstrap JobsService in integration test env * Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182. * Add registration date range to challenges report * Fix player report bugs * Server-side hardening for illegal mime type upload. Removed bare repositories. Updated recommended extensions. * Add improved file upload validation. Add editor config to suppress private member warnings. * Update unit tests * Remove server-side html escaping of user input (handled client side). * Resolved an issue that prevented assignees from being display in the support ticket list. * Remove unnecessary dependency injection from the app hub. * Fix build error in ticket service * Fix merge issue from main * Resolve changes from the merge * Initial version of enrollment report and refactor * Add minimal unit tests for enrollment report * Additional refinements to enrollment report * Remove gamebrain schema generator (no longer needed) * Add WhenCreated to player table. * Added export for enrollment report. * Remove unnecessary pragma warning for new C# tools, unbreak player service tests. * More work on enrollment report * Clarify comments on Enrollment report query * Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates. * Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export. * Refactor of practice backend * Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196. * Rename reports folder * Add tests for query extensions * Started work on practice report * Code cleanup * Fix failing integration tests * Fix a bug with date processing for the enrollment report * Work on practice mode report * Add metadata query * Improvements to practice report * Update practice report models * Add player performance tab to practice mode report * Wrapping up a draft of practice mode * Fix integration test issues * Direct dotnet restore command in Github Action to src * Update GH actions config for correct solutions file config. * Delete extra sln file * Fix stackoverflow in captain resolution * Improvements to support report and solution tooling. * Improvements to support report filters * Code cleanup in engine service * Automatically sort string filters for reports * fixed an issue with the sponsor filter on the enrollment report * Guard against orphaned specIds in the practice mode report * Add games filter to enrollment service. * Guard against unexpected nulls in practice mode report * Guard against unexpected sponsor nulls in practice mode report * Fix criteria processing for practice mode report * PlayerMode to challenges - Add "PlayerMode" to challenges. Resolves #218 - Sort support service by created date by default. * Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one. * Code cleanup in game engine service * Code cleanup * Fix PlayerService constructor signature to remove unused injections * Code cleanup * Align parameter names * Add stat summary for enrollment report * Code cleanup * Fix build * Guard against null sponsors in enrollment report. Hide practice games on home screen. * Present percentile for Practice Mode report as a 0-100 value (up from 0-1). * Add challenge result to practice mode report * Optimize sponsor count stat for the enrollment report * Code cleanup * Remove unused property of game model * Improvements to practice mode workflow (allow detection of active practice session * Change model shape for user active practice challenge. * Enhance information available for an active practice challenge to support new launch path. * Improvement to practice mode/playcomponent * More support for auto-deploy of practice challenges/ new 'play' component. * More work on autolaunch/play component * Finish autolaunch. Resolves #227 * Fix a bug in practice report where player count per sponsor was not computed correctly. * Fix test game engine service interface sig * Fix failing test * Corrected resolution of json options for integration tests. * Code cleanup * Allow API key authentication to resolve grader keys as well as standard user api keys. - Moved GetUserFromApiKey to service level - Added tests to verify resolution of user and grader keys - Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance * set default solution path * Additional test for grader/apikey authentication. * Revert "Additional test for grader/apikey authentication." This reverts commit b75727d. * Additional test for grader api key resolution. * Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user. * Remove incorrect tests * Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive * Add practice admin stuff * Improvements to practice admin * Set default topo timeout to 300 sec (up from 100). * Finished up practice certificates * Fixed broken constructor sig intests * Fixed hours/minutes display for practice certificates and added supporting unit tests. * Always archive team challenges on reset * Removed test (the rule is no longer true) * Playing with various pdf rendering options? * Various code cleanup * Do server-side rendering of certificates in PNG format. * Update tests * Finish server side generation of html for both practice and competitive. * Fix test signatures * Make published certificate collections on User default to empty lists * Bug fixes for various practice mode session end things. * Test fixes * Bug fixes to practice mode. * Addresses #236 along with a sister commit in GBUI. * Fix test types * Update dockerfile for chromium install. * Update Dockerfile - move chromium install to production multistage. * Accommodate docker execution of chromium with --no-sandbox * Disable use of dev shared memory for chromium image generation. * Request full challenge doc from Topomojo during spec sync. * Fix for challenge doc text in practice mode * Try wkhtmltopdf as alternate image generation tool. * Use correct version of wkhtmltopdf binary * DB changes for require sponsor * Remove stray pdf * Decrease quality of images rendered by wkhtmltoimage * Set wkhtmltoimage quality to 30 * Rename player-facing 'Practice Mode' to 'Practice Area' * Fix practice area report routes * Fix count issue on the player prac/competitive report * Fix a count issue on the 'by challenge' grouping of the practice area report. * allow authenticated users to retrieve practice mode settings * Fix grouping issue with per-mode practice area report * Code cleanup * Fix typo in Enrollment report desc * Correct calculation of users per sponsor in Enrollment report. * Change roles who can access reporting. * Improve summary info on report cards to better reflect the corresponding reports. * - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin. - The search box on Challenge Admin now automatically trims whitespace. (Resolves #247) * Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively. * Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report. * Resolved an issue that prevented non-registrars from extending/resetting their practice sessions. * Code cleanup and add dev env logging. * FIxed an issue that prevented the support report's CSV export from working as expected. * Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client. * Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251. * Removed an unnecessary db call from the Enrollment report. * More sponsor fixup * Require sponsor * More work on require sponsor * Prohibit sponsorless players from enrolling in games. * Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also * MOre work on require sponsor schema change. * Remove designer from role list for admin enroll. * More sponsor fixup * More sponsor schema * Finalized user/player sponsor schema changes before fixing tests * Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird * Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions) * Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs. * Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value. * Optimize PG migration and add SQLserver custom migration. * Cleanup * Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones. * Tone down EF query logging in non-prod environments. * Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit. * Update test signatures * Make practice mode gamespace limit eval use common logic with competitive. * Add logging messages for EF logging configuration (loggingception) * Add logger to datastartupextensions * Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls) * Fix expected exception in player unenroll tests * Code cleanup * Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart. * Improvements to ef logging structure. * Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion. * Correct use of .First * Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior) * Return game challenge specs in alpha order. * Code cleanup * Supporting exception architecture for non-null/foreign key sponsors. * Update build task to include all projects. * Clarify default sponsor assignment. * Improvements to specimen builders for integration tests (supporting sponsor changes) * Enable sensitive data logging only in dev * Consolidate data state builder interface. Don't swallow exception on add. * Namespace cleanup * Resolve usercontroll test errors * Updates to tests to use fixture/specimen creation * Revise tests to accommodate non-null sponsors * More work on require sponsor - new schema changes. * More backend for require sponsor - streamlined sponsor API. * Clean up sponsor controller/command architecture. * Update content type validation for sponsors * More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data. * Start on parent sponsor * Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration. * Reshape sponsors endpoints to make more sense. * Fix broken sponsor test * Correct resolution of captain during player enlistment by invitation code. Resolves #194. * Resolves #156 and adds unit tests. * Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway. * Code cleanup * Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on) * Guard against challenges not having players attached by team Id * Ported fix to job service from gamebrain integration branch. Resolves #235. * Add solution guide field for challenge specs (for practice mode). Resolves #234. * Add extra logging for API failures during sync. * Add suggested searches to practice area. Resolves #233. * Add challenge search by playerId. Resolves #263. * Also search challenges by TeamID * Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213. * Extend fix for #213 to practice. * Resolve an issue that was causing overcorrection of absolute urls in challenge docs. * Update gitignore * Add toggle to allow display of solution guides in competitive mode. Always show the solution guide input in admin.
Merged
sei-jbooz
pushed a commit
that referenced
this issue
Oct 6, 2023
* Use challenge specs instead of challenges for reporting. * More reports plumbing * More report plumbing * Add support report to db * Work on support report * Polishing support report * Add reports and initial unit tests * More work on reports * Refactor - move SimpleEntity into Gameboard.Api.Features.Common. * Don't bootstrap JobsService in integration test env * Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182. * Add registration date range to challenges report * Fix player report bugs * Server-side hardening for illegal mime type upload. Removed bare repositories. Updated recommended extensions. * Add improved file upload validation. Add editor config to suppress private member warnings. * Update unit tests * Remove server-side html escaping of user input (handled client side). * Resolved an issue that prevented assignees from being display in the support ticket list. * Remove unnecessary dependency injection from the app hub. * Fix build error in ticket service * Fix merge issue from main * Resolve changes from the merge * Initial version of enrollment report and refactor * Add minimal unit tests for enrollment report * Additional refinements to enrollment report * Remove gamebrain schema generator (no longer needed) * Add WhenCreated to player table. * Added export for enrollment report. * Remove unnecessary pragma warning for new C# tools, unbreak player service tests. * More work on enrollment report * Clarify comments on Enrollment report query * Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates. * Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export. * Refactor of practice backend * Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196. * Rename reports folder * Add tests for query extensions * Started work on practice report * Code cleanup * Fix failing integration tests * Fix a bug with date processing for the enrollment report * Work on practice mode report * Add metadata query * Improvements to practice report * Update practice report models * Add player performance tab to practice mode report * Wrapping up a draft of practice mode * Fix integration test issues * Direct dotnet restore command in Github Action to src * Update GH actions config for correct solutions file config. * Delete extra sln file * Fix stackoverflow in captain resolution * Improvements to support report and solution tooling. * Improvements to support report filters * Code cleanup in engine service * Automatically sort string filters for reports * fixed an issue with the sponsor filter on the enrollment report * Guard against orphaned specIds in the practice mode report * Add games filter to enrollment service. * Guard against unexpected nulls in practice mode report * Guard against unexpected sponsor nulls in practice mode report * Fix criteria processing for practice mode report * PlayerMode to challenges - Add "PlayerMode" to challenges. Resolves #218 - Sort support service by created date by default. * Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one. * Code cleanup in game engine service * Code cleanup * Fix PlayerService constructor signature to remove unused injections * Code cleanup * Align parameter names * Add stat summary for enrollment report * Code cleanup * Fix build * Guard against null sponsors in enrollment report. Hide practice games on home screen. * Present percentile for Practice Mode report as a 0-100 value (up from 0-1). * Add challenge result to practice mode report * Optimize sponsor count stat for the enrollment report * Code cleanup * Remove unused property of game model * Improvements to practice mode workflow (allow detection of active practice session * Change model shape for user active practice challenge. * Enhance information available for an active practice challenge to support new launch path. * Improvement to practice mode/playcomponent * More support for auto-deploy of practice challenges/ new 'play' component. * More work on autolaunch/play component * Finish autolaunch. Resolves #227 * Fix a bug in practice report where player count per sponsor was not computed correctly. * Fix test game engine service interface sig * Fix failing test * Corrected resolution of json options for integration tests. * Code cleanup * Allow API key authentication to resolve grader keys as well as standard user api keys. - Moved GetUserFromApiKey to service level - Added tests to verify resolution of user and grader keys - Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance * set default solution path * Additional test for grader/apikey authentication. * Revert "Additional test for grader/apikey authentication." This reverts commit b75727d. * Additional test for grader api key resolution. * Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user. * Remove incorrect tests * Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive * Add practice admin stuff * Improvements to practice admin * Set default topo timeout to 300 sec (up from 100). * Finished up practice certificates * Fixed broken constructor sig intests * Fixed hours/minutes display for practice certificates and added supporting unit tests. * Always archive team challenges on reset * Removed test (the rule is no longer true) * Playing with various pdf rendering options? * Various code cleanup * Do server-side rendering of certificates in PNG format. * Update tests * Finish server side generation of html for both practice and competitive. * Fix test signatures * Make published certificate collections on User default to empty lists * Bug fixes for various practice mode session end things. * Test fixes * Bug fixes to practice mode. * Addresses #236 along with a sister commit in GBUI. * Fix test types * Update dockerfile for chromium install. * Update Dockerfile - move chromium install to production multistage. * Accommodate docker execution of chromium with --no-sandbox * Disable use of dev shared memory for chromium image generation. * Request full challenge doc from Topomojo during spec sync. * Fix for challenge doc text in practice mode * Try wkhtmltopdf as alternate image generation tool. * Use correct version of wkhtmltopdf binary * DB changes for require sponsor * Remove stray pdf * Decrease quality of images rendered by wkhtmltoimage * Set wkhtmltoimage quality to 30 * Rename player-facing 'Practice Mode' to 'Practice Area' * Fix practice area report routes * Fix count issue on the player prac/competitive report * Fix a count issue on the 'by challenge' grouping of the practice area report. * allow authenticated users to retrieve practice mode settings * Fix grouping issue with per-mode practice area report * Code cleanup * Fix typo in Enrollment report desc * Correct calculation of users per sponsor in Enrollment report. * Change roles who can access reporting. * Improve summary info on report cards to better reflect the corresponding reports. * - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin. - The search box on Challenge Admin now automatically trims whitespace. (Resolves #247) * Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively. * Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report. * Resolved an issue that prevented non-registrars from extending/resetting their practice sessions. * Code cleanup and add dev env logging. * FIxed an issue that prevented the support report's CSV export from working as expected. * Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client. * Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251. * Removed an unnecessary db call from the Enrollment report. * More sponsor fixup * Require sponsor * More work on require sponsor * Prohibit sponsorless players from enrolling in games. * Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also * MOre work on require sponsor schema change. * Remove designer from role list for admin enroll. * More sponsor fixup * More sponsor schema * Finalized user/player sponsor schema changes before fixing tests * Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird * Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions) * Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs. * Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value. * Optimize PG migration and add SQLserver custom migration. * Cleanup * Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones. * Tone down EF query logging in non-prod environments. * Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit. * Update test signatures * Make practice mode gamespace limit eval use common logic with competitive. * Add logging messages for EF logging configuration (loggingception) * Add logger to datastartupextensions * Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls) * Fix expected exception in player unenroll tests * Code cleanup * Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart. * Improvements to ef logging structure. * Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion. * Correct use of .First * Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior) * Return game challenge specs in alpha order. * Code cleanup * Supporting exception architecture for non-null/foreign key sponsors. * Update build task to include all projects. * Clarify default sponsor assignment. * Improvements to specimen builders for integration tests (supporting sponsor changes) * Enable sensitive data logging only in dev * Consolidate data state builder interface. Don't swallow exception on add. * Namespace cleanup * Resolve usercontroll test errors * Updates to tests to use fixture/specimen creation * Revise tests to accommodate non-null sponsors * More work on require sponsor - new schema changes. * More backend for require sponsor - streamlined sponsor API. * Clean up sponsor controller/command architecture. * Update content type validation for sponsors * More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data. * Start on parent sponsor * Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration. * Reshape sponsors endpoints to make more sense. * Fix broken sponsor test * Correct resolution of captain during player enlistment by invitation code. Resolves #194. * Resolves #156 and adds unit tests. * Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway. * Code cleanup * Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on) * Guard against challenges not having players attached by team Id * Ported fix to job service from gamebrain integration branch. Resolves #235. * Add solution guide field for challenge specs (for practice mode). Resolves #234. * Add extra logging for API failures during sync. * Add suggested searches to practice area. Resolves #233. * Add challenge search by playerId. Resolves #263. * Also search challenges by TeamID * Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213. * Extend fix for #213 to practice. * Resolve an issue that was causing overcorrection of absolute urls in challenge docs. * Update gitignore * Add toggle to allow display of solution guides in competitive mode. Always show the solution guide input in admin.
sei-jbooz
pushed a commit
that referenced
this issue
Nov 3, 2023
* Removed test (the rule is no longer true) * Playing with various pdf rendering options? * Various code cleanup * Do server-side rendering of certificates in PNG format. * Update tests * Finish server side generation of html for both practice and competitive. * Fix test signatures * Make published certificate collections on User default to empty lists * Bug fixes for various practice mode session end things. * Test fixes * Bug fixes to practice mode. * Addresses #236 along with a sister commit in GBUI. * Fix test types * Update dockerfile for chromium install. * Update Dockerfile - move chromium install to production multistage. * Accommodate docker execution of chromium with --no-sandbox * Disable use of dev shared memory for chromium image generation. * Request full challenge doc from Topomojo during spec sync. * Fix for challenge doc text in practice mode * Try wkhtmltopdf as alternate image generation tool. * Use correct version of wkhtmltopdf binary * DB changes for require sponsor * Remove stray pdf * Decrease quality of images rendered by wkhtmltoimage * Set wkhtmltoimage quality to 30 * Rename player-facing 'Practice Mode' to 'Practice Area' * Fix practice area report routes * Fix count issue on the player prac/competitive report * Fix a count issue on the 'by challenge' grouping of the practice area report. * allow authenticated users to retrieve practice mode settings * Fix grouping issue with per-mode practice area report * Code cleanup * Fix typo in Enrollment report desc * Correct calculation of users per sponsor in Enrollment report. * Change roles who can access reporting. * Improve summary info on report cards to better reflect the corresponding reports. * - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin. - The search box on Challenge Admin now automatically trims whitespace. (Resolves #247) * Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively. * Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report. * Resolved an issue that prevented non-registrars from extending/resetting their practice sessions. * Code cleanup and add dev env logging. * FIxed an issue that prevented the support report's CSV export from working as expected. * Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client. * Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251. * Removed an unnecessary db call from the Enrollment report. * More sponsor fixup * Require sponsor * More work on require sponsor * Prohibit sponsorless players from enrolling in games. * Sync start games with no players are no longer sync-start ready. Exception will throw if game is started with no players. * Code cleanup * Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also * MOre work on require sponsor schema change. * Remove designer from role list for admin enroll. * More sponsor fixup * Restore game end date on failed deploy. * Fix an issue where ChallengeService wasn't respecting the StartGamespace flag. * ACTUALLY respect StartGamespace flag (in GameEngine service. * ACTUALLY respect StartGamespace flag (in GameEngineService). * More sponsor schema * Finalized user/player sponsor schema changes before fixing tests * Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird * Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions) * Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs. * Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value. * Optimize PG migration and add SQLserver custom migration. * Cleanup * Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones. * Code cleanup * Fixed a bug that could prevent cleanup of a challenge with a bad teamid. Added logging to challenge archiving. * Tone down EF query logging in non-prod environments. * Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit. * Update test signatures * Make practice mode gamespace limit eval use common logic with competitive. * Add logging messages for EF logging configuration (loggingception) * Add logger to datastartupextensions * Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls) * Fix expected exception in player unenroll tests * Code cleanup * Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart. * Improvements to ef logging structure. * Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion. * Correct use of .First * Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior) * Return game challenge specs in alpha order. * Code cleanup * Supporting exception architecture for non-null/foreign key sponsors. * Update build task to include all projects. * Clarify default sponsor assignment. * Improvements to specimen builders for integration tests (supporting sponsor changes) * Enable sensitive data logging only in dev * Consolidate data state builder interface. Don't swallow exception on add. * Namespace cleanup * Resolve usercontroll test errors * Updates to tests to use fixture/specimen creation * Revise tests to accommodate non-null sponsors * More work on require sponsor - new schema changes. * Unready players on session reset. Resolve issue where challenge state for external games did not include VM data. * More backend for require sponsor - streamlined sponsor API. * Clean up sponsor controller/command architecture. * Update content type validation for sponsors * More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data. * Start on parent sponsor * Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration. * Reshape sponsors endpoints to make more sense. * Fix broken sponsor test * Correct resolution of captain during player enlistment by invitation code. Resolves #194. * Resolves #156 and adds unit tests. * Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway. * Code cleanup * Add logging for challenge service team challenge archive. * Don't depend on HasGamespaceDeployed to attempt challenge and gamespace cleanup. * Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on) * Guard against challenges with players that no longer exist. * Guard against challenges not having players attached by team Id * Ported fix to job service from gamebrain integration branch. Resolves #235. * Add solution guide field for challenge specs (for practice mode). Resolves #234. * Add extra logging for API failures during sync. * Add suggested searches to practice area. Resolves #233. * Merged from next * Fix service registration issues from merge * More merge madness * Add challenge search by playerId. Resolves #263. * Also search challenges by TeamID * Merge corrections * Restore model snapshots after merge * Adjust failing tests * Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213. * Extend fix for #213 to practice. * Fixing merged tests. * Resolve an issue that was causing overcorrection of absolute urls in challenge docs. * Resolving merge conflicts and update collection name for 'publish certificate' to match the domain model. * Update gitignore * Add toggle to allow display of solution guides in competitive mode. Always show the solution guide input in admin. * Merge changes to new request to comply with revised architecture * Fix unit tests * REmove unused variable * Correct mistyped validators * Fix improperly typed validators. * Fix some 'unenroll/session reset' bugs in the new codebase. Rename ResetSession to ResetTeamSession. * Distinguish between update/add on Store service. * Add logging for challenge sync at the info level. * Remove unused validator. * Add tags field to challengespec (need updated topo lib to make tags searchable in practice mode. * bug fixes to automatic bonuses and regrading. * Code cleanup * Bug fixes to autobonus architecture, foundations of new scoreboard * Clarify error message for captain unenroll attempt. * Minor structural updates to external game launch. * Fixed bugs in external game launch start and transactionificated the launch. * Code cleanup and pulled an unused endpoint * Add tags to challenge spec sync from topo and make them searchable in the practice area. Resolves #240. * Remove unused code * Remove unused references from PlayerService * Guard against null TeamId in PlayerService. * Add cleanup of topo gamespaces abandoned by a failed launch. * Complete gamespaces orphaned during external game launch rather than deleting them (due to permissions) * Fix url resolution for VMs in external games. * Fix failing tests * Refactor of end/extend session endpoint architecture to accommodate #217 * Add new consoles endpoint to receive user activity requests from MKS. Supports autoextension of practice challenges (#217) * Allow console access to new consoles controller. * Pull unnecessary injection * Add test and correct bug for non-extending practice sessions. * Handle competitive case in console action autoextend * Remove unnecessary injection * Remove unused file * Fix an issue that caused errors for new Gameboard users who haven't yet been assigned a sponsor. * Start create test * Start unit test for claims transformation. * Finish user claims transformation unit test. * Revise test * Corrected a bug introduced by the merge which made admins unable to approve user name changes. * More work on new scoreboard. * MOre work on scoreboard. * Work on scoring service and correcting an issue which made practice settings not retrievable without auth * Add integration test for player enlist * Clarify comments * additional support for the new scoreboard/scoring infra * Corrected an issue that caused the practice report's summary widget to report the number of sponsors incorrectly. Resolves #271. * Fixed broken integration test * Temporarily set extend threshold for practice at 58 minutes * Temp disable test for demo. * Auto session extend in practice now returns the new session length. * Work on integration tests for grading and ranking. * Add signalR messaging for automatic session extension. Resolves #217. * Fix grading test * Fix failing bonus test. * Correct use of single or default * Added challengespec sync for active or practice challenges on startup. Partially addresses #269, but we can and should eventually do more. * Ensure session extensions don't shorten playtime. * Fixed a merge-related issue that caused the client to claim that an administrator reset the session (when really the user did) * Fix a bug in score reporting for teams * Correct score tests to use appropriate field. * Send gamespace start notifications to the game hub. * Change external game mode start state to indicate gamespaces starte rather than deployed. * Rename the active challenge spec sync startup function to be more general in case we need it for other stuff. * Added a service to manage fire-forget tasks (like external game deploy, challenge spec sync, etc. * Added validation during enlist that ensures the player has selected a sponsor. Resolves #261. * Remove unused namespace * Added fire+forget for external launch and batch deploy. Fire and forget still needs a resolution for http context. * Add logging on console access attempt. * Code cleanup * Guard against null teamIds in enrollment report. * Add tests for batch deploy of external game resources. * Fixed an issue that prevented player scores, ranks, and challenge completion counts not to be zeroed when their session is reset but not unenrolled. * Guard against legacy null teamIds in players table. * Code cleanup * Set default external game deploy batch size to 2 and disable it until I can test with access to Topo. * Added additional logging for gamespace batching. * Tweaking use of ienumerable in ExternalGameSyncSTartService to see if it affects deploy speed. * Add debugging batch index * Pull async deploy for now since we haven't used it successfully yet. * Test new batch size and coerce ienumerables to arrays from the batching service. * Reset external game batch settings. Not ready for primetime. * If attempting to sync an expired challenge yields a 400-level error, just mark it as synced so we don't try again. * Fixed an issue where a legacy gamebrain call was prepending a configurable startup URL for the new mode. * Resolved an issue with the old scoreboard displaying sponsors incorrectly.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As a user of gameboard with the
tester
role, I would like to test challenges which are added to competitive mode games before those games are inside of the execution period.The text was updated successfully, but these errors were encountered: