2017-07-31 62 views
0

我想寫一些測試使用Django測試客戶端來檢查我的w admin管理員的自定義。我已經試過:如何使用django測試客戶端測試w admin管理頁面?

self.user = get_user_model().objects.create(
    username='addy', is_staff=True 
) 
self.client.force_login(self.user) 
response = self.client.get(f'/admin/pages/{self.thing.id}/edit/') 

但我還是最終會看到一個HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/admin/login/?next=/admin/pages/6/edit/">

我失去了一些重要的屬性到鶺鴒想在ordet讓他們查看鶺鴒管理員頁面的用戶?

回答

2

W does不使用is_staff標誌來確定對管理員的訪問 - 您需要爲您的用戶指定wagtailadmin.access_admin權限。

有關以正確權限設置測試用戶的示例,請參閱https://github.com/wagtail/wagtail/blob/c6666c6de5e83bf94d18324858c121e6584ba47d/wagtail/wagtailsites/tests.py#L258

+0

一個明確的改善!我現在得到了403而不是302.仍然不太合適。甚至嘗試過'user_permissions.add(* Permission.objects.all())' – hwjp

+0

爲了讓用戶能夠訪問/ admin/pages//edit /,您需要設置GroupPagePermission記錄:https:// github .com/wagtail/wagtail/blob/14a36f29c0e20a992a57f965b5757567ffe1e796/wagtail/wagtailcore/models.py#L1594。或者,通過設置is_admin = True使其成爲超級用戶。 – gasman

0

下面是我到底什麼工作:

self.user = get_user_model().objects.create_superuser(
    username='addy', email='[email protected]', password='passwood321' 
) 

只設置is_staff是不夠的。由於上面的@gasman的應有的感謝,用戶沒有is_admin atttribute。他們確實有is_superuser,所以這段代碼的作品一樣好(和可能更好,因爲它並不需要一個不相干的電子郵件或密碼):

self.user = get_user_model().objects.create(username='addy', is_superuser=True) 
self.client.force_login(self.user)