Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ public class SparqlSource extends SourceBase implements Source {

protected final Lock lock = new LockNone();

protected final String basicUser;
public final String basicUser;

protected final char[] basicPassword;
public final char[] basicPassword;

protected final HttpClient httpClient;

Expand Down Expand Up @@ -99,10 +99,11 @@ public SparqlSource(Resource ep, AuthMap am) {

HttpClient.Builder builder = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1);
if (this.basicUser != null) {
PasswordAuthentication pa = new PasswordAuthentication(basicUser, basicPassword);
builder.authenticator(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(basicUser, basicPassword);
return pa;
}
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.epimorphics.lda.core;

import com.epimorphics.lda.sources.SparqlSource;
import com.epimorphics.lda.specs.APISpec;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.util.FileManager;
import org.junit.Before;
import org.junit.Test;

import java.io.*;

import static org.apache.jena.rdf.model.ModelFactory.createDefaultModel;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;

public class SparqlAuthTest {

@Before
public void before() throws Exception {
File authFile = new File("/tmp/elda/test/authz.txt");
if (authFile.exists()) authFile.delete(); else authFile.getParentFile().mkdirs();
Writer w = new FileWriter(authFile).append("basic.user=elda\nbasic.password=p455w0rd");
w.close();
}

private Model readFromResource(String path) {
Model model = createDefaultModel();
try {
try (InputStream input = this.getClass().getResource(path).openStream()) {
model.read(input, "", "TTL");
}
} catch (IOException ioe) {
fail(ioe.getMessage());
}

return model;
}

@Test
public void test() {
Model model = readFromResource("/auth/api.ttl");
Resource api = model.getResource("http://www.epimorphics.com/tools/example#api");
APISpec spec = new APISpec(mock(FileManager.class), api, mock(ModelLoader.class));
SparqlSource ds = (SparqlSource)spec.getDataSource();
assertEquals("elda", ds.basicUser);
assertEquals("p455w0rd", new String(ds.basicPassword));
}
}
55 changes: 55 additions & 0 deletions elda-lda/src/test/resources/auth/api.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
## Common prefixes.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix api: <http://purl.org/linked-data/api/vocab#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix spatialrelations: <http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> .
@prefix admingeo: <http://statistics.data.gov.uk/def/administrative-geography/> .
@prefix qb: <http://purl.org/linked-data/cube#> .
@prefix time: <http://www.w3.org/2006/time#> .
@prefix interval: <http://reference.data.gov.uk/def/intervals/> .
@prefix dgu: <http://reference.data.gov.uk/def/reference/> .
@prefix bw: <http://environment.data.gov.uk/id/bathing-water/> .
@prefix bwsp: <http://location.data.gov.uk/so/ef/SamplingPoint/bwsp.eaew/> .
@prefix bwq: <http://environment.data.gov.uk/def/bathing-water-quality/> .
@prefix bwq-iss: <http://environment.data.gov.uk/data/bathing-water-quality/in-season/slice/> .
@prefix bw-def: <http://environment.data.gov.uk/def/bathing-water/> .
@prefix ef-def: <http://location.data.gov.uk/def/ef/SamplingPoint/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix t: <http://environment.data.gov.uk/api#> .
@prefix dgu: <http://reference.data.gov.uk/def/reference/> .
@prefix void: <http://rdfs.org/ns/void#> .
@prefix elda: <http://www.epimorphics.com/vocabularies/lda#> .
@prefix : <http://www.epimorphics.com/tools/example#> .

<https://sparql-endpoint:3030/ds/query>
elda:authKey "authz" ;
elda:authFile "/tmp/elda/test/authz.txt" .

:api
a api:API ;
api:sparqlEndpoint <https://sparql-endpoint:3030/ds/query>;
api:endpoint t:bathingWaters ;
elda:encloseDescribe true ;
.

:default
a api:API ;
api:sparqlEndpoint :sparql;
api:endpoint t:bathingWaters ;
.

t:bathingWaters
a api:ListEndpoint ;
api:uriTemplate "/doc/bathing-water" ;
api:exampleRequestPath "/doc/bathing-water" ;
api:viewer api:describeViewer;
api:defaultViewer api:describeViewer;
api:selector [
api:filter "type=BathingWater" ;
# api:sort "samplingPoint.samplePointNotation";
] .
Loading