2

假設該應用程序受OpenId登錄(僅限OpenId)保護。一旦用戶通過OpenID認證成功,我這樣設置會話屬性:如何在Play2上使用OpenId功能測試應用程序?

Redirect(routes.Application.index).withSession('email -> userinfo.email) 

現在,由於大量的應用程序功能依賴於JavaScript,測試必須在硒/ Fluentlenium運行。我如何在我的測試中僞造一個連接的用戶?

編輯:如下回答,從而在OpenID提供商用戶是不是真的有兩個原因一個答案:

  1. 的OpenID提供商只有谷歌和谷歌。
  2. 我不想測試Google的OpenId是否正在運行,因爲它們可能測試的方式比我以往任何時候都好,我想測試我的應用程序的功能。

我寧願通過在fluentlenium會話中手動設置電子郵件屬性來僞造一個連接的用戶,但是我沒有找到API來執行此操作。

+0

這可能不是使用用戶電子郵件地址作爲標記的最佳做法。用戶使其他會話失效的唯一方法是更改​​其電子郵件地址。我討厭Play遊戲的例子。 – drstevens

回答

0

爲什麼不在OpenId供應商中創建測試帳戶並在您的selenium腳本中使用其用戶名/密碼?

在硒/ Fluentlenium測試中得出結論:您的應用程序非常集成(OpenID按照您提到的方式進行設置,我懷疑DB也已連接)。

+0

這不是一個真正的解決方案。該應用程序是Google OpenID獨家。我不想創建一個僅用於測試的Google帳戶。我想僞造它。 –

1

我們通過將OpenId集成提取到已獲得真正實現(google)和虛擬實現的特徵中完成此操作,在我們的情況下,獲得登錄的硬編碼用戶,這對於能夠在devel模式下使用應用程序,而不必真正登錄。

實際性狀是如此簡單:

sealed trait AuthLogic { 
    def login: Action[AnyContent] 
    def callback: Action[AnyContent] 
} 

,然後由谷歌的一個和所述虛設,用來在由配置標誌第一接入(懶惰VAL)決定實際的實例來實現。所有虛擬人都會直接從登錄重定向到回調,然後在回調實現中僞造登錄。

希望這有助於!

+0

這似乎是一個有趣的解決方案。會試試看。 –

相關問題