Beispiel #1
0
    def setUp(self):

        for s in range(0, SERVICE_NUMBER):
            service = Service(
                url='http://%s.fakeurl.com' % s,
                title='Title %s' % s,
                type='OGC_WMS',
            )
            service.save()
            for l in range(0, 20):
                layer = Layer(
                    name='Layer %s, from service %s' % (l, s),
                    bbox_x0=-179,
                    bbox_x1=179,
                    bbox_y0=-89,
                    bbox_y1=89,
                    service=service
                )
                layer.save()
                service.layer_set.add(layer)
        for c in range(0, TIMES_TO_CHECK):
            for s in range(0, SERVICE_NUMBER):
                service = Service.objects.all()[s]
                service.check()
                for layer in service.layer_set.all():
                    layer.check()
Beispiel #2
0
def populate_initial_services():
    """
    Populate a fresh installed Hypermap instances with basic services.
    """
    services_list = (
        ('Harvard WorldMap',
         'Harvard WorldMap open source web geospatial platform',
         'Hypermap:WorldMap', 'http://worldmap.harvard.edu'),
        ('NYPL MapWarper',
         'The New York Public Library (NYPL) MapWarper web site',
         'Hypermap:WARPER', 'http://maps.nypl.org/warper/maps'),
        ('Map Warper',
         'The MapWarper web site developed, hosted and maintained by Tim Waters',
         'Hypermap:WARPER', 'http://mapwarper.net/maps'),
        ('WorldMap Warp',
         'The MapWarper instance part of the Harvard WorldMap project',
         'Hypermap:WARPER', 'http://warp.worldmap.harvard.edu/maps'),
        ('WFP GeoNode', 'World Food Programme GeoNode', 'OGC:WMS',
         'http://geonode.wfp.org/geoserver/ows?'),
        ('NASA EARTHDATA', 'NASA EARTHDATA, powered by EOSDIS', 'OGC:WMTS',
         'http://map1.vis.earthdata.nasa.gov/wmts-geo/1.0.0/WMTSCapabilities.xml'
         ),
    )

    esri_endpoint = 'https://gis.ngdc.noaa.gov/arcgis/rest/services'
    print '*** Importing esri endpoint: %s' % esri_endpoint
    create_services_from_endpoint(esri_endpoint)

    for service in services_list:
        print '*** Importing %s' % service[0]
        service = Service(title=service[0],
                          abstract=service[1],
                          type=service[2],
                          url=service[3])
        service.save()
Beispiel #3
0
def RegisterFile(Service=None, FileName=None, ProvisionedSpace="10G"):

    if Service  is None:
	raise StorageError('RegisterFile(): Service can not be None')

    if FileName is None:
	raise StorageError('RegisterFile(): FileName can not be None')

    vfilespace = StringSizeToBytes(ProvisionedSpace)
    
    if Service.freespace - vfilespace > 0:
	NewFile = File()
	NewFile.vfilename 	= FileName
        NewFile.ufid		= GetUniqueFileID(FileName)
	NewFile.pfilesize	= 0
        NewFile.vfilesize	= vfilespace
	NewFile.service		= Service
	NewFile.pfilename	= GetPhysicalFileName(Service.localpath, FileName)
	NewFile.status		= 'O'
	NewFile.save()
	
	SFreeSpace = CalculateFreeSpace(Service)
	Service.freespace = SFreeSpace
	Service.save()

	return NewFile
    else:
	raise StorageError('RegisterFile(): No have left space')
Beispiel #4
0
def import_services(service_list):
    """Add any services from file to django database"""
    current_services = read_current_services()
    for service in service_list:
        if service not in current_services:
            new_service = Service(service_name=service)
            new_service.save()
Beispiel #5
0
def create_service_from_endpoint(endpoint,
                                 service_type,
                                 title=None,
                                 abstract=None,
                                 catalog=None):
    """
    Create a service from an endpoint if it does not already exists.
    """
    from models import Service
    if Service.objects.filter(url=endpoint, catalog=catalog).count() == 0:
        # check if endpoint is valid
        request = requests.get(endpoint)
        if request.status_code == 200:
            LOGGER.debug('Creating a %s service for endpoint=%s catalog=%s' %
                         (service_type, endpoint, catalog))
            service = Service(type=service_type,
                              url=endpoint,
                              title=title,
                              abstract=abstract,
                              csw_type='service',
                              catalog=catalog)
            service.save()
            return service
        else:
            LOGGER.warning('This endpoint is invalid, status code is %s' %
                           request.status_code)
    else:
        LOGGER.warning(
            'A service for this endpoint %s in catalog %s already exists' %
            (endpoint, catalog))
        return None
Beispiel #6
0
def create_service_from_endpoint(endpoint,
                                 service_type,
                                 title=None,
                                 abstract=None):
    """
    Create a service from an endpoint if it does not already exists.
    """
    from models import Service
    if Service.objects.filter(url=endpoint).count() == 0:
        # check if endpoint is valid
        request = requests.get(endpoint)
        if request.status_code == 200:
            print 'Creating a %s service for endpoint %s' % (service_type,
                                                             endpoint)
            service = Service(type=service_type,
                              url=endpoint,
                              title=title,
                              abstract=abstract)
            service.save()
            return service
        else:
            print 'This endpoint is invalid, status code is %s' % request.status_code
    else:
        print 'A service for this endpoint %s already exists' % endpoint
        return None
Beispiel #7
0
def import_services(service_list):
    """Add any services from file to django database"""
    current_services = read_current_services()
    for service in service_list:
        if service not in current_services:
            new_service = Service(service_name=service)
            new_service.save()
