Commit Graph
401 Commits
Author SHA1 Message Date
Cooldude2606 e4f0ab1e8f Merge branch 'master' into feature/2.0-scenarios 2024-11-22 13:36:33 +00:00
Cooldude2606 d80385c947 Add test for user merging 2024-11-22 04:06:34 -08:00
Cooldude2606 bdf02a5ea2 Made user ids case insensitive 2024-11-22 04:06:34 -08:00
Cooldude2606 c5841b17a0 Add tests for new config value 2024-11-21 08:46:22 -08:00
Cooldude2606 1556c0afdd Enable source maps in tests 2024-11-21 08:25:23 -08:00
Cooldude2606 4ef930c08c Add file excluded by gitignore 2024-11-13 22:29:21 +00:00
Cooldude2606 3850558d49 Add and fix tests 2024-11-13 22:17:27 +00:00
Cooldude2606 ace8356f68 Merge pull request #679 from Cooldude2606/fix/whitelist-remove
Fix whitelist remove command with tests. Tests check that set-banned and set-whitelist will send rcon commands to running instances and that it is case insensitive.
2024-11-01 01:29:10 +00:00
Cooldude2606 f6a40baa55 Added tests for banlist/whitelist rcon commands.
Tests check that set-banned and set-whitelist will send rcon commands to running instances and that it is case insensitive.
2024-10-31 16:02:12 +00:00
Cooldude2606 ef6861a566 Fixed host tests not checking the message was valid 2024-10-29 00:59:17 +00:00
Hornwitser 60e5ed008d Fix unhandled promise rejection in Link tests 2024-10-28 20:15:33 +01:00
Hornwitser 34da073800 Fix setting instance config fields not being saved
If only the config of an instance is updated the dirty flag of the
instance is not set, which results in changes being discarded when the
controller shuts down afterwards.

