Skip to content

Commit

Permalink
feat: test coverage increase in ed25519.ts (#815)
Browse files Browse the repository at this point in the history
Resolves #136 
Completely covers the `ed25519.ts` file with 100% coverage.

| File Name          | Statements | Branches | Functions | Lines  |
|--------------------|------------|----------|-----------|--------|
| **Before:**        |            |          |           |        |
| All files          |   99.05    |   97.55  |   96.04   |  99.05 |
| ed25519.ts         |   93.1     |   88.88  |   83.33   |  93.1  |
| **After:**         |            |          |           |        |
| All files          |   99.09    |   97.6   |   96.25   |  99.09 |
| ed25519.ts         |   100      |   100    |   100     |  100   |
  • Loading branch information
ANIRUDH-333 authored Oct 8, 2024
1 parent e983cd8 commit 30f8b69
Showing 1 changed file with 36 additions and 3 deletions.
39 changes: 36 additions & 3 deletions tests/jose/jws/general.spec.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import chai, { expect } from 'chai';
import { expect } from 'chai';
import sinon from 'sinon';
import { UniversalResolver } from '@web5/dids';

import { ed25519 } from '../../../src/jose/algorithms/signing/ed25519.js';
import { Encoder } from '../../../src/utils/encoder.js';
import { GeneralJwsBuilder } from '../../../src/jose/jws/general/builder.js';
import { GeneralJwsVerifier } from '../../../src/jose/jws/general/verifier.js';
import { Jws } from '../../../src/utils/jws.js';
import { PrivateKeySigner } from '../../../src/index.js';
import { signatureAlgorithms } from '../../../src/jose/algorithms/signing/signature-algorithms.js';
import sinon from 'sinon';
import { UniversalResolver } from '@web5/dids';
import { DwnError, DwnErrorCode } from '../../../src/core/dwn-error.js';


const { Ed25519, secp256k1 } = signatureAlgorithms;
const secp256r1 = signatureAlgorithms['P-256'];
Expand Down Expand Up @@ -124,6 +129,34 @@ describe('General JWS Sign/Verify', () => {
expect(verificationResult.signers).to.include('did:jank:alice');
});

it('should throw an error for invalid Ed25519 JWK', async () => {
const invalidJwk = {
kty : 'RSA', // Invalid key type
crv : 'Ed25519',
d : 'invalid-private-key'
};

const content = new TextEncoder().encode('anyPayloadValue');

try {
await ed25519.sign(content, invalidJwk as any);
expect.fail('Expected an error to be thrown');
} catch (error) {
expect(error).to.be.instanceOf(DwnError);
expect((error as DwnError).code).to.equal(DwnErrorCode.Ed25519InvalidJwk);
expect((error as DwnError).message).to.include('invalid jwk. kty MUST be OKP. crv MUST be Ed25519');
}
});

it('should convert public key bytes to JWK', async () => {
const { publicJwk } = await ed25519.generateKeyPair();
const publicKeyBytes = Encoder.base64UrlToBytes(publicJwk.x);

const convertedJwk = await ed25519.publicKeyToJwk(publicKeyBytes);

expect(convertedJwk).to.deep.equal(publicJwk);
});

it('should support multiple signatures using different key types', async () => {
const secp256k1Keys = await secp256k1.generateKeyPair();
const ed25519Keys = await Ed25519.generateKeyPair();
Expand Down

0 comments on commit 30f8b69

Please sign in to comment.