Beispiel #8
0
def populate_initial_services():
    """
    Populate a fresh installed Hypermap instances with basic services.
    """
    services_list = (
        (
            'Harvard WorldMap',
            'Harvard WorldMap open source web geospatial platform',
            'WM',
            'http://worldmap.harvard.edu'
        ),
        (
            'NYPL MapWarper',
            'The New York Public Library (NYPL) MapWarper web site',
            'WARPER',
            'http://maps.nypl.org/warper/maps'
        ),
        (
            'Map Warper',
            'The MapWarper web site developed, hosted and maintained by Tim Waters',
            'WARPER',
            'http://mapwarper.net/maps'
        ),
        (
            'WorldMap Warp',
            'The MapWarper instance part of the Harvard WorldMap project',
            'WARPER',
            'http://warp.worldmap.harvard.edu/maps'
        ),
        (
            'WFP GeoNode',
            'World Food Programme GeoNode',
            'OGC_WMS',
            'http://geonode.wfp.org/geoserver/ows?'
        ),
        (
            'NASA EARTHDATA',
            'NASA EARTHDATA, powered by EOSDIS',
            'OGC_WMTS',
            'http://map1.vis.earthdata.nasa.gov/wmts-geo/1.0.0/WMTSCapabilities.xml'
        ),
    )

    esri_endpoint = 'https://gis.ngdc.noaa.gov/arcgis/rest/services'
    print '*** Importing esri endpoint: %s' % esri_endpoint
    create_services_from_endpoint(esri_endpoint)

    for service in services_list:
        print '*** Importing %s' % service[0]
        service = Service(
            title=service[0],
            abstract=service[1],
            type=service[2],
            url=service[3]
        )
        service.save()
Beispiel #9
0
    def test_creating_new_services(self):
        service = Service()
        service.name = "test"
        service.description = "Test Service"
        service.port = 8080
        service.protocol = Service.HTTP
        service.save()

        all_services_in_database = Service.objects.all()
        self.assertEquals(len(all_services_in_database), 1)
        only_service_in_database = all_services_in_database[0]
        self.assertEquals(only_service_in_database, service)
        
        self.assertEquals(only_service_in_database.name, "test")
        self.assertEquals(only_service_in_database.description, "Test Service")
        self.assertEquals(only_service_in_database.port, 8080)
Beispiel #10
0
    def on_post(self,request,response):
        # Get raw data from request body
        try:
            raw_data = request.stream.read()
        except Exception as ex:
            raise falcon.HTTPBadRequest(ex.message)
        
        # Jsonify the raw data
        try:
            data = json.loads(raw_data,encoding='utf-8')
        except ValueError:
            raise falcon.HTTPError(falcon.HTTP_400,'Unrecognized JSON','Unable to decode request body')

        # Return 404 if <tenant> does not exist
        if not data['tenant']:
            response.status = falcon.HTTP_404
            return

        # Return 404 if <integration_type> does not exist
        if not data['integration_type']:
            response.status = falcon.HTTP_404
            return

        # Validate data
        emptyValueKey = common.isEmpty(data['configuration'])
        if emptyValueKey:
            raise falcon.HTTPBadRequest('{} is missing'.format(emptyValueKey))
            return

        emptyValueKey = common.isEmpty(data['configuration']['wsdl_urls'])
        if emptyValueKey:
            raise falcon.HTTPBadRequest('{} is missing'.format(emptyValueKey))
            return

        # Query data from database
        result = Service.objects(tenant__iexact=data['tenant'], integration_type__iexact=data['integration_type']).exclude('id')
        
        ## No record found - insert new record. Else, update the existing record
        if result.count() < 1:
            new_config = Service(**data)
            new_config.save()
        else:
            result.modify(upsert=True, new=True, set__configuration=data['configuration'])

        # Response
        response.status = falcon.HTTP_200
        response.body = result.to_json()
 def create(self, validated_data):
     providers_data = validated_data.pop('provider')
     owners_data = validated_data.pop('owner')
     applications_data = validated_data.pop('application')
     clients_data = validated_data.pop('client')
     project_data = validated_data.pop('project')
     service = Service(**validated_data)
     service.project_id = project_data.id #project_data to lista
     service.save()
     for provider_data in providers_data:
         Provider.objects.create(service=service, **provider_data)
     for owner_data in owners_data:
         Owner.objects.create(service=service, **owner_data)
     for application_data in applications_data:
         Application.objects.create(service=service, **application_data)
     for client_data in clients_data:
         Client.objects.create(service=service, **client_data)
     return service
Beispiel #12
0
def services_create(request, competition=None):
    """
	Create services in the competition
	"""
    c = getAuthValues(request, {})
    if c["auth_name"] != "auth_team_white":
        return HttpResponseRedirect("/")
    c["comp_obj"] = Competition.objects.get(compurl=competition)
    if not bool(len(ServiceModule.objects.all())):
        return HttpResponseRedirect("/admin/competitions/%s/services/" %
                                    c["comp_obj"].compurl)
    if request.method != "POST":
        # Serve empty form without acting on any data
        c.update(csrf(request))
        c["form"] = CreateServiceForm()
        c["action"] = "create"
        return render_to_response('CompConfig/services_create-edit.html', c)
    # Prepare post data for validation
    form_dict = request.POST.copy().dict()
    serv_form = CreateServiceForm(form_dict)
    if not serv_form.is_valid():
        print serv_form.errors
        return render_to_response('CompConfig/services_create-edit.html', c)
    # Now prepare post data for service object instantiation
    form_dict.pop('csrfmiddlewaretoken', None)
    form_dict["compid"] = c["comp_obj"].compid
    form_dict["servicemodule"] = ServiceModule.objects.get(
        servmdulid=form_dict["servicemodule"])
    # Set network connection display
    if int(form_dict["connectip"]) == 1:
        form_dict['connectip'] = True
        form_dict["connect_display"] = "IP Address"
    else:
        form_dict['connectip'] = False
        form_dict["connect_display"] = "Domain Name"
    # Clean machine address value
    if form_dict['connectip'] and form_dict['networkloc'][0] == ".":
        form_dict['networkloc'] = form_dict['networkloc'][1:]
    elif not form_dict['connectip'] and form_dict['networkloc'][-1] == ".":
        form_dict['networkloc'] = form_dict['networkloc'][:-1]
    serv_obj = Service(**form_dict)
    serv_obj.save()
    return HttpResponseRedirect("/admin/competitions/%s/services/" %
                                competition)
Beispiel #13
0
def SaveService(lst):
    try:
        logok = ''
        logero = ''
        first_sheet = lst.sheet_by_index(0)
        for r in range(1, first_sheet.nrows):
            m = first_sheet.cell(r, 0).value
            m1 = ServerInfo.objects.get(IP=first_sheet.cell(r, 8).value).id
            chk = Service.objects.filter(ServiceName=m, Server_id=m1).exists()
            #			chkip 	= Service.objects.filter(Server_id = m1).exists()
            #			Service.objects.filter(ServiceName=request.POST['name'], Server_id=request.POST['title']).exists()
            if chk == False:
                server = ServerInfo.objects.get(
                    IP=first_sheet.cell(r, 8).value)
                sv = Service(
                    ServiceName=m,
                    ServiceType=first_sheet.cell(r, 1).value,
                    URL=first_sheet.cell(r, 2).value,
                    RunningAs=first_sheet.cell(r, 3).value,
                    Description=first_sheet.cell(r, 4).value,
                    URLWEBS=first_sheet.cell(r, 5).value,
                    Header=first_sheet.cell(r, 6).value,
                    Body=first_sheet.cell(r, 7).value,
                    DateCreate=first_sheet.cell(r, 9).value,
                    Owner=first_sheet.cell(r, 10).value,
                    Server_id=server.id,
                )
                sv.save()
                logok += first_sheet.cell(r, 0).value.encode("utf-8") + '/'
            elif chk == True:
                logero += first_sheet.cell(r, 0).value.encode("utf-8") + '/'


