The plainest sign-in, and the one every other route is compared against. It is
first because it fixes the shape of a session for the two routes that follow.
What this produces
A sign-in call that takes an address, a name and a password, and returns either a
session or a named error.
The password held for exactly as long as the request needs it and not stored,
logged, cached or included in any error the core produces.
A wrong password distinguished from an unreachable server and from a server that
answered in a shape the core does not recognise, because those three need three
different sentences and collapsing them is how a person ends up retyping a
correct password at a server that is off.
Done when
Sign-in succeeds against the fake server, each of the three failures above is a
distinct named error, and a test greps the produced error values and any log
output for the password and finds nothing. Blocked on #5, #4, #21.
The plainest sign-in, and the one every other route is compared against. It is
first because it fixes the shape of a session for the two routes that follow.
What this produces
A sign-in call that takes an address, a name and a password, and returns either a
session or a named error.
The password held for exactly as long as the request needs it and not stored,
logged, cached or included in any error the core produces.
A wrong password distinguished from an unreachable server and from a server that
answered in a shape the core does not recognise, because those three need three
different sentences and collapsing them is how a person ends up retyping a
correct password at a server that is off.
Done when
Sign-in succeeds against the fake server, each of the three failures above is a
distinct named error, and a test greps the produced error values and any log
output for the password and finds nothing. Blocked on #5, #4, #21.