Fix by always triggering the update logic when an instance field is
changed.
2024-10-28 19:30:03 +01:00
Cooldude2606 8a47fd8414 Update tests 2024-09-21 18:09:29 +01:00
Hornwitser eedf5b8f67 Credential option for config entries
Implement a credential option to config entries which is a list of
locations the config entry can be read from.  When specified and the
option is a string field this gets rendered as a password field in the
config UI.  If the credential is not readable from control the value of
the fields is cleared when the UI is refreshed.
2024-09-16 23:23:21 +02:00
Cooldude2606 77fea7e295 Fix unrelibable datastore tests (#662)
* Use incrementDateMs

* Change wait time to 15ms

* Fix loop condition
2024-09-14 17:20:52 +01:00
Hornwitser a1c7173dd2 Merge pull request #661 from Hornwitser/windows-rework
Rework Factorio server stop logic
2024-09-14 18:15:19 +02:00
Cooldude2606 dfc406d025 Host shutdown on duplicate connection (#647)
* Update no-shadow lint rule for enums

https://typescript-eslint.io/rules/no-shadow/

* Add websocket close codes enum

* Pass close code and reason to event handlers

* Shutdown host on duplicate connection

* Add connection refusal

* Fix lib/link tests

* Response to comments

* Additional Tests

* Removed missed codes in close event
2024-09-14 16:39:59 +01:00
Hornwitser 10a857c4ad Gracefully handle RCON connection dropping
Handle the edge cases of RCON authentication failing and RCON connection
failing during startup so that server stop still works in these cases.
2024-09-14 16:09:17 +02:00
Hornwitser e4aeafaf14 Set a map limit to speed up integration test 2024-09-14 15:05:13 +02:00
Hornwitser 7ff06f2b96 Rewrite Factorio server shutdown logic
Rewrite shutdown logic for Factorio servers to send a /quit command via
RCON for both Linux and Windows when stopping a server to avoid having
two confusingly intermixed code paths for Windows and Unix systems.
This makes shutdown on Windows tell clients the server shut down instead
of abruptly stoping to respond.
2024-09-14 15:05:13 +02:00
Hornwitser 36fc2ac1db Support nested factorio dirs in server test
Source the factorio directory from the host config as with other tests
and handle it pointing to a folder of Factorio installations.
2024-09-14 15:05:13 +02:00
Hornwitser 64cc9c2b64 Use factorioDir for alt-host config
Source the factorio installation from the host config for the alt host
test like with other tests.
2024-09-14 14:58:55 +02:00
Hornwitser 8e21290b22 Enable skipped tests on Windows
Use the stop host command to stop alt-host so that the tests that depend
on it can also be run on Windows.
2024-09-12 15:26:12 +02:00
Hornwitser a2ea2f2604 Merge branch 'master' into feature/datastore 2024-09-04 00:08:52 +02:00
Hornwitser 5d97e8e816 Source factorio dir from config-host.json in tests
If a factorio dir is configured in config-host.json then use that in the
tests.  This removes the requirement of having a factorio installation
in ./factorio or linking to one there when running the tests.
2024-09-03 21:58:45 +02:00
Hornwitser f3150a9261 Add tests for Address.addressedTo
Make sure the confusing logic in addressedTo is working correctly by
adding tests for it.
2024-09-03 21:58:45 +02:00
Hornwitser 5a73a73c36 Fix installer setting bad controller_url
The host.controller_url config is required to end with a / for the url
joining logic to work.  Fix code added #619 setting this to a value not
ending with a /.
2024-09-03 21:58:45 +02:00
Cooldude2606 8054bd66d2 Fix instance subscriptions (#655)
Remove some assumptions that prevent subscription listeners from working on an
instance.  This means allowing the host to forward the event from the instance
to the controller; correctly storing subscription listeners by address rather
than by connection; and a bunch of network and event stuff to correctly clean up
a listener.

Remove the assumption that all subscriptions events contains the updates
property.  This meant fixing inconsistent types; always checking if the property
existed; fixing lots of the tests that made incorrect assumptions.

Minior fixes:
- Fix double firing of listener callbacks on first connection.
- Fix synced being set to true too early on first connection.
- Fix edge case interaction between last response and last snapshot for values
  with updated set as 0.

Also change the the output made during the start of tests to indicate something
is happening when start up is slow and allow for silent testing to reduce the
amount of text output to the console.
2024-09-03 12:31:32 +02:00
Hornwitser 70cf680edd Escape arguments when installer invokes commands
The usage of shell: true means that no escaping is done on the arguments
passed to the commands invoked by the installer. This leads to the
installation failing if the user for example puts a space in the
username for the admin account.

Fix by escaping the arguments passed on command lines. This is
unreasonably complicated on Windows 😡.
2024-08-30 00:32:58 +02:00
Cooldude2606 2c2521a688 Add error tests for sendEvent and sendRequest (#638) 2024-06-07 15:46:49 +01:00
Cooldude2606 70e95a56b9 Fix test starting alt host under windows 2024-06-07 07:28:04 -06:00
Cooldude2606 8b823a571d Coverage 100% 2024-05-25 18:17:50 +01:00
Cooldude2606 e90451ead8 Fix broken test 2024-05-25 01:20:58 +01:00
Cooldude2606 222a8abdb8 Update change log 2024-05-25 00:32:14 +01:00
Cooldude2606 eb658f86c0 Add unit tests 2024-05-24 22:10:04 +01:00
Cooldude2606 609db31027 Add hosts, instances, systems 2024-05-22 16:39:22 +01:00
Cooldude2606 d1fa5e67d4 Improve error throwing for sending events 2024-05-18 18:42:53 +01:00
Cooldude2606 fb4a5e40f3 Add tests for loopbacks 2024-05-18 03:33:55 +01:00
Danielv123 131e45e10a Skip create integration tests
Tests are skipped because they are really slow and fail in CI
2024-05-05 02:24:57 +02:00
Danielv123 b27256421d Fixed tests 2024-05-05 02:00:16 +02:00
Danielv123 e405f09f33 Add integration tests for create 2024-05-05 01:46:48 +02:00
Hornwitser 4e1116ae2d Gracefully handle bad mod setting types in Web UI
Make sure all cobinations of missmatched types and missing mod settings
are gracefully handled by the Web UI.

Fixes #609.
2024-04-28 16:59:03 +02:00
Hornwitser 3cf9f96233 Coerce mod settings types during data export
Use the settings prototypes to coerce any incorrectly typed mod settings
to the correct type either by casting or by replacing the value with the
default value from the prototype.

This will fix cases where an update to a mod changes the type of ono of
its defined settings.
2024-04-28 16:52:33 +02:00
Hornwitser 7625fd82e3 Cache ModInfo to reduce startup time (#606)
Store and use a cache of the loaded ModInfo data to mod-info-cache.json
in the mods directory during startup.  For simplicity this does not
cache mods added to the controller or host after startup, these get
added to the cache on the next startup.
2024-03-06 17:30:45 +00:00
Hornwitser 8865509011 Delete player statistics when deleting instances
Clear the statistics stored per user for the instance when an instance
is deleted.
2024-02-08 19:06:21 +01:00
Hornwitser 1021e29c98 Support shorthand notation for colours
Implement the shorthand notations that Factorio recognises for colours
where individual components may be left out or the colour specified as
an array of values instead of an object.
2024-02-08 18:42:38 +01:00
Hornwitser 8c4d2db192 Move TypeScript Node.js build to dist/node
Use a separate folder for the TypeScript build for Node.js in the dist
folder.  This makes each type of build consistently have its own output
folder instead of being interleaved with the Node.js build.
2024-02-08 03:20:26 +01:00
Hornwitser 48c31b4825 Fix unhandled rejection on disconnect (#582)
If a link is closed while the prepareDisconnect action is in progress
the link will still try to signal the disconnect ready over the socket
when the prepareDisconnect action completes, which throws due to the
socket no longer being present.  This error is not caught due to the
catch happening before the finally on the promise and triggers an
unhandled rejection.

Fix by rearranging the finally to come before the catch on the promise
so that errors are always handled, and checking that the link still has
a session before attempting to send the disconnect ready signal.
2024-02-05 23:36:43 +01:00
Hornwitser f5255d6f76 Fix message seq reuse on forwarding (#579)
When messages were forwarded they were sent using the low level
connector .send method which accepts a message and sends it over the
link.  This method sends the message as is with no modification which
means that at no point during the forwarding logic was the message
sequence number that originated from Link A renumbered to the correct
sequence number to send out on Link B which it was forwarded on.

This in turn caused the logic which drops acked messages from the send
buffer to break which in turn meant the resume could cause duplication
of message and/or messages to be lost.  With enough duplicated messages
the resume of one connection could cause other connections to drop and
also initiate resume.

Fix by renumbering the sequence on forwarded messages.  In the future
the sequences sent and received should also be checked to make sure this
kind of problem does not happen again, this is not done here because
partially updating a running cluster with sequence problems to one that
checks and enforces sequences numbers will be problematic.
2024-01-26 13:02:26 +01:00
Hornwitser 499e973db9 Fix InstanceConfigSetPropRequest schema
Fix the value incorrectly being set as required in the schema and thus
preventing props on config field objects of the instance from being
removed.
2024-01-24 03:43:21 +01:00