#		for svc in lst:
#			server = ServerInfo.objects.get(IP=svc['Server_IP'])
#			sv=Service(
#				ServiceName = svc['ServiceName'],
#				ServiceType = svc['ServiceType'],
#				Description = debug,
#				)
#			sv.save()
        return {'y0': logok, 'y1': logero}
    except:
        return False
Beispiel #14
0
def create_service_from_endpoint(endpoint, service_type, title=None, abstract=None):
    """
    Create a service from an endpoint if it does not already exists.
    """
    from models import Service
    if Service.objects.filter(url=endpoint).count() == 0:
        # check if endpoint is valid
        request = requests.get(endpoint)
        if request.status_code == 200:
            print 'Creating a %s service for endpoint %s' % (service_type, endpoint)
            service = Service(
                 type=service_type, url=endpoint, title=title, abstract=abstract
            )
            service.save()
            return service
        else:
            print 'This endpoint is invalid, status code is %s' % request.status_code
    else:
        print 'A service for this endpoint %s already exists' % endpoint
        return None
Beispiel #15
0
def services_create(request, competition = None):
	"""
	Create services in the competition
	"""
	c = getAuthValues(request, {})
	if c["auth_name"] != "auth_team_white":
		return HttpResponseRedirect("/")
	c["comp_obj"] = Competition.objects.get(compurl = competition)
	if not bool(len(ServiceModule.objects.all())):
		return HttpResponseRedirect("/admin/competitions/%s/services/" % c["comp_obj"].compurl)
	if request.method != "POST":
		# Serve empty form without acting on any data
		c.update(csrf(request))
		c["form"] = CreateServiceForm()
		c["action"] = "create"
		return render_to_response('CompConfig/services_create-edit.html', c)
	# Prepare post data for validation
	form_dict = request.POST.copy().dict()
	serv_form = CreateServiceForm(form_dict)
	if not serv_form.is_valid():
		print serv_form.errors
		return render_to_response('CompConfig/services_create-edit.html', c)
	# Now prepare post data for service object instantiation
	form_dict.pop('csrfmiddlewaretoken', None)
	form_dict["compid"] = c["comp_obj"].compid
	form_dict["servicemodule"] = ServiceModule.objects.get(servmdulid = form_dict["servicemodule"])
	# Set network connection display
	if int(form_dict["connectip"]) == 1:
		form_dict['connectip'] = True
		form_dict["connect_display"] = "IP Address"
	else:
		form_dict['connectip'] = False
		form_dict["connect_display"] = "Domain Name"
	# Clean machine address value
	if form_dict['connectip'] and form_dict['networkloc'][0] == ".":
		form_dict['networkloc'] = form_dict['networkloc'][1:]
	elif not form_dict['connectip'] and form_dict['networkloc'][-1] == ".":
		form_dict['networkloc'] = form_dict['networkloc'][:-1]
	serv_obj = Service(**form_dict)
	serv_obj.save()
	return HttpResponseRedirect("/admin/competitions/%s/services/" % competition)
Beispiel #16
0
def create_service_from_endpoint(endpoint, service_type, title=None, abstract=None, catalog=None):
    """
    Create a service from an endpoint if it does not already exists.
    """
    from models import Service
    if Service.objects.filter(url=endpoint, catalog=catalog).count() == 0:
        # check if endpoint is valid
        request = requests.get(endpoint)
        if request.status_code == 200:
            LOGGER.debug('Creating a %s service for endpoint=%s catalog=%s' % (service_type, endpoint, catalog))
            service = Service(
                        type=service_type, url=endpoint, title=title, abstract=abstract,
                        csw_type='service', catalog=catalog
                        )
            service.save()
            return service
        else:
            LOGGER.warning('This endpoint is invalid, status code is %s' % request.status_code)
    else:
        LOGGER.warning('A service for this endpoint %s in catalog %s already exists' % (endpoint, catalog))
        return None
Beispiel #17
0
    def setUp(self):

        for s in range(0, SERVICE_NUMBER):
            service = Service(
                url='http://%s.fakeurl.com' % s,
                title='Title %s' % s,
                type='OGC_WMS',
            )
            service.save()
            for l in range(0, 20):
                layer = Layer(name='Layer %s, from service %s' % (l, s),
                              bbox_x0=-179,
                              bbox_x1=179,
                              bbox_y0=-89,
                              bbox_y1=89,
                              service=service)
                layer.save()
                service.layer_set.add(layer)
        for c in range(0, TIMES_TO_CHECK):
            for s in range(0, SERVICE_NUMBER):
                service = Service.objects.all()[s]
                service.check()
                for layer in service.layer_set.all():
                    layer.check()
