Commit graph

3 commits

Author SHA1 Message Date
Stan Hu
70799b05ab Add additional stub methods for FakeApplicationSetting
In a migration spec, a default ApplicationSetting object may fail to
create due to an unknown attribute and fall back to
FakeApplicationSetting.  FakeApplicationSetting appears to be missing a
number of methods that are needed
(https://gitlab.com/gitlab-org/gitlab-ce/issues/47491). This commit adds
the ones needed to make an EE spec pass.

Closes https://gitlab.com/gitlab-org/gitlab-ee/issues/7543
2018-09-10 22:27:21 -07:00
Stan Hu
183c94dd63 Work around migration specs failing due to repository storages not being selected
Migration specs may be missing a column necessary to create an ApplicationSetting
object, which causes the FakeApplicationSetting to be initialized. However, the
project selects a random repository storage via ApplicationSetting#pick_repository_storage,
which isn't present in the OpenStruct.

To workaround this issues, we add a pick_repository_storage method in
FakeApplicationSetting.
2018-09-10 14:03:21 -07:00
Stan Hu
575dced5d7 If migrations are pending, make CurrentSettings use existing values and populate missing columns with defaults
master was failing because `ApplicationSetting.create_from_defaults` attempted
to write to a column that did not exist in the database. This occurred in a
`rake db:migrate` task, which was unable to perform the migration that would
have added the missing column in the first place.

In 9.3 RC2, we also had a bug where password sign-ins were disabled because
there were many pending migrations. The problem occurred because
`fake_application_settings` was being returned with an OpenStruct that did not
include the predicate method `signup_enabled?`. As a result, the value would
erroneously return `nil` instead of `true`. This commit uses the values of the
defaults to mimic this behavior.

This commit also refactors some of the logic to be clearer.
2017-06-19 09:54:48 -07:00