import 'package:platform_auth/src/auth_token.dart';
import 'package:crypto/crypto.dart';
import 'package:test/test.dart';

void main() async {
  final hmac = Hmac(sha256, 'angel_auth'.codeUnits);

  test('sample serialization', () {
    var token = AuthToken(ipAddress: 'localhost', userId: 'thosakwe');
    var jwt = token.serialize(hmac);
    print(jwt);

    var parsed = AuthToken.validate(jwt, hmac);
    print(parsed.toJson());
    expect(parsed.toJson()['aud'], equals(token.ipAddress));
    expect(parsed.toJson()['sub'], equals(token.userId));
  });

  test('custom payload', () {
    var token = AuthToken(ipAddress: 'localhost', userId: 'thosakwe', payload: {
      'foo': 'bar',
      'baz': {
        'one': 1,
        'franken': ['stein']
      }
    });
    var jwt = token.serialize(hmac);
    print(jwt);

    var parsed = AuthToken.validate(jwt, hmac);
    print(parsed.toJson());
    expect(parsed.toJson()['pld'], equals(token.payload));
  });
}