mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-12 17:59:06 +02:00
[client] Cover the login the update-settings gate used to refuse
The gate's decision procedure was tested directly, but no test drove the Login RPC that the refusal actually broke: the CLI retries Login in a backoff loop, so a refused no-op login is what kept a client configured by environment from ever coming up. The handler-level coverage stopped at the refusal case, which passes on the pre-fix code too. This test fails on the pre-fix daemon with "update settings are disabled" and passes now. Past the gate the handler does real work the test does not stand up, so it asserts only that the refusal did not happen.
This commit is contained in:
@@ -268,3 +268,27 @@ func TestSetConfig_ManagementURLSpellingsPassTheGate(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// The RPC the whole fix hangs on. Login is retried by the CLI in a backoff
|
||||
// loop, so a login that restates the stored configuration — which is what a
|
||||
// container configured by environment sends on every start — must get past the
|
||||
// gate, or the client never comes up at all.
|
||||
//
|
||||
// Past the gate the handler goes on to do real work this test does not stand
|
||||
// up, so the assertion is only that the refusal did not happen.
|
||||
func TestLogin_RestatingTheStoredConfigPassesTheGate(t *testing.T) {
|
||||
s, _, _, username, _ := setupServerWithProfile(t)
|
||||
s.updateSettingsDisabled = true
|
||||
s.rootCtx = internal.CtxInitState(context.Background())
|
||||
|
||||
_, err := s.Login(userCtx(), &proto.LoginRequest{
|
||||
Username: &username,
|
||||
ManagementUrl: storedManagementURL,
|
||||
})
|
||||
if err != nil {
|
||||
require.NotEqual(t, codes.Unavailable, gstatus.Code(err),
|
||||
"the gate refused a login that changes nothing: %v", err)
|
||||
require.NotContains(t, err.Error(), "update settings are disabled",
|
||||
"the gate refused a login that changes nothing: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user