import sys
import requests
from parametrized_test import ParametrizedTest

class TestRegistration(ParametrizedTest):

    def tearDown(self):
        for item in self.es_cleanup:
            self.es.delete(index="users", doc_type="local", id=item["_id"])

    def testRegistrationPage(self):
        if self.es.ping():
            data = {
                "email_address": "test@user.com",
                "full_name": "Test User",
                "organization": "Test Organisation",
                "password": "test_password",
                "password_confirm": "test_password"
            }
            requests.post(self.gn2_url+"/n/register", data)
            response = self.es.search(
                index="users"
                , doc_type="local"
                , body={
                    "query": {"match": {"email_address": "test@user.com"}}})
            self.assertEqual(len(response["hits"]["hits"]), 1)
        else:
            self.skipTest("The elasticsearch server is down")

def main(gn2, es):
    import unittest
    suite = unittest.TestSuite()
    suite.addTest(TestRegistration(methodName="testRegistrationPage", gn2_url=gn2, es_url=es))
    runner = unittest.TextTestRunner()
    runner.run(suite)

if __name__ == "__main__":
    if len(sys.argv) < 3:
        raise Exception("Required arguments missing")
    else:
        main(sys.argv[1], sys.argv[2])