Skip to content

Commit

Permalink
add sunset node settings tests for box
Browse files Browse the repository at this point in the history
  • Loading branch information
John Tordoff committed May 7, 2024
1 parent 74aeeab commit e4c589f
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 20 deletions.
6 changes: 3 additions & 3 deletions addons/base/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ def create_user_settings(self):
"""
if 'user' not in self.OWNERS:
return
self.user.add_addon(self.ADDON_SHORT_NAME)
self.user.add_addon(self.ADDON_SHORT_NAME, auth=None)
assert self.user.has_addon(self.ADDON_SHORT_NAME), '{0} is not enabled'.format(self.ADDON_SHORT_NAME)
self.user_settings = self.user.get_addon(self.ADDON_SHORT_NAME)
self.user_settings = self.user.get_addon(self.ADDON_SHORT_NAME, auth=None)
self.set_user_settings(self.user_settings)
self.user_settings.save()

Expand All @@ -69,7 +69,7 @@ def create_node_settings(self):
if 'node' not in self.OWNERS:
return
self.project.add_addon(self.ADDON_SHORT_NAME, auth=Auth(self.user))
self.node_settings = self.project.get_addon(self.ADDON_SHORT_NAME)
self.node_settings = self.project.get_addon(self.ADDON_SHORT_NAME, auth=None)
# User has imported their addon settings to this node
if self.NODE_USER_FIELD:
setattr(self.node_settings, self.NODE_USER_FIELD, self.user_settings)
Expand Down
17 changes: 13 additions & 4 deletions addons/box/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,11 @@ def revoke_remote_oauth_access(self, external_account):
pass

@staticmethod
def sync_with_gravyvalet(owner, is_deleted):
resp = requests.get(GV_USER_DOMAIN.format(owner_uri=owner.absolute_url))
def sync_with_gravyvalet(owner, request, is_deleted):
resp = requests.get(
GV_USER_DOMAIN.format(owner_uri='http://192.168.168.167:5000/enhj9'),
cookies=request.cookies
)
settings_obj, created = UserSettings.objects.get_or_create(owner=owner)
if resp.status_code == 404 and created:
# addon not enabled
Expand Down Expand Up @@ -293,8 +296,14 @@ def on_delete(self):
self.save()

@staticmethod
def sync_with_gravyvalet(owner, is_deleted):
resp = requests.get(GV_RESOURCE_DOMAIN.format(owner_uri=owner.absolute_url))
def sync_with_gravyvalet(owner, auth, is_deleted):
print(auth.user.username, auth.user.password)
resp = requests.get(
GV_RESOURCE_DOMAIN.format(owner_uri='http://192.168.168.167:5000/enhj9'),
auth=(auth.user.username, auth.user.password)
)
print(resp)
print(resp.json())
settings_obj, created = NodeSettings.objects.get_or_create(owner=owner)

if resp.status_code == 404 and created:
Expand Down
39 changes: 39 additions & 0 deletions addons/box/tests/test_sunset_node_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
"""Views tests for the Box addon."""
from nose.tools import * # noqa (PEP8 asserts)
import mock
import pytest

from tests.base import OsfTestCase
from addons.base.tests import views as views_testing

from addons.box.tests.utils import (
BoxAddonTestCase,
MockBox,
)
from waffle.testutils import override_flag
from osf import features

mock_client = MockBox()


@pytest.mark.django_db
class TestSunsetBoxNodeSettings(BoxAddonTestCase, views_testing.OAuthAddonAuthViewsTestCaseMixin, OsfTestCase):

def setUp(self):
super().setUp()
self.mock_refresh = mock.patch('addons.box.models.Provider.refresh_oauth_key')
self.mock_refresh.return_value = True
self.mock_refresh.start()

def tearDown(self):
super().tearDown()
self.mock_refresh.stop()

@mock.patch(
'addons.box.models.UserSettings.revoke_remote_oauth_access',
mock.PropertyMock()
)
def test_node_settings(self):
with override_flag(features.ENABLE_GV, active=True):
super().run()
32 changes: 21 additions & 11 deletions osf/models/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,18 +502,18 @@ def get_oauth_addons(self):
]

def has_addon(self, addon_name, is_deleted=False):
return bool(self.get_addon(addon_name, is_deleted=is_deleted))
return bool(self.get_addon(addon_name, auth=None, is_deleted=is_deleted))

def get_addon_names(self):
return [each.short_name for each in self.get_addons()]

def get_or_add_addon(self, name, *args, **kwargs):
addon = self.get_addon(name)
def get_or_add_addon(self, name, auth, *args, **kwargs):
addon = self.get_addon(name, auth)
if addon:
return addon
return self.add_addon(name, *args, **kwargs)
return self.add_addon(name, auth, *args, **kwargs)

def get_addon(self, name, is_deleted=False):
def get_addon(self, name, auth=None, is_deleted=False):
"""
In order to gradually phase out the old addon system, we are using GV to sync the old addon models with GV
before their old pages can we deleted. When the waffle flag is enabled and GV is turned on, the OSF will make
Expand All @@ -539,7 +539,7 @@ def get_addon(self, name, is_deleted=False):
if hasattr(settings_model, 'sync_with_gravyvalet'):
request, user_id = get_request_and_user_id()
if waffle.flag_is_active(request, features.ENABLE_GV):
return settings_model.sync_with_gravyvalet(self, is_deleted)
return settings_model.sync_with_gravyvalet(self, auth, is_deleted)

