summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-16gitignore: vendorAzul
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-16Merge branch 'bugfix/load-error-in-bin' into 'master' azul
bugfix: load order issue in server, include test Includes our first functional test. This one only makes sure loading the bin/nickserver actually works fine. Enough to catch this bug. See merge request !4
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-16Merge branch 'feature/query-leap-servers' into 'master' azul
test: properly test nicknym source + fixes See merge request !3
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-30refactor: rename EmailHandler to HkpEmailHandlerAzul
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-29Merge branch 'refactor/request-handling' into 'master' azul
refactor: restructure the way we handle requests to make it more consistent. Requests are handled at a lot of different ways in different styles right now. Let's make this more consistent and flexible to add email lookup at other leap providers. See merge request !2
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: let handlers check if they are applicableAzul
Instead of testing the preconditions for each handler in the dispatcher the dispatcher hands a request to one handler after the other until one of them responds. This is similar to the Chain of Responsibility patter but we iterate over the 'handler_chain' array instead of a linked list. To change the order of handlers or add other handlers change the array in the handler_chain function.
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-26refactor: split up RequestHandler even moreAzul
2016-08-26refactor: Request helper class in RequestHandlerAzul
We have a specific way of encoding the thing we are looking for in the request. I added a small helper class to access the fingerprint and email. This also cleans up the RequestHandler code to some extend.
2016-08-26Merge branch 'test/gitlab' into 'master' azul
Run tests on gitlab See merge request !1
2016-08-26[upgrade] ruby 2.3 on CIAzul
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-08-26[test] initial .gitlab-ci.yml fileAzul
Mostly copied from the webapp just to see how it goes. I did not carry over version restrictions from the .travis.yml file. I hope these limitations have vanished now and i can also remove them on travis.
2016-07-21Merge pull request #6 from pixelated/by_fingerprintazul
By fingerprint
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-12[refactor] encapsulate get key by emailZara Gebru
in order to get key by fp as well
2016-07-12Merge pull request #5 from azul/celluloidazul
Use Celluloid, Reel and Celluloid I/O based http requests
2016-07-04fix start / stop scriptAzul
I have to admit I don't completely understand what is going on here. https://github.com/celluloid/celluloid/wiki/Frequently-Asked-Questions says you can either use sleep after initiating the actors or call run on them. But this might not be true for reel. At least run did not work and now new; sleep seems to work fine.
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.
2016-07-02minor: silence warnings and cleanupAzul
2016-06-30use proper ssl connection with ca_file - green!Azul
2016-06-30actually use celluloid io for http requestsAzul
2016-06-30fix host header handling and testsAzul
2016-06-30Trying to replace EM base server with reelAzul
some tests are still broken. But at least they are running now.
2016-06-30update webmock versionAzul
2016-06-24first attempt at using celluloid instead of em - brokenAzul
Main problem right now is the outdated version of webmock.
2016-06-21refactor: change send_response -> respond in em_serverAzul
This way the interface mimics the one of Celluloid Reels request. request.respond status, content
2016-06-21Merge pull request #4 from azul/refactor/separate-em-serverazul
refactor: separate em specifics from generic server
2016-06-20seperate generic RequestHandler from EmServerAzul
The request handler takes a responder (the EmServer) and an adapter as initialization arguments. It will then respond to requests by querying the sources using the adapter and calling send_response on the responder.
2016-06-20add Nickserver::Source as superclassAzul
2016-06-20refactor: separate em specifics from generic serverAzul
2016-06-15Merge pull request #3 from azul/refactor/transport-adaptersazul
Refactor em specifics into http adapter