Determining UUIDs of players for Minecraft servers.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.5 KiB

  1. import {describe, it, expect, vi} from 'vitest';
  2. import { getUsernameUuid } from '../src';
  3. import { EventEmitter } from 'events';
  4. describe('minecraft-uuid', () => {
  5. it('returns result (default offline mode)', async () => {
  6. vi.mock('crypto', () => ({
  7. createHash: (algo) => {
  8. return {
  9. update: () => {
  10. // noop
  11. },
  12. digest: () => Buffer.alloc(16, 0),
  13. };
  14. },
  15. }));
  16. const uuid = await getUsernameUuid({ username: 'username' });
  17. expect(uuid).toEqual('00000000-0000-3000-8000-000000000000');
  18. });
  19. it('returns result (explicit offline mode)', async () => {
  20. vi.mock('crypto', () => ({
  21. createHash: (algo) => {
  22. return {
  23. update: () => {
  24. // noop
  25. },
  26. digest: () => Buffer.alloc(16, 0),
  27. };
  28. },
  29. }));
  30. const uuid = await getUsernameUuid({ username: 'username', onlineMode: false });
  31. expect(uuid).toEqual('00000000-0000-3000-8000-000000000000');
  32. });
  33. it('returns result (explicit online mode)', async () => {
  34. vi.mock('https', () => ({
  35. get: (url, cb) => {
  36. const emitter = new EventEmitter();
  37. if (typeof cb === 'function') {
  38. (cb as unknown as (...args: unknown[]) => unknown)(emitter);
  39. }
  40. emitter.emit('data', Buffer.from(JSON.stringify({
  41. id: '82c683b548333d6b8a2606352cd6f327',
  42. name: 'username'
  43. })));
  44. emitter.emit('end');
  45. return emitter;
  46. },
  47. }));
  48. const uuid = await getUsernameUuid({ username: 'username', onlineMode: true });
  49. expect(uuid).toEqual('82c683b5-4833-3d6b-8a26-06352cd6f327');
  50. });
  51. });