Exemplo n.º 1
0
        public void mustRenderRequestSubmittedWindow()
        {
            USSDApplication app     = getTestApp1();
            USSDRequest     request = app.newRequest("1234");

            fillRequest(request);

            USSDResponse response = BantU.executeRequest(getTestApp1(), request);

            Assert.AreEqual("operations", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
            request = app.newRequest("1");
            fillRequest(request);

            response = BantU.executeRequest(getTestApp1(), request);
            Assert.AreEqual("transfers", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
            request = app.newRequest("2");
            fillRequest(request);

            response = BantU.executeRequest(getTestApp1(), request);
            Assert.AreEqual("amountWindow", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
            request = app.newRequest("1000");
            fillRequest(request);

            response = BantU.executeRequest(getTestApp1(), request);
            Assert.AreEqual("requestSubmitted", response.getWindow().getId());
            Assert.AreEqual(ResponseType.MESSAGE, response.getResponseType());
        }
Exemplo n.º 2
0
        public void mustRenderPasswordRecoverWindow()
        {
            USSDRequest request = getTestApp1().newRequest("1111");

            fillRequest(request);
            USSDApplication app      = getTestApp1();
            USSDResponse    response = BantU.executeRequest(getTestApp1(), request);

            Assert.AreEqual("recoverPassowrd", response.getWindow().getId());
            Assert.AreEqual(ResponseType.MESSAGE, response.getResponseType());
        }
Exemplo n.º 3
0
        private static USSDFilteringChain createFilteringChain(USSDApplication application)
        {
            List <USSDFilter> filters = new List <USSDFilter>();

            foreach (USSDFilter f in application.getFilters())
            {
                filters.Add(f);
            }

            BaseUSSDFilteringChain chain = new BaseUSSDFilteringChain();

            chain.Filters = filters;

            return(chain);
        }
Exemplo n.º 4
0
        public static USSDResponse executeRequest(USSDApplication application, USSDRequest request, USSDSession <Object> session)
        {
            USSDResponse         ussdResponse = new BaseUSSDResponse();
            USSDSession <object> ussdSession  = session;

            if (ussdSession == null)
            {
                SessionProvider sessionProvider = application.getSessionProvider();
                if (sessionProvider == null)
                {
                    throw new BantUException(String.Format("The instance must not be null")); // ToDo: Implement as is in Java
                }
                ussdSession = sessionProvider.getSession(request);
                if (ussdSession == null)
                {
                    throw new NullReferenceException(String.Format("The %s instance returned by %s must not be null"));
                }
            }

            request.setApplication(application);
            ussdResponse.setSession(session);

            if (!application.getFilters().Contains(CoreFilter))
            {
                application.getFilters().Add(CoreFilter);
            }

            USSDFilteringChain chain = createFilteringChain(application);

            chain.proceed(request, ussdSession, ussdResponse);

            if (request is GetRequest || request is PostRequest)
            {
                if (ussdResponse.getWindow().isForm())
                {
                    ussdResponse.setResponseType(ResponseType.FORM);
                }
                else
                {
                    ussdResponse.setResponseType(ResponseType.MESSAGE);
                }
            }
            else
            {
                ussdResponse.setResponseType(ResponseType.MESSAGE);
            }

            if (ussdResponse.getResponseType() == ResponseType.FORM)
            {
                BaseNavigationCache navigationCache = (BaseNavigationCache)application.getNavigationCache();

                if (navigationCache != null)
                {
                    try
                    {
                        navigationCache.storeWindow(ussdResponse.getWindow(), request, session);
                    }
                    catch (Exception ex)
                    {
                        throw new WindowStoreFailedException(ussdResponse.getWindow().getId(), request, ussdResponse, session);
                    }
                }
                else
                {
                    ussdSession.close();
                }
            }

            return(ussdResponse);
        }
Exemplo n.º 5
0
 public static USSDResponse  executeRequest(USSDApplication application, USSDRequest request)
 {
     return(executeRequest(application, request, null));
 }
Exemplo n.º 6
0
 public void setApplication(USSDApplication application)
 {
     this.application = application;
 }