Beispiel #18
0
    def test_service_creation(self):
        user = User(username='******')
        user.save()
        cl = Client()
        cl.force_login(user)
        selected_queries_dict = {
            "Q1": {
                "query_id": "313",
                "paragraphs": ["20180501-135246_1102090558"]
            }
        }
        selected_queries = json.dumps(selected_queries_dict)
        # print selected_queries
        arguments_dict = {
            "filter-arguments": [{
                "default_lat_max": "42.098",
                "areaSelectHeight": "100",
                "name": "area_select",
                "areaSelectWidth": "150",
                "title": "Select the area",
                "default": "<<35.675,-12.744>,<42.098,-1.846>>",
                "default_lat_min": "35.675",
                "filter_op": " inside_rect",
                "default_lon_min": "-12.744",
                "default_lon_max": "-1.846",
                "query": "Q1",
                "type": "SPATIAL_COV",
                "filter_b": "<<35.675,-12.744>,<42.098,-1.846>>",
                "filter_a": "<36,38>"
            }, {
                "name": "start_date",
                "title": "Starting Date",
                "default": "2018-01-01 00:00",
                "filter_op": "gte",
                "query": "Q1",
                "type": "DATETIME",
                "filter_b": "2018-01-01 00:00",
                "filter_a": "i0_time"
            }, {
                "name": "end_date",
                "title": "Ending Date",
                "default": "2018-01-31 00:00",
                "filter_op": "lte",
                "query": "Q1",
                "type": "DATETIME",
                "filter_b": "2018-01-31 00:00",
                "filter_a": "i0_time"
            }],
            "algorithm-arguments": []
        }
        arguments = json.dumps(arguments_dict)
        # print arguments
        notebook_id = "2DP3SVY7D"
        # print notebook_id
        output_html = textwrap.dedent(
            """<div id="service_container" class="text-center">
                    <div id="service_config_container" class="text-center">
                        <button type="button" id="argsCollapseBtn" class="btn btn-md btn-primary" data-toggle="collapse" data-target="#serviceConfigCollapse">
                          Configure
                        </button>
                        <div id="serviceConfigCollapse" class="collapse in" >
                            <div class="well">
                                <h4 class="modal-title">Please give your input</h4>
                                <form id="service_args_container" class="modal-body" style="padding: 0 25%">

                                </form>
                                <button type="button" class="btn btn-success" data-toggle="collapse" data-target="#serviceConfigCollapse" id="submitServiceConfig">Submit</button>
                                <button type="button" class="btn btn-default" data-toggle="collapse" data-target="#serviceConfigCollapse">Cancel</button>
                            </div>
                        </div>
                    </div>

                    <div id="service_result_container" class="text-center">
                        {% load static %}
                        <div class="loadingDiv">
                            <img src="http://assets.motherjones.com/interactives/projects/features/koch-network/shell19/img/loading.gif"/>
                        </div>

                        <table class="table table-full-width">
                            <thead>
                                <tr>
                                    <th>Maximum Height</th><th>Average Height</th><th>Standard Deviation</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>{{ result.max_height }}</td><td>{{ result.av_height }}</td><td>{{ result.stand_dev_height }}</td>
                                </tr>
                            </tbody>
                        </table>

                        <table class="table table-full-width">
                            <thead>
                                <tr>
                                    <th>Maximum Period</th><th>Average Period</th><th>Standard Deviation</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>{{ result.max_period }}</td><td>{{ result.av_period }}</td><td>{{ result.stand_dev_period }}</td>
                                </tr>
                            </tbody>
                        </table>

                        <div class="panel-group row">
                            <div class="panel panel-default col-sm-3">
                                <div class="panel-heading">Maximum Power</div>
                                <div class="panel-body">{{ result.max_power }}</div>
                            </div>
                            <div class="panel panel-default col-sm-3">
                                <div class="panel-heading">Minimum Power</div>
                                <div class="panel-body">{{ result.min_power }}</div>
                            </div>
                            <div class="panel panel-default col-sm-3">
                                <div class="panel-heading">Average Power</div>
                                <div class="panel-body">{{ result.av_power }}</div>
                            </div>
                            <div class="panel panel-default col-sm-3">
                                <div class="panel-heading">Energy</div>
                                <div class="panel-body">{{ result.energy }}</div>
                            </div>
                        </div>

                        <ul class="nav nav-pills">
                          <li class="active"><a data-toggle="pill" href="#viz1">Wave significant height Line Chart</a></li>
                          <li><a data-toggle="pill" href="#viz2">Power Line Chart</a></li>
                          <li><a data-toggle="pill" href="#viz3">Power Histogram</a></li>
                        </ul>

                        <div class="tab-content">
                            <div class="viz_container row tab-pane fade in active"  id="viz1">
                                <div class="loadingFrame">
                                    <img src="{% static 'img/loading_gif.gif' %}"/>
                                </div>
                                <iframe src="http://*****:*****@media screen and (min-width: 768px){.modal:before {display: inline-block;vertical-align: middle;content: " ";height: 100%;}}
.modal-backdrop {z-index:-1;}
#service_result_container{ position: relative; min-height: 500px; width: 100%; /*background-color: white;*/ display: none;}
.loadingDiv, .loadingFrame{position:absolute;z-index:999;display:none;right:0;left:0;bottom:0;top:0;background:#fff;text-align:center;border:thin dashed;}
.viz_container{position: relative; height: 400px; width: 100%; margin: 1% 0;}
#service_result_container iframe{border: none; box-shadow: 0 0 3px 0px #a28e8eb0;}
th{text-align: center; font-weight: 600 !important;}
#service_result_container .nav>li {display: inline-block !important;width: 300px !important; float: none !important;}"""
        )
        # print output_css
        output_js = textwrap.dedent("""// <script type="text/javascript">
// Get form fields of all the service arguments
$(document).ready(function () {
  $.ajax({
        url: '/service_builder/load_service_args_form_fields/',
        data: {
            service_id: get_service_id()
        },
        type: 'GET',
        success: function(form_fields){
            $("#service_args_container").html(form_fields);
        }
    });
});





// Submit the service arguments
$("#submitServiceConfig").click(function (element) {
  $.ajax({
        url: '/service_builder/service/'+get_service_id()+'/execute/',
        data: $('#service_args_container').serialize(),
        type: 'GET',
        beforeSend: function(){
            $("#service_result_container").show();
            $(".loadingDiv").css( "display", "block" );
        },
        success: function(result){
            $("#service_result_container").html( result );
            // $("iframe").each(function () {
            //     var src = $( this ).attr('data-src');
            //     jQuery.each(result['query_mapping'], function(query, temp_query) {
            //       src = src.replace(new RegExp("query="+query+"&"), "query="+temp_query+"&");
            //       src = src.replace(new RegExp("query="+query+"$"), "query="+temp_query);
            //     });
            //     $( this ).attr({'src': src});
            // });
            $(".loadingDiv").css( "display", "none" );
            $(".loadingFrame").css( "display", "block" );
            $(".viz_container iframe").on( "load", function(){
                $(this).siblings(".loadingFrame").css( "display", "none" )
            });

        },
        error: function () {
            $(".loadingDiv").css( "display", "none" );
            $("#service_result_container").hide();
            alert('An error occured');
        }
    });
});
    // </script>""")
        # print output_js
        title = "My test service"
        description = "My test description"
        price = "free"
        private = True

        service = Service(user=user)
        service.save()
        service_id = service.id

        payload = {
            "selected_queries": selected_queries,
            "exposed_args": arguments,
            "notebook_id": notebook_id,
            "output_html": output_html,
            "output_css": output_css,
            "output_js": output_js,
            "title": str(title),
            "description": description,
            "price": price,
            "private": private,
            "service_id": service_id
        }

        url = "http://localhost:8000/service_builder/publish/"

        cl.post(url, payload)

        service = Service.objects.get(pk=service_id)

        self.assertEqual(str(service.title), str(title))
        self.assertEqual(service.private, private)
        self.assertEqual(service.published, True)
        self.assertEqual(service.price, price)
        self.assertEqual(service.description, description)
        self.assertEqual(service.notebook_id, notebook_id)
        self.assertEqual(service.output_html, output_html)
        self.assertEqual(service.output_css, output_css)
        self.assertEqual(service.output_js, output_js)
        self.assertDictEqual(service.arguments, arguments_dict)
        self.assertEqual(service.queries, selected_queries_dict)
