2017-06-09 3 views
3

Ich habe das folgende Modul in einer Rails-Controller betreffen:WebMock Stub Daten von Aws CognitoIdentityProvider

module AwsAuth 
    extend ActiveSupport::Concern 

    require 'aws-sdk' 

    def get_cognito_user(token) 
    cognitoidentityprovider = Aws::CognitoIdentityProvider::Client.new(region: ENV['AWS_REGION']) 

    begin 
     cognito_user = cognitoidentityprovider.get_user({ access_token: token }) 

     puts cognito_user 

     return {"email" => cognito_user.username} 

    rescue StandardError => msg 
     puts "ERROR!" 
     puts msg 
     return {"error" => msg} 
    end 
    end 
end 

Im Moment setzt cognito_user kehrt:

#<Aws::CognitoIdentityProvider::Types::GetUserResponse:0x7fe51b0013a8 
    mfa_options = nil, 
    user_attributes = nil, 
    username = nil 
> 

Wie kann ich die Antwort in Rspec Gestüt so dass Benutzername und user_attributes nicht null sind?

+3

Versuche 'erlauben (cognitoidentityprovider) .to erhalten (: get_user) .mit (your_params) .and_return (your_object) '. Check out [docs] (https://relishapp.com/rspec/rspec-mocks/v/2-14/docs/method-stubs) – yzalavin

+1

Eigentlich sollten Sie Ihre 'rspec' Datei mit den Tests für eine bessere Antwort zeigen . – yzalavin

Antwort

0

nach Herumspielen mit yzalavin Vorschlag ... folgende Arbeiten für mich ...

allow_any_instance_of(AwsAuth) 
     .to receive(:get_cognito_user) 
     .and_return(JSON[ {email: "[email protected]"}.to_json ])