diff options
Diffstat (limited to 'indra/viewer_components/login/tests')
| -rw-r--r-- | indra/viewer_components/login/tests/lllogin_test.cpp | 191 | 
1 files changed, 4 insertions, 187 deletions
| diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp index 58bf371a04..e96c495446 100644 --- a/indra/viewer_components/login/tests/lllogin_test.cpp +++ b/indra/viewer_components/login/tests/lllogin_test.cpp @@ -96,61 +96,6 @@ public:      }  }; -class LLAresListener: public LLEventTrackable -{ -	std::string mName; -	LLSD mEvent; -	bool mImmediateResponse; -	bool mMultipleURIResponse; -    Debug mDebug; -	 -public: -	LLAresListener(const std::string& name,  -				   bool i = false, -				   bool m = false -				   ) :  -		mName(name), -		mImmediateResponse(i), -		mMultipleURIResponse(m), -        mDebug(stringize(*this)) -	{} - -	bool handle_event(const LLSD& event) -	{ -		mDebug(STRINGIZE("LLAresListener called!: " << event)); -		mEvent = event; -		if(mImmediateResponse) -		{ -			sendReply(); -		} -		return false; -	} - -	void sendReply() -	{ -		if(mEvent["op"].asString() == "rewriteURI") -		{ -			LLSD result; -			if(mMultipleURIResponse) -			{ -				result.append(LLSD("login.foo.com")); -			} -			result.append(mEvent["uri"]); -			LLEventPumps::instance().obtain(mEvent["reply"]).post(result); -		} -	} - -	LLBoundListener listenTo(LLEventPump& pump) -    { -        return pump.listen(mName, boost::bind(&LLAresListener::handle_event, this, _1)); -	} - -    friend std::ostream& operator<<(std::ostream& out, const LLAresListener& listener) -    { -        return out << "LLAresListener(" << listener.mName << ')'; -    } -}; -  class LLXMLRPCListener: public LLEventTrackable  {  	std::string mName; @@ -232,16 +177,12 @@ namespace tut      void llviewerlogin_object::test<1>()      {          DEBUG; -		// Testing login with immediate responses from Ares and XMLPRC -		// The response from both requests will come before the post request exits. +		// Testing login with an immediate response from XMLPRC +		// The response will come before the post request exits.  		// This tests an edge case of the login state handling. -		LLEventStream llaresPump("LLAres"); // Dummy LLAres pump.  		LLEventStream xmlrpcPump("LLXMLRPCTransaction"); // Dummy XMLRPC pump  		bool respond_immediately = true; -		// Have 'dummy ares' respond immediately.  -		LLAresListener dummyLLAres("dummy_llares", respond_immediately); -		dummyLLAres.listenTo(llaresPump);  		// Have dummy XMLRPC respond immediately.  		LLXMLRPCListener dummyXMLRPC("dummy_xmlrpc", respond_immediately); @@ -266,109 +207,12 @@ namespace tut      void llviewerlogin_object::test<2>()      {          DEBUG; -		// Tests a successful login in with delayed responses.  -		// Also includes 'failure' that cause the login module -		// to re-attempt connection, once from a basic failure -		// and once from the 'indeterminate' response. - -		set_test_name("LLLogin multiple srv uris w/ success"); - -		// Testing normal login procedure. -		LLEventStream llaresPump("LLAres"); // Dummy LLAres pump. -		LLEventStream xmlrpcPump("LLXMLRPCTransaction"); // Dummy XMLRPC pump - -		bool respond_immediately = false; -		bool multiple_addresses = true; -		LLAresListener dummyLLAres("dummy_llares", respond_immediately, multiple_addresses); -		dummyLLAres.listenTo(llaresPump); - -		LLXMLRPCListener dummyXMLRPC("dummy_xmlrpc"); -		dummyXMLRPC.listenTo(xmlrpcPump); - -		LLLogin login; - -		LoginListener listener("test_ear"); -		listener.listenTo(login.getEventPump()); - -		LLSD credentials; -		credentials["first"] = "foo"; -		credentials["last"] = "bar"; -		credentials["passwd"] = "secret"; - -		login.connect("login.bar.com", credentials); - -		ensure_equals("SRV state", listener.lastEvent()["change"].asString(), "srvrequest");  - -		dummyLLAres.sendReply(); - -		// Test Authenticating State prior to first response. -		ensure_equals("Auth state 1", listener.lastEvent()["change"].asString(), "authenticating");  -		ensure_equals("Attempt 1", listener.lastEvent()["data"]["attempt"].asInteger(), 1);  -		ensure_equals("URI 1", listener.lastEvent()["data"]["request"]["uri"].asString(), "login.foo.com");  - -		// First send emulated LLXMLRPCListener failure, -		// this should return login to the authenticating step and increase the attempt  -		// count. -		LLSD data; -		data["status"] = "OtherError";  -		data["errorcode"] = 0; -		data["error"] = "dummy response"; -		data["transfer_rate"] = 0; -		dummyXMLRPC.setResponse(data); -		dummyXMLRPC.sendReply(); - -		ensure_equals("Fail back to authenticate 1", listener.lastEvent()["change"].asString(), "authenticating");  -		ensure_equals("Attempt 2", listener.lastEvent()["data"]["attempt"].asInteger(), 2);  -		ensure_equals("URI 2", listener.lastEvent()["data"]["request"]["uri"].asString(), "login.bar.com");  - -		// Now send the 'indeterminate' response. -		data.clear(); -		data["status"] = "Complete"; // StatusComplete -		data["errorcode"] = 0; -		data["error"] = "dummy response"; -		data["transfer_rate"] = 0; -		data["responses"]["login"] = "indeterminate"; -		data["responses"]["next_url"] = "login.indeterminate.com";			 -		data["responses"]["next_method"] = "test_login_method"; 			 -		dummyXMLRPC.setResponse(data); -		dummyXMLRPC.sendReply(); - -		ensure_equals("Fail back to authenticate 2", listener.lastEvent()["change"].asString(), "authenticating");  -		ensure_equals("Attempt 3", listener.lastEvent()["data"]["attempt"].asInteger(), 3);  -		ensure_equals("URI 3", listener.lastEvent()["data"]["request"]["uri"].asString(), "login.indeterminate.com");  -		ensure_equals("Method 3", listener.lastEvent()["data"]["request"]["method"].asString(), "test_login_method");  - -		// Finally let the auth succeed. -		data.clear(); -		data["status"] = "Complete"; // StatusComplete -		data["errorcode"] = 0; -		data["error"] = "dummy response"; -		data["transfer_rate"] = 0; -		data["responses"]["login"] = "true"; -		dummyXMLRPC.setResponse(data); -		dummyXMLRPC.sendReply(); - -		ensure_equals("Success state", listener.lastEvent()["state"].asString(), "online"); - -		login.disconnect(); - -		ensure_equals("Disconnected state", listener.lastEvent()["state"].asString(), "offline"); -	} - -    template<> template<> -    void llviewerlogin_object::test<3>() -    { -        DEBUG;  		// Test completed response, that fails to login.  		set_test_name("LLLogin valid response, failure (eg. bad credentials)");  		// Testing normal login procedure. -		LLEventStream llaresPump("LLAres"); // Dummy LLAres pump.  		LLEventStream xmlrpcPump("LLXMLRPCTransaction"); // Dummy XMLRPC pump -		LLAresListener dummyLLAres("dummy_llares"); -		dummyLLAres.listenTo(llaresPump); -  		LLXMLRPCListener dummyXMLRPC("dummy_xmlrpc");  		dummyXMLRPC.listenTo(xmlrpcPump); @@ -383,10 +227,6 @@ namespace tut  		login.connect("login.bar.com", credentials); -		ensure_equals("SRV state", listener.lastEvent()["change"].asString(), "srvrequest");  - -		dummyLLAres.sendReply(); -  		ensure_equals("Auth state", listener.lastEvent()["change"].asString(), "authenticating");   		// Send the failed auth request reponse @@ -403,19 +243,15 @@ namespace tut  	}      template<> template<> -    void llviewerlogin_object::test<4>() +    void llviewerlogin_object::test<3>()      {          DEBUG;  		// Test incomplete response, that end the attempt.  		set_test_name("LLLogin valid response, failure (eg. bad credentials)");  		// Testing normal login procedure. -		LLEventStream llaresPump("LLAres"); // Dummy LLAres pump.  		LLEventStream xmlrpcPump("LLXMLRPCTransaction"); // Dummy XMLRPC pump -		LLAresListener dummyLLAres("dummy_llares"); -		dummyLLAres.listenTo(llaresPump); -  		LLXMLRPCListener dummyXMLRPC("dummy_xmlrpc");  		dummyXMLRPC.listenTo(xmlrpcPump); @@ -430,10 +266,6 @@ namespace tut  		login.connect("login.bar.com", credentials); -		ensure_equals("SRV state", listener.lastEvent()["change"].asString(), "srvrequest");  - -		dummyLLAres.sendReply(); -  		ensure_equals("Auth state", listener.lastEvent()["change"].asString(), "authenticating");   		// Send the failed auth request reponse @@ -449,17 +281,13 @@ namespace tut  	}  	template<> template<> -    void llviewerlogin_object::test<5>() +    void llviewerlogin_object::test<4>()      {          DEBUG;  		// Test SRV request timeout.  		set_test_name("LLLogin SRV timeout testing");  		// Testing normal login procedure. -		LLEventStream llaresPump("LLAres"); // Dummy LLAres pump. - -		LLAresListener dummyLLAres("dummy_llares"); -		dummyLLAres.listenTo(llaresPump);  		LLLogin login;  		LoginListener listener("test_ear"); @@ -473,26 +301,15 @@ namespace tut  		login.connect("login.bar.com", credentials); -		ensure_equals("SRV State", listener.lastEvent()["change"].asString(), "srvrequest");  -  		// Get the mainloop eventpump, which needs a pinging in order to drive the   		// SRV timeout.  		LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop"));  		LLSD frame_event;  		mainloop.post(frame_event); -		// In this state we have NOT sent a reply from LLAresListener -- in -		// fact there's no such object. Nonetheless, we expect the timeout to -		// have stepped the login module forward to try to authenticate with -		// the original URI.  		ensure_equals("Auth state", listener.lastEvent()["change"].asString(), "authenticating");   		ensure_equals("Attempt", listener.lastEvent()["data"]["attempt"].asInteger(), 1);   		ensure_equals("URI", listener.lastEvent()["data"]["request"]["uri"].asString(), "login.bar.com"); -		// EXT-4193: if the SRV reply isn't lost but merely late, and if it -		// arrives just at the moment we're expecting the XMLRPC reply, the -		// original code got confused and crashed. Drive that case here. We -		// observe that without the fix, this call DOES repro. -		dummyLLAres.sendReply();  	}  } | 
