Commit Graph

539 Commits

Author SHA1 Message Date
Joe Previte
027e8e5adf
refactor: use LogModule from Asher in tests 2021-02-26 11:51:52 -07:00
Joe Previte
a44a51462c
refactor: use same syntax as logger spy 2021-02-26 11:51:52 -07:00
Joe Previte
7ef630f7a4
refactor(register): use logError instead of logger 2021-02-26 11:51:52 -07:00
Joe Previte
21f577d471
refactor: add handleRegisterServiceWorker fn 2021-02-26 11:51:52 -07:00
Joe Previte
44b9874fbe
feat: test failure to register service worker 2021-02-26 11:51:52 -07:00
Joe Previte
a9f88affa9
refactor: use logger in serviceworker 2021-02-26 11:51:51 -07:00
Joe Previte
72b05cacac
refactor: create registerServiceWorker fn 2021-02-26 11:51:51 -07:00
G r e y
077af0511e
fix: Responsive Sign In Page (#2770) 2021-02-25 13:08:54 -06:00
Asher
47a05c998a
Gate wtfnode behind WTF_NODE env var
After thinking about it some more it's probably mostly only useful to
see the output when the tests are hanging. Otherwise there's a lot of
noise about Jest child processes and pipes.
2021-02-22 13:41:12 -07:00
Joe Previte
3fa460c244
refactor: create helpers.ts & add Cookie 2021-02-22 13:41:10 -07:00
Joe Previte
d0eece3d8f
refactor: add note to test.sh about --home 2021-02-22 13:41:10 -07:00
Joe Previte
b02d2fb3cc
feat: add cookie utils for e2e tests 2021-02-22 13:41:10 -07:00
Asher
2d8b785fb8
Fix health socket not getting client messages
Forgot to resume. Went ahead and did the same for the test plugin
although it only sends messages and doesn't receive any.
2021-02-16 15:01:46 -06:00
Asher
3fc556d4d5
Delegate authentication to plugins
Unfortunately since plugins can now override the root this is necessary
or just can't log in.
2021-02-12 16:50:23 -06:00
Asher
0abbc9789e
Allow plugins to register at the root
Unfortunately we have existing plugins with routes there which we cannot
move.
2021-02-12 15:19:26 -06:00
Asher
619934dc29
Authenticate plugin routes (#2720) 2021-02-12 14:56:39 -06:00
Justin Poehnelt
97c1399401
feat: use compression in express server (#2680) 2021-02-12 14:27:33 -06:00
Asher
8344e2062a
Merge pull request #2622 from cdr/plugin-additions 2021-02-10 16:45:00 -06:00
Asher
e4e0ac43b0
Don't load plugins in tests
This can affect the test behavior and results.
2021-02-09 15:39:57 -06:00
Asher
e098df0766
Fix code-server module not being provided in Jest 2021-02-09 15:23:08 -06:00
Asher
2879bd4c22
Add type alias for required modules 2021-02-09 13:09:41 -06:00
Asher
3226d50747
Rename papi to pluginApi 2021-02-09 13:09:40 -06:00
Asher
2fe3d57df3
Mount plugins before bodyParser
Otherwise it consumes the body and plugins won't be able to do things
like proxy POST requests.
2021-02-09 13:09:39 -06:00
Asher
c78f56b334
Expose HttpError to plugins
This will let them throw and show nice errors more easily.
2021-02-09 13:09:38 -06:00
Asher
22d194515a
Expose replaceTemplates to plugins
This is mainly so they can get relative paths in their HTML, in
particular code-server's static base so they can use the favicon and
service worker.
2021-02-09 13:09:37 -06:00
Asher
36aad9bdab
Move global express args definition
This way tests that import the http utilities but not the routes won't
error due to missing types.
2021-02-09 13:09:36 -06:00
Asher
5505959f7e
Expose websocket server to plugins
Same reasoning used when exposing Express.
2021-02-09 13:09:34 -06:00
Asher
b13db3124b
Add health websocket
This is used by some of our services.
2021-02-09 13:09:33 -06:00
Asher
f136a60093
Note that we immediately pause websockets 2021-02-09 13:09:32 -06:00
Asher
00cfd9bdf1
Add working directory to plugin config 2021-02-09 13:09:31 -06:00
Asher
3211eb1ce5
Expose log level to plugins
In case they need to map it to something else.
2021-02-09 13:09:30 -06:00
Asher
017b1cc633
Add deinit for plugins 2021-02-09 13:09:29 -06:00
Asher
3c6fac9ce4
Wait for inner process to exit 2021-02-09 13:09:28 -06:00
Asher
055e0ef9ec
Provide WsRouter to plugins 2021-02-09 13:09:27 -06:00
Asher
fb37473e72
Load only test plugin during tests
The other plugins in my path were causing the tests to fail.
2021-02-09 12:20:30 -06:00
Asher
f6b04c7c29
Expose proxy server to plugins 2021-02-09 12:19:39 -06:00
Asher
a8e928798b
Re-export express for plugins 2021-02-09 12:19:38 -06:00
Asher
5f1fab7d27
Re-export logger field for plugins 2021-02-09 12:19:36 -06:00
Joe Previte
719481e84e
refactor: add getPackageJson fn in constants 2021-02-08 16:21:30 -07:00
Anmol Sethi
05a0f213a7
Update proxy path passthrough documentation
Includes updated create-react-app docs.

Closes #2565
2021-02-05 11:44:38 -05:00
Anmol Sethi
c08e3bb06d
Add /absproxy to remove --proxy-path-passthrough
See https://github.com/cdr/code-server/issues/2222#issuecomment-765235938

Makes way more sense.
2021-02-05 11:44:34 -05:00
Anmol Sethi
58d72d53a1
routes/index.ts: register proxy routes before body-parser
Any json or urlencoded request bodies were being consumed by body-parser
before they could be proxied. That's why requests without Content-Type
were proxied correctly as body-parser would not consume their body.

This allows the http-proxy package to passthrough the request body correctly
in all instances.

Closes #2377
2021-02-01 11:08:40 -05:00
Anmol Sethi
f5cf3fd331
proxy.ts: Do not always rewrite redirects against the base path
This breaks --proxy-path-passthrough

However, we still need this when that code is disabled as many apps will
issue absolute redirects and expect the proxy to rewrite as appropriate.

e.g. Go's http.Redirect will rewrite relative redirects as absolute!
See https://golang.org/pkg/net/http/#Redirect
2021-02-01 11:08:40 -05:00
Joe Previte
646ee3ad7f
refactor: correct type signature in app.ts 2021-01-21 10:11:56 -07:00
Joe Previte
6bf51caa17
fix(app.ts): resolve with server 2021-01-21 10:11:10 -07:00
Joe Previte
f13ba9401b
fix(TS error): add void to promise in util 2021-01-21 10:11:10 -07:00
Anmol Sethi
28e98c0ee0
Merge pull request #2563 from cdr/proxy-path-passthrough-0bb9
pathProxy.ts: Implement --proxy-path-passthrough
2021-01-20 02:44:29 -05:00
Anmol Sethi
c32d8b155f
heart.ts: Fix leak when server closes
This had me very confused for quite a while until I did a binary search
inspection on route/index.ts. Only with the heart.beat line commented
out did my tests pass without leaking.

They weren't leaking fds but just this heartbeat timer and node of
course prints just fds that are active when it detects some sort of leak
I guess and that made the whole thing very confusing. These fds are not
leaked and will close when node's event loop detects there are no more
callbacks to run.

no of handles 3

tcp stream {
  fd: 20,
  readable: false,
  writable: true,
  address: {},
  serverAddr: null
}

tcp stream {
  fd: 22,
  readable: false,
  writable: true,
  address: {},
  serverAddr: null
}

tcp stream {
  fd: 23,
  readable: true,
  writable: false,
  address: {},
  serverAddr: null
}

It kept printing the above text again and again for 60s and then the
test binary times out I think. I'm not sure if it was node printing the
stuff above or if it was a mocha thing. But it was really confusing...

cc @code-asher for thoughts on what was going on.

edit: It was the leaked-handles import in socket.test.ts!!!
Not sure if we should keep it, this was really confusing and misleading.
2021-01-20 02:06:44 -05:00
Anmol Sethi
5c06646f58
Formatting and linting fixes 2021-01-20 02:06:44 -05:00
Anmol Sethi
240c8e266e
test: Implement integration.ts for near full stack integration testing 2021-01-20 02:06:44 -05:00