Beispiel #19
0
class ServicesViewsTest(TestCase):
    username = "******"
    password = "******"

    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(name='default')
        perspective.set_default_user()
        perspective.save()

        ModuleSetting.set('default_perspective', perspective.id)

        self.contact_type = ContactType(name='test')
        self.contact_type.set_default_user()
        self.contact_type.save()

        self.contact = Contact(name='test', contact_type=self.contact_type)
        self.contact.set_default_user()
        self.contact.save()

        self.status = TicketStatus(name='TestStatus')
        self.status.set_default_user()
        self.status.save()

        self.queue = TicketQueue(
            name='TestQueue', default_ticket_status=self.status)
        self.queue.set_default_user()
        self.queue.save()

        self.ticket = Ticket(
            name='TestTicket', status=self.status, queue=self.queue)
        self.ticket.set_default_user()
        self.ticket.save()

        self.agent = ServiceAgent(related_user=self.user.profile, available_from=datetime.time(9),
                                  available_to=datetime.time(17))
        self.agent.set_default_user()
        self.agent.save()

        self.service = Service(name='test')
        self.service.set_default_user()
        self.service.save()

        self.sla = ServiceLevelAgreement(name='test', service=self.service,
                                         client=self.contact, provider=self.contact)
        self.sla.set_default_user()
        self.sla.save()

    ######################################
    # Testing views when user is logged in
    ######################################
    def test_index_login(self):
        "Test index page with login at /services/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services'))
        self.assertEquals(response.status_code, 200)

    def test_index_owned(self):
        "Test index page with login at /services/owned"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_index_owned'))
        self.assertEquals(response.status_code, 200)

    def test_index_assigned(self):
        "Test index page with login at /services/assigned"

        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_index_assigned'))
        self.assertEquals(response.status_code, 200)

    # Queues
    def test_queue_add(self):
        "Test page with login at /services/queue/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_queue_add'))
        self.assertEquals(response.status_code, 200)

    def test_queue_view(self):
        "Test page with login at /services/queue/view/<queue_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_queue_view', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    def test_queue_edit(self):
        "Test page with login at /services/queue/edit/<queue_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_queue_edit', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    def test_queue_delete(self):
        "Test page with login at /services/queue/delete/<queue_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_queue_delete', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    # Statuses
    def test_status_view(self):
        "Test index page with login at /services/status/view/<status_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_status_view', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_edit(self):
        "Test index page with login at /services/status/edit/<status_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_status_edit', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_delete(self):
        "Test index page with login at /services/status/delete/<status_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_status_delete', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_add(self):
        "Test index page with login at /services/status/add/"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_status_add'))
        self.assertEquals(response.status_code, 200)

    # Tickets
    def test_ticket_add(self):
        "Test page with login at /services/ticket/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_ticket_add'))
        self.assertEquals(response.status_code, 200)

    def test_ticket_add_by_queue(self):
        "Test page with login at /services/ticket/add/queue/(?P<queue_id>\d+)"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_add_by_queue', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_view(self):
        "Test page with login at /services/ticket/view/<ticket_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_view', args=[self.ticket.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_edit(self):
        "Test page with login at /services/ticket/edit/<ticket_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_edit', args=[self.ticket.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_delete(self):
        "Test page with login at /services/ticket/delete/<ticket_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_delete', args=[self.ticket.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_set_status(self):
        "Test page with login at /services/ticket/set/(?P<ticket_id>\d+)/status/(?P<status_id>\d+)"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_set_status', args=[self.ticket.id, self.status.id]))
        self.assertEquals(response.status_code, 200)

    # Settings
    def test_settings_view(self):
        "Test page with login at /services/settings/view"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_settings_view'))
        self.assertEquals(response.status_code, 200)

    def test_settings_edit(self):
        "Test page with login at /services/settings/edit"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_settings_view'))
        self.assertEquals(response.status_code, 200)

    # Catalogue
    def test_service_catalogue(self):
        "Test page with login at /services/catalogue"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_service_catalogue'))
        self.assertEquals(response.status_code, 200)

    # Services
    def test_service_view(self):
        "Test page with login at /services/service/view/<service_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_service_view', args=[self.service.id]))
        self.assertEquals(response.status_code, 200)

    def test_service_edit(self):
        "Test page with login at /services/service/edit/<service_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_service_edit', args=[self.service.id]))
        self.assertEquals(response.status_code, 200)

    def test_service_delete(self):
        "Test page with login at /services/service/delete/<service_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_service_delete', args=[self.service.id]))
        self.assertEquals(response.status_code, 200)

    def test_service_add(self):
        "Test page with login at /services/service/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_service_add'))
        self.assertEquals(response.status_code, 200)

    # SLAs
    def test_sla_index(self):
        "Test page with login at /services/sla"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_sla_index'))
        self.assertEquals(response.status_code, 200)

    def test_sla_view(self):
        "Test page with login at /services/sla/view/<sla_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_sla_view', args=[self.sla.id]))
        self.assertEquals(response.status_code, 200)

    def test_sla_edit(self):
        "Test page with login at /services/sla/edit/<sla_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_sla_edit', args=[self.sla.id]))
        self.assertEquals(response.status_code, 200)

    def test_sla_delete(self):
        "Test page with login at /services/sla/delete/<sla_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_sla_delete', args=[self.sla.id]))
        self.assertEquals(response.status_code, 200)

    def test_sla_add(self):
        "Test page with login at /services/sla/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_sla_index'))
        self.assertEquals(response.status_code, 200)

    # Agents
    def test_agent_index(self):
        "Test page with login at /services/agent"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_agent_index'))
        self.assertEquals(response.status_code, 200)

    def test_agent_view(self):
        "Test page with login at /services/agent/view/<agent_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_agent_view', args=[self.agent.id]))
        self.assertEquals(response.status_code, 200)

    def test_agent_edit(self):
        "Test page with login at /services/agent/edit/<agent_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_agent_edit', args=[self.agent.id]))
        self.assertEquals(response.status_code, 200)

    def test_agent_delete(self):
        "Test page with login at /services/agent/delete/<agent_id>"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_agent_delete', args=[self.agent.id]))
        self.assertEquals(response.status_code, 200)

    def test_agent_add(self):
        "Test page with login at /services/agent/add"
        response = self.client.post('/accounts/login',
                                    {'username': self.username, 'password': self.password})
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_agent_add'))
        self.assertEquals(response.status_code, 200)

    ######################################
    # Testing views when user is not logged in
    ######################################
    def test_index(self):
        "Test index page at /services/"
        response = self.client.get(reverse('services'))
        # Redirects as unauthenticated
        self.assertRedirects(response, reverse('user_login'))

    def test_index_owned_out(self):
        "Testing /services/owned"
        response = self.client.get(reverse('services_index_owned'))
        self.assertRedirects(response, reverse('user_login'))

    def test_index_assigned_out(self):
        "Testing /services/assigned"
        response = self.client.get(reverse('services_index_assigned'))
        self.assertRedirects(response, reverse('user_login'))

    # Queues
    def test_queue_add_out(self):
        "Testing /services/queue/add"
        response = self.client.get(reverse('services_queue_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_queue_view_out(self):
        "Testing /services/queue/view/<queue_id>"
        response = self.client.get(
            reverse('services_queue_view', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_queue_edit_out(self):
        "Testing /services/queue/edit/<queue_id>"
        response = self.client.get(
            reverse('services_queue_edit', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_queue_delete_out(self):
        "Testing /services/queue/delete/<queue_id>"
        response = self.client.get(
            reverse('services_queue_delete', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Statuses
    def test_status_view_out(self):
        "Testing /services/status/view/<status_id>"
        response = self.client.get(
            reverse('services_status_view', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_edit_out(self):
        "Testing /services/status/edit/<status_id>"
        response = self.client.get(
            reverse('services_status_edit', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_delete_out(self):
        "Testing /services/status/delete/<status_id>"
        response = self.client.get(
            reverse('services_status_delete', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_add_out(self):
        "Testing /services/status/add/"
        response = self.client.get(reverse('services_status_add'))
        self.assertRedirects(response, reverse('user_login'))

    # Tickets
    def test_ticket_add_out(self):
        "Testing /services/ticket/add"
        response = self.client.get(reverse('services_ticket_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_add_by_queue_out(self):
        "Testing /services/ticket/add/queue/(?P<queue_id>\d+)"
        response = self.client.get(
            reverse('services_ticket_add_by_queue', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_view_out(self):
        "Testing /services/ticket/view/<ticket_id>"
        response = self.client.get(
            reverse('services_ticket_view', args=[self.ticket.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_edit_out(self):
        "Testing /services/ticket/edit/<ticket_id>"
        response = self.client.get(
            reverse('services_ticket_edit', args=[self.ticket.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_delete_out(self):
        "Testing /services/ticket/delete/<ticket_id>"
        response = self.client.get(
            reverse('services_ticket_delete', args=[self.ticket.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_set_status_out(self):
        "Testing /services/ticket/set/(?P<ticket_id>\d+)/status/(?P<status_id>\d+)"
        response = self.client.get(
            reverse('services_ticket_set_status', args=[self.ticket.id, self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Settings
    def test_settings_view_out(self):
        "Testing /services/settings/view"
        response = self.client.get(reverse('services_settings_view'))
        self.assertRedirects(response, reverse('user_login'))

    def test_settings_edit_out(self):
        "Testing /services/settings/edit"
        response = self.client.get(reverse('services_settings_view'))
        self.assertRedirects(response, reverse('user_login'))

    # Catalogue
    def test_service_catalogue_out(self):
        "Testing /services/catalogue"
        response = self.client.get(reverse('services_service_catalogue'))
        self.assertRedirects(response, reverse('user_login'))

    # Services
    def test_service_view_out(self):
        "Testing /services/service/view/<service_id>"
        response = self.client.get(
            reverse('services_service_view', args=[self.service.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_service_edit_out(self):
        "Testing /services/service/edit/<service_id>"
        response = self.client.get(
            reverse('services_service_edit', args=[self.service.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_service_delete_out(self):
        "Testing /services/service/delete/<service_id>"
        response = self.client.get(
            reverse('services_service_delete', args=[self.service.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_service_add_out(self):
        "Testing /services/service/add"
        response = self.client.get(reverse('services_service_add'))
        self.assertRedirects(response, reverse('user_login'))

    # SLAs
    def test_sla_index_out(self):
        "Testing /services/sla"
        response = self.client.get(reverse('services_sla_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_view_out(self):
        "Testing /services/sla/view/<sla_id>"
        response = self.client.get(
            reverse('services_sla_view', args=[self.sla.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_edit_out(self):
        "Testing /services/sla/edit/<sla_id>"
        response = self.client.get(
            reverse('services_sla_edit', args=[self.sla.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_delete_out(self):
        "Testing /services/sla/delete/<sla_id>"
        response = self.client.get(
            reverse('services_sla_delete', args=[self.sla.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_add_out(self):
        "Testing /services/sla/add"
        response = self.client.get(reverse('services_sla_index'))
        self.assertRedirects(response, reverse('user_login'))

    # Agents
    def test_agent_index_out(self):
        "Testing /services/agent"
        response = self.client.get(reverse('services_agent_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_view_out(self):
        "Testing /services/agent/view/<agent_id>"
        response = self.client.get(
            reverse('services_agent_view', args=[self.agent.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_edit_out(self):
        "Testing /services/agent/edit/<agent_id>"
        response = self.client.get(
            reverse('services_agent_edit', args=[self.agent.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_delete_out(self):
        "Test page with login at /services/agent/delete/<agent_id>"
        response = self.client.get(
            reverse('services_agent_delete', args=[self.agent.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_add_out(self):
        "Test page with login at /services/agent/add"
        response = self.client.get(reverse('services_agent_add'))
        self.assertRedirects(response, reverse('user_login'))
 def post(self):
   form = Service.NewServiceForm(self.request.POST)
   if form.validate():
     user = Service.save(self, form, LEGACY_TEMPLATE)
   else:
     self.response.write(LEGACY_TEMPLATE.render({"form": form}))
Beispiel #21
0
class ServicesViewsTest(TestCase):
    username = "******"
    password = "******"

    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(
            username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(
            name='default')
        perspective.set_default_user()
        perspective.save()

        ModuleSetting.set('default_perspective', perspective.id)

        self.contact_type = ContactType(name='test')
        self.contact_type.set_default_user()
        self.contact_type.save()

        self.contact = Contact(name='test', contact_type=self.contact_type)
        self.contact.set_default_user()
        self.contact.save()

        self.status = TicketStatus(name='TestStatus')
        self.status.set_default_user()
        self.status.save()

        self.queue = TicketQueue(name='TestQueue',
                                 default_ticket_status=self.status)
        self.queue.set_default_user()
        self.queue.save()

        self.ticket = Ticket(name='TestTicket',
                             status=self.status,
                             queue=self.queue)
        self.ticket.set_default_user()
        self.ticket.save()

        self.agent = ServiceAgent(related_user=self.user.profile,
                                  available_from=datetime.time(9),
                                  available_to=datetime.time(17))
        self.agent.set_default_user()
        self.agent.save()

        self.service = Service(name='test')
        self.service.set_default_user()
        self.service.save()

        self.sla = ServiceLevelAgreement(name='test',
                                         service=self.service,
                                         client=self.contact,
                                         provider=self.contact)
        self.sla.set_default_user()
        self.sla.save()

    ######################################
    # Testing views when user is logged in
    ######################################
    def test_index_login(self):
        "Test index page with login at /services/"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services'))
        self.assertEquals(response.status_code, 200)

    def test_index_owned(self):
        "Test index page with login at /services/owned"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_index_owned'))
        self.assertEquals(response.status_code, 200)

    def test_index_assigned(self):
        "Test index page with login at /services/assigned"

        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_index_assigned'))
        self.assertEquals(response.status_code, 200)

    # Queues
    def test_queue_add(self):
        "Test page with login at /services/queue/add"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_queue_add'))
        self.assertEquals(response.status_code, 200)

    def test_queue_view(self):
        "Test page with login at /services/queue/view/<queue_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_queue_view', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    def test_queue_edit(self):
        "Test page with login at /services/queue/edit/<queue_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_queue_edit', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    def test_queue_delete(self):
        "Test page with login at /services/queue/delete/<queue_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_queue_delete', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    # Statuses
    def test_status_view(self):
        "Test index page with login at /services/status/view/<status_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_status_view', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_edit(self):
        "Test index page with login at /services/status/edit/<status_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_status_edit', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_delete(self):
        "Test index page with login at /services/status/delete/<status_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_status_delete', args=[self.status.id]))
        self.assertEquals(response.status_code, 200)

    def test_status_add(self):
        "Test index page with login at /services/status/add/"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_status_add'))
        self.assertEquals(response.status_code, 200)

    # Tickets
    def test_ticket_add(self):
        "Test page with login at /services/ticket/add"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_ticket_add'))
        self.assertEquals(response.status_code, 200)

    def test_ticket_add_by_queue(self):
        "Test page with login at /services/ticket/add/queue/(?P<queue_id>\d+)"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_add_by_queue', args=[self.queue.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_view(self):
        "Test page with login at /services/ticket/view/<ticket_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_view', args=[self.ticket.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_edit(self):
        "Test page with login at /services/ticket/edit/<ticket_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_edit', args=[self.ticket.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_delete(self):
        "Test page with login at /services/ticket/delete/<ticket_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_delete', args=[self.ticket.id]))
        self.assertEquals(response.status_code, 200)

    def test_ticket_set_status(self):
        "Test page with login at /services/ticket/set/(?P<ticket_id>\d+)/status/(?P<status_id>\d+)"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_ticket_set_status',
                    args=[self.ticket.id, self.status.id]))
        self.assertEquals(response.status_code, 200)

    # Settings
    def test_settings_view(self):
        "Test page with login at /services/settings/view"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_settings_view'))
        self.assertEquals(response.status_code, 200)

    def test_settings_edit(self):
        "Test page with login at /services/settings/edit"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_settings_view'))
        self.assertEquals(response.status_code, 200)

    # Catalogue
    def test_service_catalogue(self):
        "Test page with login at /services/catalogue"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_service_catalogue'))
        self.assertEquals(response.status_code, 200)

    # Services
    def test_service_view(self):
        "Test page with login at /services/service/view/<service_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_service_view', args=[self.service.id]))
        self.assertEquals(response.status_code, 200)

    def test_service_edit(self):
        "Test page with login at /services/service/edit/<service_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_service_edit', args=[self.service.id]))
        self.assertEquals(response.status_code, 200)

    def test_service_delete(self):
        "Test page with login at /services/service/delete/<service_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_service_delete', args=[self.service.id]))
        self.assertEquals(response.status_code, 200)

    def test_service_add(self):
        "Test page with login at /services/service/add"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_service_add'))
        self.assertEquals(response.status_code, 200)

    # SLAs
    def test_sla_index(self):
        "Test page with login at /services/sla"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_sla_index'))
        self.assertEquals(response.status_code, 200)

    def test_sla_view(self):
        "Test page with login at /services/sla/view/<sla_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_sla_view', args=[self.sla.id]))
        self.assertEquals(response.status_code, 200)

    def test_sla_edit(self):
        "Test page with login at /services/sla/edit/<sla_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_sla_edit', args=[self.sla.id]))
        self.assertEquals(response.status_code, 200)

    def test_sla_delete(self):
        "Test page with login at /services/sla/delete/<sla_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_sla_delete', args=[self.sla.id]))
        self.assertEquals(response.status_code, 200)

    def test_sla_add(self):
        "Test page with login at /services/sla/add"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_sla_index'))
        self.assertEquals(response.status_code, 200)

    # Agents
    def test_agent_index(self):
        "Test page with login at /services/agent"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_agent_index'))
        self.assertEquals(response.status_code, 200)

    def test_agent_view(self):
        "Test page with login at /services/agent/view/<agent_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_agent_view', args=[self.agent.id]))
        self.assertEquals(response.status_code, 200)

    def test_agent_edit(self):
        "Test page with login at /services/agent/edit/<agent_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_agent_edit', args=[self.agent.id]))
        self.assertEquals(response.status_code, 200)

    def test_agent_delete(self):
        "Test page with login at /services/agent/delete/<agent_id>"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(
            reverse('services_agent_delete', args=[self.agent.id]))
        self.assertEquals(response.status_code, 200)

    def test_agent_add(self):
        "Test page with login at /services/agent/add"
        response = self.client.post('/accounts/login', {
            'username': self.username,
            'password': self.password
        })
        self.assertRedirects(response, '/')
        response = self.client.get(reverse('services_agent_add'))
        self.assertEquals(response.status_code, 200)

    ######################################
    # Testing views when user is not logged in
    ######################################
    def test_index(self):
        "Test index page at /services/"
        response = self.client.get(reverse('services'))
        # Redirects as unauthenticated
        self.assertRedirects(response, reverse('user_login'))

    def test_index_owned_out(self):
        "Testing /services/owned"
        response = self.client.get(reverse('services_index_owned'))
        self.assertRedirects(response, reverse('user_login'))

    def test_index_assigned_out(self):
        "Testing /services/assigned"
        response = self.client.get(reverse('services_index_assigned'))
        self.assertRedirects(response, reverse('user_login'))

    # Queues
    def test_queue_add_out(self):
        "Testing /services/queue/add"
        response = self.client.get(reverse('services_queue_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_queue_view_out(self):
        "Testing /services/queue/view/<queue_id>"
        response = self.client.get(
            reverse('services_queue_view', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_queue_edit_out(self):
        "Testing /services/queue/edit/<queue_id>"
        response = self.client.get(
            reverse('services_queue_edit', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_queue_delete_out(self):
        "Testing /services/queue/delete/<queue_id>"
        response = self.client.get(
            reverse('services_queue_delete', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Statuses
    def test_status_view_out(self):
        "Testing /services/status/view/<status_id>"
        response = self.client.get(
            reverse('services_status_view', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_edit_out(self):
        "Testing /services/status/edit/<status_id>"
        response = self.client.get(
            reverse('services_status_edit', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_delete_out(self):
        "Testing /services/status/delete/<status_id>"
        response = self.client.get(
            reverse('services_status_delete', args=[self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_status_add_out(self):
        "Testing /services/status/add/"
        response = self.client.get(reverse('services_status_add'))
        self.assertRedirects(response, reverse('user_login'))

    # Tickets
    def test_ticket_add_out(self):
        "Testing /services/ticket/add"
        response = self.client.get(reverse('services_ticket_add'))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_add_by_queue_out(self):
        "Testing /services/ticket/add/queue/(?P<queue_id>\d+)"
        response = self.client.get(
            reverse('services_ticket_add_by_queue', args=[self.queue.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_view_out(self):
        "Testing /services/ticket/view/<ticket_id>"
        response = self.client.get(
            reverse('services_ticket_view', args=[self.ticket.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_edit_out(self):
        "Testing /services/ticket/edit/<ticket_id>"
        response = self.client.get(
            reverse('services_ticket_edit', args=[self.ticket.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_delete_out(self):
        "Testing /services/ticket/delete/<ticket_id>"
        response = self.client.get(
            reverse('services_ticket_delete', args=[self.ticket.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_ticket_set_status_out(self):
        "Testing /services/ticket/set/(?P<ticket_id>\d+)/status/(?P<status_id>\d+)"
        response = self.client.get(
            reverse('services_ticket_set_status',
                    args=[self.ticket.id, self.status.id]))
        self.assertRedirects(response, reverse('user_login'))

    # Settings
    def test_settings_view_out(self):
        "Testing /services/settings/view"
        response = self.client.get(reverse('services_settings_view'))
        self.assertRedirects(response, reverse('user_login'))

    def test_settings_edit_out(self):
        "Testing /services/settings/edit"
        response = self.client.get(reverse('services_settings_view'))
        self.assertRedirects(response, reverse('user_login'))

    # Catalogue
    def test_service_catalogue_out(self):
        "Testing /services/catalogue"
        response = self.client.get(reverse('services_service_catalogue'))
        self.assertRedirects(response, reverse('user_login'))

    # Services
    def test_service_view_out(self):
        "Testing /services/service/view/<service_id>"
        response = self.client.get(
            reverse('services_service_view', args=[self.service.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_service_edit_out(self):
        "Testing /services/service/edit/<service_id>"
        response = self.client.get(
            reverse('services_service_edit', args=[self.service.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_service_delete_out(self):
        "Testing /services/service/delete/<service_id>"
        response = self.client.get(
            reverse('services_service_delete', args=[self.service.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_service_add_out(self):
        "Testing /services/service/add"
        response = self.client.get(reverse('services_service_add'))
        self.assertRedirects(response, reverse('user_login'))

    # SLAs
    def test_sla_index_out(self):
        "Testing /services/sla"
        response = self.client.get(reverse('services_sla_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_view_out(self):
        "Testing /services/sla/view/<sla_id>"
        response = self.client.get(
            reverse('services_sla_view', args=[self.sla.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_edit_out(self):
        "Testing /services/sla/edit/<sla_id>"
        response = self.client.get(
            reverse('services_sla_edit', args=[self.sla.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_delete_out(self):
        "Testing /services/sla/delete/<sla_id>"
        response = self.client.get(
            reverse('services_sla_delete', args=[self.sla.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_sla_add_out(self):
        "Testing /services/sla/add"
        response = self.client.get(reverse('services_sla_index'))
        self.assertRedirects(response, reverse('user_login'))

    # Agents
    def test_agent_index_out(self):
        "Testing /services/agent"
        response = self.client.get(reverse('services_agent_index'))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_view_out(self):
        "Testing /services/agent/view/<agent_id>"
        response = self.client.get(
            reverse('services_agent_view', args=[self.agent.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_edit_out(self):
        "Testing /services/agent/edit/<agent_id>"
        response = self.client.get(
            reverse('services_agent_edit', args=[self.agent.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_delete_out(self):
        "Test page with login at /services/agent/delete/<agent_id>"
        response = self.client.get(
            reverse('services_agent_delete', args=[self.agent.id]))
        self.assertRedirects(response, reverse('user_login'))

    def test_agent_add_out(self):
        "Test page with login at /services/agent/add"
        response = self.client.get(reverse('services_agent_add'))
        self.assertRedirects(response, reverse('user_login'))