try:
settings_obj = settings_model.objects.get(owner=self)
Expand All @@ -548,8 +548,12 @@ def get_addon(self, name, is_deleted=False):
except ObjectDoesNotExist:
pass

def add_addon_via_gravy_valet(self, addon_name, auth):
resp = requests.get(settings.GV_RESOURCE_DOMAIN.format(owner_uri=self.absolute_url))
def add_addon_via_gravy_valet(self, addon_name, request):
resp = requests.get(
settings.GV_RESOURCE_DOMAIN.format(owner_uri='http://192.168.168.167:5000/enhj9'),
cookies=request.cookies
)
print(resp.json())
resp.raise_for_status()
data = resp.json()

Expand Down Expand Up @@ -589,7 +593,7 @@ def add_addon_via_gravy_valet(self, addon_name, auth):
ret.save()
return ret

def add_addon(self, addon_name, auth=None, override=False, _force=False):
def add_addon(self, addon_name, auth, override=False, _force=False):
"""Add an add-on to the node.
:param str addon_name: Name of add-on
Expand All @@ -606,7 +610,7 @@ def add_addon(self, addon_name, auth=None, override=False, _force=False):
return False

# Reactivate deleted add-on if present
addon = self.get_addon(addon_name, is_deleted=True)
addon = self.get_addon(addon_name, auth, is_deleted=True)
if addon:
if addon.deleted:
addon.undelete(save=True)
Expand All @@ -615,7 +619,13 @@ def add_addon(self, addon_name, auth=None, override=False, _force=False):
return False

request, user_id = get_request_and_user_id()
if waffle.flag_is_active(request, features.ENABLE_GV) and addon_name not in ('wiki', 'forward', 'twofactor'):
print(addon_name)
if waffle.flag_is_active(request, features.ENABLE_GV) and addon_name not in (
'wiki',
'forward',
'twofactor',
'osfstorage'
):
return self.add_addon_via_gravy_valet(addon_name, auth)
else:
config = apps.get_app_config(f'addons_{addon_name}')
Expand Down
2 changes: 1 addition & 1 deletion osf/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -2102,7 +2102,7 @@ def add_default_user_addons(sender, instance, created, **kwargs):
if created:
for addon in website_settings.ADDONS_AVAILABLE:
if 'user' in addon.added_default:
instance.add_addon(addon.short_name)
instance.add_addon(addon.short_name, auth=None)

@receiver(post_save, sender=OSFUser)
def create_bookmark_collection(sender, instance, created, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion website/settings/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -2145,4 +2145,4 @@ def from_node_usage(cls, usage_bytes, private_limit=None, public_limit=None):

GV_RESOURCE_DOMAIN = f'{DOMAIN}/v1/resource-references/?filter[resource_uri]={{owner_uri}}'
GV_USER_DOMAIN = f'{DOMAIN}/v1/user-references/?filter[user_uri]={{owner_uri}}'
GV_CREATE_CONFIGURED_STORAGE_ADDON = f'{DOMAIN}/v1/configured-storage-addon/'
GV_CREATE_CONFIGURED_STORAGE_ADDON = f'{DOMAIN}/v1/configured-storage-addon/'

0 comments on commit e4c589f

Please sign in to comment.