GSoC 2018 Proposal
Last modified by Vincent Massol on 2024/02/26 17:54
Description
In this proposal I will try to make a plan for this GSoC for work on a project Android-Authenticator.
Step by step
Update dependencies and toolsSupport as many Android versions as possible(now supported all versions from API 16)- Add "XWiki authenticator is not installed"
- Document as more as possible
- Test as more as possible
- Add application (or, may be, just make AuthenticatorActivity to be default)
- Rewrite lint and proguard options to minimize size of APK
- Improve OpenId Connect provider and authenticator
- Finish and improve Android XWiki authenticator and contact synchronization
A little bit about AndroidAuthenticator
Here you can read abut creating androidauthenticator. In two words:
- Extend AbstractAndroidAuthenticator by some class
- Some methods must return Bundle. In this case you can return bundle with Intent object to edit/create account an other actions
- getAuthToken await that you will return bundle with auth token
As you see, any method which need Bundle as a result - must return some set of parameters (intent, authToken or something else)
Changing of authenticator architecture
Offers
- Add auth methods abstraction. It will help to include different ways to auth
- Replace boilerplate with work with HTTP requests by some library usage and API interfaces/realisations (it will remove redundant handiwork with requests). It can increase size of APK, but this can be fixed by lint/proguard setting up). Besides, in future realises it can help to avoid redundant work with new protocols or something else which will be resolved on library level. Now I know Retrofit, Volley
Tests and documentation
Documentation
I'd like to write all documentation in Java Docs (/**...*/ blocks), but also I think that better documentation will be tests - they are always actual and true tests must cover all usage cases.
Tests
Instrumentation
Next instruments will be used for standard unit-tests which can need or need not in android-environment:
- Robolectric (emulate android-environment and can be useful in cases when instrumentation of class/object/method is java-clear but have some dependencies from android-environment)
- JUnit
- Mockito (mocking objects in tests)
- Power-Mockito (extended mocking of objects, can be useful in different tests where, for example, need to mock instantiating objects)
Next instruments will be used for UI tests:
- Espresso