Skip to content

Commit

Permalink
feat: Add constant WebID extractor.
Browse files Browse the repository at this point in the history
Closes #397
  • Loading branch information
RubenVerborgh authored and joachimvh committed Dec 18, 2020
1 parent 3e3dd7f commit 209b87a
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/authentication/UnsecureConstantCredentialsExtractor.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { getLoggerFor } from '../logging/LogUtil';
import type { Credentials } from './Credentials';
import { CredentialsExtractor } from './CredentialsExtractor';

/**
* Credentials extractor that authenticates a constant agent
* (useful for development or debugging purposes).
*/
export class UnsecureConstantCredentialsExtractor extends CredentialsExtractor {
private readonly agent: Credentials;
private readonly logger = getLoggerFor(this);

public constructor(agent: string | Credentials) {
super();
this.agent = typeof agent === 'string' ? { webId: agent } : agent;
}

public async handle(): Promise<Credentials> {
this.logger.info(`Agent unsecurely claims to be ${this.agent.webId}`);
return this.agent;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { UnsecureConstantCredentialsExtractor } from '../../../src/authentication/UnsecureConstantCredentialsExtractor';

describe('An UnsecureConstantCredentialsExtractor', (): void => {
it('extracts a constant WebID.', async(): Promise<void> => {
const agent = 'http://alice.example/card#me';
const extractor = new UnsecureConstantCredentialsExtractor(agent);
await expect(extractor.handle()).resolves.toEqual({ webId: agent });
});

it('extracts constant credentials.', async(): Promise<void> => {
const agent = {};
const extractor = new UnsecureConstantCredentialsExtractor(agent);
await expect(extractor.handle()).resolves.toBe(agent);
});
});

0 comments on commit 209b87a

Please sign in to comment.