summaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2017-11-03fix: no expiration date means not outdatedAzul
We were using Time.at(expirationdate) even if it was nil which led to using the Time.at(0). Instead an unset expirationdate is meant to not expire the key at all. Our tests did not catch this because the assertions were in blocks that did not get run at all. (at least in the HKP integration test).
2017-10-11style: more rubocop fixesAzul
2017-09-23style: more rubocop fixesAzul
2017-09-23style: rubocop mostly auto-correctAzul
2017-09-23wkd: implement basic lookup of keys through wkdAzul
wkd is the web key directory. See the Readme.md in /lib/nickserver/wkd
2017-09-22fiX: tests need different names, warningsAzul
2017-09-22wkd: implement basic lookup of keys through wkdAzul
wkd is the web key directory. See the Readme.md in /lib/nickserver/wkd
2017-07-25test: regression test for nonexisting domainAzul
related to platform#8674
2017-07-24test: minor: add http adapter testAzul
2017-07-24fix: #3 handle domains without A-recordAzul
If a domain only has an mx record but no A record it will trigger a ConnectionError when attempting the nicknym key lookup. We need to detect and handle this in the http adapter already because once the exception is handled by Celluloid our actor will be terminated. So now we allow for handing a rescue option to the adapter with a string that is checked for inclusion in the error message. If the string is found the exception will be caught and the adapter returns nil. We only make use of this when checking the availability of nicknym so far. That should be the only http request going out.
2017-07-24minor: tweak file descriptor count testAzul
2017-07-21fix: filedescriptor leak from http_adaptersAzul
Now we reuse a single adapter for all requests triggered by an incoming request. Then we .terminate the adapter. Includes a regression test.
2017-05-11upgrade dependenciesAzul
2016-12-02debug: raise error on 401Azul
This will get us more debug info in the logs if it happens again
2016-12-02cleanup: old empty adapters and testsAzul
2016-11-30test: more meaningful error messages in case of failuresAzul
2016-10-02silence Celluloid.logger in testsAzul
Introduced CelluloidTest as a test class for all tests that depend on Celluloid being up and running.
2016-09-30change default adapter to CelluloidHttpAzul
Turns out without this nickserver will not respond to multiple concurrent requests.
2016-09-30minor: test: fix * interpreted as arg prefix warningAzul
2016-09-30logging: use proper loggerAzul
This way the logs do not interfere with test output
2016-09-29skip tests with ConnectionErrorsAzul
We handle these errors nicely in the dispatcher and have tests for that. Tests should fail or err out when running into exceptions we are not handling yet. But for these it's better to just skip.
2016-09-24use plain http.rb rather than celluloid i/oAzul
Turns out http.rb does not support celluloid i/o andymore and we were not making use of it anyway. Here's what https://github.com/httprb/http/wiki/Thread-Safety says: (NOTE: this gem previously supported Celluloid::IO, but that support was removed to add the current timeout backend. It may be added back in a future version) So now we have a plain http.rb adapter and use that as the default. This prevents actors from crashing in the adapter (as we don't have any).
2016-09-24test: rename so no name is duplicatedAzul
2016-09-23test: some very basic functional testsAzul
2016-09-22hand on connection errors to dispatcher so it can handle itAzul
2016-09-22feature: 502 on ConnectionErrorsAzul
If one source raises a 502 and no other handler has any result we'll respond with a 502 - bad gateway.
2016-09-21doc: explain the purpose of different integration testsAzul
2016-09-21feature: activate nicknym lookupAzul
2016-09-21rescue and track exceptions in handler chainAzul
2016-09-19refactor: separate handler chain from dispatcherAzul
Handler Chain is of handlers that respond to call. Invoking handle(*args) on the chain will call the handlers with the given args until one of them returns a result that is truethy (i.e. not false or nil). Extracted from the dispatcher so we can also handle exceptions there in the future. (So that if one of the network connections to the request_handlers fails we can continue while still tracking the failed exception.)
2016-09-16deal with network issues in nicknym sourceAzul
This is a first step. In case the suspected nicknym server cannot be reached we will now move on and try other sources. It's robably not what we want in the long run. In order to know wether no key exists or we just failed to connect to some servers a different http response code would be nice if network errors occured. This simplifies testing such scenarios in the unit test and makes the remote tests skip on network failure.
2016-09-16bugfix: load order issue in server, include testAzul
Includes our first functional test. This one only makes sure loading the bin/nickserver actually works fine. Enough to catch this bug.
2016-09-16test: properly test nicknym source + fixesAzul
2016-09-12test: separate remote tests into own directoryAzul
Dropped the webmock dependency. We have our own http adapter. So we can stub that to inject a mock. As an added bonus this does not mess with other http requests. Also wrote down testing strategy. Not completely implemented yet.
2016-09-12test: first steps towards a remote nicknym testAzul
2016-09-12[wip] nicknym source query implementedAzul
Also changed Nickserver::Response to not include the status code. This may be okay for error responses but in most cases we want to have a parsable message and not some status code prepended to it.
2016-09-10refactor: remove global require in test_helperAzul
require all the things we depend upon where we depend upon them.
2016-08-31wip: key lookup by address via leaps nicknymAzul
I added a RequestHandler that uses Nicknym::Source - but that has not been implemented yet.
2016-08-30refactor: make the RequestHandler classes callableAzul
Whenever a RequestHandler class is called we instantiate it with the request. Then we call handle on the instance. This way we can access the request and its content via accessors rather than only in the handle method.
2016-08-30feature: keep trying if no Host header givenAzul
So far we would error out if no host was specified in the config or the request. It's true that we can't do local lookup if we don't know our own domain. However we can still use HKP. In the future we will query leaps own API for other providers. If the host was not set in the initial request we might even proxy a request to ourselves. Providing the Host header will prevent an infinite loop in that case.
2016-08-29refactor: split EmailHandler in 3Azul
InvalidEmailHandler - handle emails with an invalid format LocalEmailHandler - handle emails on the local domain EmailHandler - handle all other emails by using hkp This is a preparation to add leap provider email lookup and remove hkp eventually. But for now we keep the behaviour the same and only refactor.
2016-08-29cleanup: remove outdated ideasAzul
Lookup and InvalidSource were experiments for a design for the dispatching. Our new dispatcher seems better.
2016-08-29refactor: split up ResponseHandlerAzul
Now we have a Dispatcher and two ResponseHandlers that have the same interface. Moving towards a Chain of Responsibility pattern.
2016-08-29expose Request class from RequestHandlerAzul
This way we can separate the EmailHandler and the FingerprintHandler as well.
2016-08-27refactor: push down adapter dependency injection to sourcesAzul
The original idea was that we would have all the celluloid related things injected in reel_server. However it seems unlikely that we will use a different http system anytime soon. Removing some layers of dependency injection to reduce complexity. We can easily bring this back if we want.
2016-08-26[update] trying to silence warningsAzul
These warnings were showing on gitlab ci. $ bundle exec rake test /usr/local/bin/ruby -w -Ilib:test -I/builds/leap/nickserver/vendor/ruby/2.1.0/gems/rake-11.2.2/lib /builds/leap/nickserver/vendor/ruby/2.1.0/gems/rake-11.2.2/lib/rake/rake_test_loader.rb test/**/*_test.rb /usr/local/lib/ruby/gems/2.1.0/gems/bundler-1.12.5/lib/bundler/rubygems_integration.rb:468: warning: method redefined; discarding old find_spec_for_exe /usr/local/lib/ruby/site_ruby/2.1.0/rubygems.rb:261: warning: previous definition of find_spec_for_exe was here I, [2016-08-26T15:34:46.162843 #325] INFO -- : Celluloid 0.17.3 is running in BACKPORTED mode. [ http://git.io/vJf3J ] /builds/leap/nickserver/test/unit/request_handler_test.rb:28: warning: mismatched indentations at 'end' with 'def' at 21 /builds/leap/nickserver/vendor/ruby/2.1.0/gems/celluloid-io-0.17.3/lib/celluloid/io/ssl_socket.rb:22: warning: instance variable @npn_protocols not initialized /builds/leap/nickserver/vendor/ruby/2.1.0/gems/celluloid-io-0.17.3/lib/celluloid/io/ssl_socket.rb:22: warning: instance variable @npn_select_cb not initialized Run options: --seed 61653 # Running: .................../builds/leap/nickserver/vendor/ruby/2.1.0/gems/celluloid-io-0.17.3/lib/celluloid/io/ssl_socket.rb:22: warning: instance variable @npn_protocols not initialized /builds/leap/nickserver/vendor/ruby/2.1.0/gems/celluloid-io-0.17.3/lib/celluloid/io/ssl_socket.rb:22: warning: instance variable @npn_select_cb not initialized .../builds/leap/nickserver/vendor/ruby/2.1.0/gems/celluloid-io-0.17.3/lib/celluloid/io/ssl_socket.rb:22: warning: instance variable @npn_protocols not initialized /builds/leap/nickserver/vendor/ruby/2.1.0/gems/celluloid-io-0.17.3/lib/celluloid/io/ssl_socket.rb:22: warning: instance variable @npn_select_cb not initialized ................. Finished in 2.029982s, 19.2120 runs/s, 10.8375 assertions/s.
2016-07-13[FEATURE] fetch key by fingerprintZara Gebru
- add fingerprint unit tests - add integration test - implement by_fingerprint
2016-07-12[Test] get email form hkpZara Gebru
2016-07-02refactor: turn EmailAddress into a class, cleanupAzul
2016-07-02refactor: replace blocks/yields with returnsAzul
This became possible because we now use celluloid. Celluloid handles asynchronity without the need for callbacks or blocks.