Skip to content

Commit

Permalink
chats: make sure message data is only read from message document
Browse files Browse the repository at this point in the history
  • Loading branch information
angelo-v committed Sep 2, 2024
1 parent 86d95e6 commit 0b2e929
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 0 deletions.
109 changes: 109 additions & 0 deletions chats/rdflib/src/module/queries/MessageQuery.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,43 @@ describe(MessageQuery.name, () => {
expect(result).toEqual(null);
});

it("that only have content in a wrong document", () => {
const store = graph();
parse(
`
@prefix : <#>.
@prefix sioc: <http://rdfs.org/sioc/ns#>.
@prefix dct: <http://purl.org/dc/terms/>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
:1
dct:created "2024-07-01T17:47:14Z"^^xsd:dateTime ;
foaf:maker <https://pod.test/alice/profile/card#me> ;
.
`,
store,
"https://pod.test/message",
);

parse(
`
@prefix sioc: <http://rdfs.org/sioc/ns#>.
<message#1>
sioc:content "wrong content" .
`,
store,
"https://pod.test/wrong",
);
const result = new MessageQuery(
sym("https://pod.test/message#1"),
store,
).queryMessage();
expect(result).toEqual(null);
});

it("that have no date", () => {
const store = graph();
parse(
Expand All @@ -95,6 +132,42 @@ describe(MessageQuery.name, () => {
expect(result).toEqual(null);
});

it("that only have a date in the wrong document", () => {
const store = graph();
parse(
`
@prefix : <#>.
@prefix sioc: <http://rdfs.org/sioc/ns#>.
@prefix dct: <http://purl.org/dc/terms/>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
:1 sioc:content "A message" ;
foaf:maker <https://pod.test/alice/profile/card#me> ;
.
`,
store,
"https://pod.test/message",
);
parse(
`
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dct: <http://purl.org/dc/terms/>.
<message#1>
dct:created "2024-01-02"^^xsd:dateTime .
`,
store,
"https://pod.test/wrong",
);
const result = new MessageQuery(
sym("https://pod.test/message#1"),
store,
).queryMessage();
expect(result).toEqual(null);
});

it("that have no author", () => {
const store = graph();
parse(
Expand All @@ -119,6 +192,42 @@ describe(MessageQuery.name, () => {
).queryMessage();
expect(result).toEqual(null);
});

it("that only have an author in the wrong document", () => {
const store = graph();
parse(
`
@prefix : <#>.
@prefix sioc: <http://rdfs.org/sioc/ns#>.
@prefix dct: <http://purl.org/dc/terms/>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
:1 sioc:content "A message" ;
dct:created "2024-07-01T17:47:14Z"^^xsd:dateTime ;
.
`,
store,
"https://pod.test/message",
);

parse(
`
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
<message#1>
foaf:maker <https://pod.test/fake/profile/card#me> .
`,
store,
"https://pod.test/wrong",
);
const result = new MessageQuery(
sym("https://pod.test/message#1"),
store,
).queryMessage();
expect(result).toEqual(null);
});
});
});
});
6 changes: 6 additions & 0 deletions chats/rdflib/src/module/queries/MessageQuery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ export class MessageQuery {
const text = this.store.anyValue(
this.messageNode,
sym("http://rdfs.org/sioc/ns#content"),
undefined,
this.messageNode.doc(),
);

if (!text) {
Expand All @@ -20,11 +22,15 @@ export class MessageQuery {
const date = this.store.anyJS(
this.messageNode,
sym("http://purl.org/dc/terms/created"),
undefined,
this.messageNode.doc(),
);
if (!date) return null;
const authorWebId = this.store.anyValue(
this.messageNode,
sym("http://xmlns.com/foaf/0.1/maker"),
undefined,
this.messageNode.doc(),
);
if (!authorWebId) {
return null;
Expand Down

0 comments on commit 0b2e929

Please sign in to comment.