2011-01-14 9 views
0

私は方法が、ショー()が対象のイベントを見つけるため、nullを返しますすることはできませんが)(コントローラのショーにイベント呼ば嘲笑ドメインインスタンスを渡ししようとしています。コントローラのshow()メソッドでmocked domain "instance"を使用できますか?

次のスニペットはまだ進行中です。

def "trying to show an event containing malicous code"() { 
    given: "An event named with malicous code" 
    mockDomain(Event) 
    def event = Mock(Event) 
    event.title >> "<script type=\"text/javascript\">alert(\"XSS\");</script>" 
    event.id >> 1 
    // Do I have to actually create a full-blown event considering all 
    // constraints here? 

    when: "I try to show that event" 
    controller.params.id = 1 
    def result = controller.show() 

    then: "The resulting title will be encoded HTML" 
    result.eventInstance.title == event.title.encodeAsHTML() 
} 

このコントローラのショーの始まりです()メソッド:

def show = { 
    def eventInstance = Event.get(params.id) 

    // The event exists 
    if (eventInstance) { 
      // some processing here 

      return [eventInstance: eventInstance, isSubscribed: sub ? true:false, sidebar: 'sidebar'] 
    } 
  1. は簡単な解決策はあるのか、私は実際にすべての世話をして本格的なイベントを作成する必要があります制約?
  2. 私はフルイベントを作成する必要がありますが、どこに従うのですか? (当初はBootStrap.groovyでcreateEvent()メソッドを使用していましたので、ここでその機能を繰り返すのはDRYではありません)。

答えて

1

は、以下の方法でEventオブジェクトをからかってみてください。

def event = new Event() 
event.title = "<script type=\"text/javascript\">alert(\"XSS\");</script>" 
event.id = 1 // optional 
mockDomain Event, [event] 

あなたはmockDomainコールにeventのインスタンスを追加しない限り、あなたはget

+0

おかげでそれを取得することができません特にインスタンスを 'mockDomain'コールに追加するヒントについては、私は今日まで何が違うのか疑問に思っていました。 – user569825

+0

上記の少しの証拠として: 'def e \t = new Event();アサート!e.id; mockDomainイベント、[e]; assert e.id == 1 ' – user569825

+0

mfloryan、あとでインスタンスを割り当てる方法はありますか? - 基本的な 'mockDomain Event'を' setup() 'に入れておき、必要に応じてインスタンスを追加するだけですか? – user569825

関連する問題