====== Developing & Testing Web Services in Moodle ====== A Web Service is conceptually easy, but surprisingly hard to develop and especially test. Here's a [[https://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin|quick primer]] for the development side of things. Moodle also offers a very incomplete 'Web service test client' as well as an embedded version of the 'AMF test client'. The AMF test client didn't work for me: it kept spewing errors where other test methods yielded perfectly fine results. So, there are no suitable testing environments inside Moodle for testing web services. ===== Testing Moodle Web Services ===== To start with, configure your Moodle to use web services: go to the ''/admin/settings.php?section=webservicesoverview'' url and follow the steps. Then, you can script your own tests, of course. Use [[https://github.com/moodlehq/moodle-local_wstemplate|the local wstemplate plugin]] as an example. Or use one of these: * [[https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm|Postman]], Google Chrome plugin * [[http://www.soapui.org/|SoapUI]], Java application (doesn't run under XMonad/Gnome) ==== Test in Postman ==== Once installed, Postman is available through the 'Apps' section of Chrome: go to the url chrome://apps/ and click on the Postman icon. To perform a test, type in a url (you can also use the URL Params tab), e.g.: http://mymoodle/webservice/rest/server.php?wstoken=05260192_my_secret_token_ecd2d2b&wsfunction=myplugin_api_courses_get_active_courses_by_username&username=testuser11 ===== Common Pitfalls ===== * After each change in your local web services plugin, do change the version number and visit the ''/admin/'' url. Otherwise, your tests will be conducted with obsolete data in the database (e.g. web services method names are stored in the database). * The PARAM_TEXT is specified as a return type, but the actual text returned contains tags. Use PARAM_RAW instead.