File: quark_test.go

package info (click to toggle)
golang-github-henrybear327-go-proton-api 1.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,088 kB
  • sloc: sh: 55; makefile: 26
file content (87 lines) | stat: -rw-r--r-- 2,783 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package server

import (
	"context"
	"testing"

	"github.com/henrybear327/go-proton-api"
	"github.com/stretchr/testify/require"
)

func TestServer_Quark_CreateUser(t *testing.T) {
	withServer(t, func(ctx context.Context, _ *Server, m *proton.Manager) {
		// Create two users, one with keys and one without.
		require.NoError(t, m.Quark(ctx, "user:create", "--name", "user-no-keys", "--password", "test", "--create-address"))
		require.NoError(t, m.Quark(ctx, "user:create", "--name", "user-keys", "--password", "test", "--gen-keys", "rsa2048"))
		require.NoError(t, m.Quark(ctx, "user:create", "--name", "user-disabled", "--password", "test", "--gen-keys", "rsa2048", "--status", "1"))

		{
			// The address should be created but should have no keys.
			c, _, err := m.NewClientWithLogin(ctx, "user-no-keys", []byte("test"))
			require.NoError(t, err)
			defer c.Close()

			addr, err := c.GetAddresses(ctx)
			require.NoError(t, err)
			require.Len(t, addr, 1)
			require.Len(t, addr[0].Keys, 0)
		}

		{
			// The address should be created and should have keys.
			c, _, err := m.NewClientWithLogin(ctx, "user-keys", []byte("test"))
			require.NoError(t, err)
			defer c.Close()

			addr, err := c.GetAddresses(ctx)
			require.NoError(t, err)
			require.Len(t, addr, 1)
			require.Len(t, addr[0].Keys, 1)
		}

		{
			// The address should be created and should be disabled
			c, _, err := m.NewClientWithLogin(ctx, "user-disabled", []byte("test"))
			require.NoError(t, err)
			defer c.Close()

			addr, err := c.GetAddresses(ctx)
			require.NoError(t, err)
			require.Len(t, addr, 1)
			require.Len(t, addr[0].Keys, 1)
			require.Equal(t, addr[0].Status, proton.AddressStatusDisabled)
		}
	})
}

func TestServer_Quark_CreateAddress(t *testing.T) {
	withServer(t, func(ctx context.Context, _ *Server, m *proton.Manager) {
		// Create a user with one address.
		require.NoError(t, m.Quark(ctx, "user:create", "--name", "user", "--password", "test", "--gen-keys", "rsa2048"))

		// Login to the user.
		c, _, err := m.NewClientWithLogin(ctx, "user", []byte("test"))
		require.NoError(t, err)
		defer c.Close()

		// Get the user.
		user, err := c.GetUser(ctx)
		require.NoError(t, err)

		// Initially the user should have one address and it should have keys.
		addr, err := c.GetAddresses(ctx)
		require.NoError(t, err)
		require.Len(t, addr, 1)
		require.Len(t, addr[0].Keys, 1)

		// Create a new address.
		require.NoError(t, m.Quark(ctx, "user:create:address", "--gen-keys", "rsa2048", user.ID, "test", "alias@proton.local"))

		// Now the user should have two addresses, and they should both have keys.
		newAddr, err := c.GetAddresses(ctx)
		require.NoError(t, err)
		require.Len(t, newAddr, 2)
		require.Len(t, newAddr[0].Keys, 1)
		require.Len(t, newAddr[1].Keys, 1)
	})
}