20
20
21
21
import org .gitlab4j .api .models .AccessLevel ;
22
22
import org .gitlab4j .api .models .Email ;
23
+ import org .gitlab4j .api .models .GpgKey ;
23
24
import org .gitlab4j .api .models .ImpersonationToken ;
24
25
import org .gitlab4j .api .models .ImpersonationToken .Scope ;
25
26
import org .gitlab4j .api .models .Membership ;
@@ -60,14 +61,66 @@ public class TestUserApi extends AbstractIntegrationTest {
60
61
private static final String TEST_SUDO_AS_USERNAME = HelperUtils .getProperty (SUDO_AS_USERNAME_KEY );
61
62
62
63
private static final String TEST_IMPERSONATION_TOKEN_NAME = "token1" ;
63
- private static final String TEST_SSH_KEY =
64
+ private static final String TEST_SSH_KEY =
64
65
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3rWzl/oPAD+Em2iGTmR81HcYZsopvnKp7jelI4XS91fT1NjCRrGsxf5Mw/" +
65
66
"KnmtBjhk+kQjkhIrnsBDcs6DZWtNcHJtyWJZrYsfxMTqWCaQv+OTRwVboqS2pmPcbK3gizUd5GCLFTKbg4OMpdywTwi6NAPwQ" +
66
67
"rtn3xwiVnGGCfBSyRFppcYP81otALctrlAW57V5+bQwFIJteJ+NWe1UmPxrqQ0N/a+dEEoJHzwX8RtVSkULafrRw8avn6Zp2x" +
67
68
"1OlD2aIEMQWvepNTRW6UDMSmWFc61ycy1pF5sCT5rij+b/fN4qCEvQs6R7GmCzaaZzbWuAqaxLRdITm/WUxdG6rjh" ;
68
69
69
70
private static final String TEST_USER_EMAIL =
"[email protected] " ;
70
71
72
+ // Key for [email protected] - set to never expire
73
+ private static final String TEST_GPG_KEY = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n \n " +
74
+ "mQINBGBHltIBEADW8zSGAs/XEkwWI36xOusuOqSINhTDVuqq3n50Oazb+a9Ai/MM\n " +
75
+ "8GTm900ZZghGBVUXGm8PkWuSmabcpbDbjYmJx8aIY71UipXxXrfBzr8S2yOx7IjU\n " +
76
+ "m6AEw0HwNUF6ayBwsklUFFWMyCeCVSCeZNldFwKRQApP6YOlTlwmZFESv32J6AHz\n " +
77
+ "goeEsIcoea484nVJKOl7unneb8TyuF6kmViyZtiDkjeiH5vNy8XjSWH9xl5tcBxy\n " +
78
+ "70NxkZt9EKnMq8izy51OBdzA+oWByGIGRjRPrW+5niMCGltV0w12M0uMDa2pJU2B\n " +
79
+ "Z0U7uL/Lj3srMnD54OjbjK++wtYbshhGKXhAzshk9RgZq5fEN7Jjn1CTvue5EcHz\n " +
80
+ "D27RD4yy35MledJ0hrvcTVVxvFmTg3TfDFdQBVLHjRATdXo7xT1Wg35M3z3aVSRt\n " +
81
+ "PoynOxGNSotKUGfW5bhCB9XjUNpNY7+IphLS4LuQ3vZdEs9MTTWagoOoDx5w2PRS\n " +
82
+ "7VNccRsqgIbNkpPjy78wN9m1QV97ytFs57eE+FfNDkKYeeCQDeHbeBlOmoEP/vSc\n " +
83
+ "plOb6K3mdJgs0d5klXTOrFRVCYHHQ84p1YyQDKZO2Qd6JtHo5FNeqvgj5JwnBdfH\n " +
84
+ "NGUdnaSn6hQTd8UB0AfwB+CC7cJq/fhbgcNvfK0ErHd24tsCif8vP9AG4QARAQAB\n " +
85
+ "tBtGYWtlIFBlcnNvbiA8ZmFrZUBmYWtlLmNvbT6JAk4EEwEIADgWIQSE5/Jy7XYO\n " +
86
+ "8riBcF/RhpwhMYJMpwUCYEeW0gIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\n " +
87
+ "CRDRhpwhMYJMp+ESD/99LNCF1bqg/jhQOC4UIdwzCCVkUP8imrL6NnBUso+FAwH6\n " +
88
+ "AT+Pbg8JLpM0lfcjzD5PV+ekLtWTZZVsyObfdRo7GrtBt/wcLKfJU5uQmrJfRClN\n " +
89
+ "mdiHbh8LyVwfhLp20JRqV6NiEWSdWwNBq8zMZGgZ6HONC7JPGokak0MKpU2Woyc3\n " +
90
+ "BlAU+998mdoDPKWT8XEr8cnHFFuUpZb4oWhqNV36mFrkdBZovEbnfefA+JvcxwEs\n " +
91
+ "khAeaNLmpZWZ95YSimJuL4sKUjPCXlkHs9nayTFeDdNcZPAuZwfBCLpdCSj4ErYV\n " +
92
+ "MyMHs/8J7CibulJB/o8qpp07oa3Qlcd62XNpqDOEIxiWHefnaYgkyIHtmzhXH4Fa\n " +
93
+ "O7Ir3zGcwARXpQfobRUmtFdzeJT3zVVdUWjkKr5rgwYZZraADXGvOo8xJ5cvdrzq\n " +
94
+ "4/yvOaNNoIA4KkuZcXbnqsh31pT77PxsqK60+TpLzw/jyzTqmVTEG+6SUobW7o6D\n " +
95
+ "qrpqR2RPH0GtyzKHuGKSCJClDmiLF+XSyjScGUAlQ9hcFquI6F1Vddy88yURaESK\n " +
96
+ "qy2agvhSkgpRxeuglytl6ZbWp/AIXrkh3F6qJozMNMFzEokapRYsQe+QdXCDSGDQ\n " +
97
+ "DNvXXfIvxrFv+vQLy4jjM+DwJfrw0eN2XZ+U3E9sP0uloiVgU1zg1wc2tyPv77kC\n " +
98
+ "DQRgR5bSARAAwumSlVvzb3JORu2ezPsCh8C+VJe2nPo8m+vR1Dni58UB3xnixZnF\n " +
99
+ "lPaEprnIO5TSDwELJJN3oNM+AVAPjUJYHotKny5iBSFPIbHYYHs/mGRqo4jHa4b6\n " +
100
+ "riNRWJ1xoYdvzH7PKAcV36tl27Y4SuQVMYmnaSXbDkGOqd9cenqVHikhj9+SJxNr\n " +
101
+ "yIHrw/SNbNbRl3cMVfke2vgRp9Eso5Ivpl6tjNoohAwDp3L6MGbHliEYQgk8pjzq\n " +
102
+ "bIR4lakKNVdRQoW/ZaQM2GkDlbCIEuY/7Rr4ZA1L0tsALY+bnv+9SMtA1OnMvNQ7\n " +
103
+ "7Pn2uTSHeIbSVxsRk9aWmK63l20OEcB/YPmTSeNvq0JVzJ2fLG2ZL6NUHBBF2DB4\n " +
104
+ "x66FA8mu9cK3Y9Jnc/3KWdzGA74R4HSIcuDPGkZmPtDMXSgXArRuD0s71QgH5E3U\n " +
105
+ "9/QJ8g4s9Mjb/8aBhbg+7lm8HzN3XANmbR+y/s71Askw/ewlbhfmwxK+/XI3xDr0\n " +
106
+ "1jkf42cmoLq4/Y292mQjFkcq6cCFIxDOXM89Qopbtm6PnaQsKyz0GoiyHsP846yS\n " +
107
+ "RdiHTVHrUdiLl+6TIK90cm8CzNoiF+UGvdD4HObWbySh8O8n1nno+lX9EwSoq20o\n " +
108
+ "0WobXesDjNIrzJHow0WGGbx5gTxlZq0WwmgXgwYM0PbqlfjxFjct+98AEQEAAYkC\n " +
109
+ "NgQYAQgAIBYhBITn8nLtdg7yuIFwX9GGnCExgkynBQJgR5bSAhsMAAoJENGGnCEx\n " +
110
+ "gkynbOkQAI+N/wFxOTbewuTiy0P11saqqYr7Jwc7NLhqOVZ1tHKaTB6ZDbIrlWjN\n " +
111
+ "u2tFk7PqsA4/zI6KO9JoKiQYbopZ+xjd1nCJUjkUKI/wi4rl0t7ELQKhlSlUC11f\n " +
112
+ "Nz0C6Q+9cwRQCCT4sX/ZkzVQbGWx9fkAYVHzezDqh43xorXJ2ix5y63pr1NGuUgx\n " +
113
+ "EujMlUbXFzXpUrCmdUVWujlp4gSEfd6tLW0WMw0tYJe6UY7xx4EmWsT+kAGj7QLH\n " +
114
+ "L06yFigDQ0eUkGQ1T7Z0AjG4EXGETbX6lSLwzIBnmaZXQxdx4LiRy9TcaNtcowH4\n " +
115
+ "U2yxCoG0o0kS7sS/rI77TV6WZ46DPCJmlNJ+MP8lt0j/nsDA3AECB1AA+8SNepbA\n " +
116
+ "LSZY7MJmh4nsqJ+iy/XMosipluZx2u6ZwlXAHxAzHhs7FBsvdMtq/gLNAlZzVyeH\n " +
117
+ "UqzRaMJps7xIbap5d5jZT5jaZwFeGi+63YVRx3Jm6dkiBCPFffLyWdrzkFTZdWqZ\n " +
118
+ "PkiRbJ64wYPIWQgAN/RhmCcRBhxJE8f7kgo/nBkZ5dwmfXgnXpheEaaCSzvJ4nMh\n " +
119
+ "TUdg6ZLna12QndjI5gy5aenrr5H/HmDKKSNkuWZv0+NS4GhwnL8NFs+MRk6znpLN\n " +
120
+ "aEjPdfYxINCMz+uotKJV9NieDWIbEJLlfZUf2hJwuwwjQGAyVf7b\n " +
121
+ "=ryCD\n " +
122
+ "-----END PGP PUBLIC KEY BLOCK-----" ;
123
+
71
124
private static final String TEST_EXTERNAL_USERNAME = HelperUtils .getProperty (EXTERNAL_USERNAME_KEY );
72
125
private static final String TEST_EXTERNAL_PROVIDER = HelperUtils .getProperty (EXTERNAL_PROVIDER_KEY );
73
126
private static final String TEST_EXTERNAL_UID = HelperUtils .getProperty (EXTERNAL_UID_KEY );
@@ -153,7 +206,7 @@ public void testGetVersion() throws GitLabApiException {
153
206
assertNotNull (version .getVersion ());
154
207
assertNotNull (version .getRevision ());
155
208
}
156
-
209
+
157
210
@ Test
158
211
public void testGetCurrentUser () throws GitLabApiException {
159
212
User currentUser = gitLabApi .getUserApi ().getCurrentUser ();
@@ -271,7 +324,7 @@ public void testCreateImpersonationToken() throws GitLabApiException, ParseExcep
271
324
272
325
User user = gitLabApi .getUserApi ().getCurrentUser ();
273
326
274
- // NOTE: READ_REGISTRY scope is left out because the GitLab server docker instance does not have the
327
+ // NOTE: READ_REGISTRY scope is left out because the GitLab server docker instance does not have the
275
328
// registry configured and the test would thus fail.
276
329
Scope [] scopes = {Scope .API , Scope .READ_USER , Scope .READ_REPOSITORY , Scope .WRITE_REPOSITORY , Scope .SUDO };
277
330
Date expiresAt = ISO8601 .toDate ("2018-01-01T00:00:00Z" );
@@ -443,7 +496,7 @@ public void testEmails() throws GitLabApiException {
443
496
assertTrue (emails .size () == currentSize + 1 );
444
497
Email found = emails .stream ().filter (e -> e .getEmail ().equals (TEST_USER_EMAIL )).findAny ().orElse (null );
445
498
assertNotNull (found );
446
-
499
+
447
500
gitLabApi .getUserApi ().deleteEmail (currentUser , email .getId ());
448
501
emails = gitLabApi .getUserApi ().getEmails (currentUser );
449
502
assertEquals (currentSize , emails .size ());
@@ -452,6 +505,45 @@ public void testEmails() throws GitLabApiException {
452
505
}
453
506
454
507
@ Test
508
+ public void testGpgKeys () throws GitLabApiException {
509
+ User currentUser = gitLabApi .getUserApi ().getCurrentUser ();
510
+ assertNotNull (currentUser );
511
+ List <GpgKey > keys = gitLabApi .getUserApi ().listGpgKeys (currentUser .getId ());
512
+ assertNotNull (keys );
513
+ int currentSize = keys .size ();
514
+
515
+ GpgKey key = gitLabApi .getUserApi ().addGpgKey (currentUser .getId (), TEST_GPG_KEY );
516
+ keys = gitLabApi .getUserApi ().listGpgKeys (currentUser .getId ());
517
+ assertTrue (keys .size () == currentSize + 1 );
518
+ GpgKey found = keys .stream ().filter (e -> e .getKey ().equals (TEST_GPG_KEY )).findAny ().orElse (null );
519
+ assertNotNull (found );
520
+
521
+ gitLabApi .getUserApi ().deleteGpgKey (currentUser .getId (), key .getId ());
522
+ keys = gitLabApi .getUserApi ().listGpgKeys (currentUser .getId ());
523
+ assertEquals (currentSize , keys .size ());
524
+ found = keys .stream ().filter (e -> e .getKey ().equals (TEST_GPG_KEY )).findAny ().orElse (null );
525
+ assertNull (found );
526
+ }
527
+
528
+ @ Test
529
+ public void testGpgKeysCurrentUser () throws GitLabApiException {
530
+ List <GpgKey > keys = gitLabApi .getUserApi ().listGpgKeys ();
531
+ assertNotNull (keys );
532
+ int currentSize = keys .size ();
533
+
534
+ GpgKey key = gitLabApi .getUserApi ().addGpgKey (TEST_GPG_KEY );
535
+ keys = gitLabApi .getUserApi ().listGpgKeys ();
536
+ assertTrue (keys .size () == currentSize + 1 );
537
+ GpgKey found = keys .stream ().filter (e -> e .getKey ().equals (TEST_GPG_KEY )).findAny ().orElse (null );
538
+ assertNotNull (found );
539
+
540
+ gitLabApi .getUserApi ().deleteGpgKey (key .getId ());
541
+ keys = gitLabApi .getUserApi ().listGpgKeys ();
542
+ assertEquals (currentSize , keys .size ());
543
+ found = keys .stream ().filter (e -> e .getKey ().equals (TEST_GPG_KEY )).findAny ().orElse (null );
544
+ assertNull (found );
545
+ }
546
+
455
547
public void testGetMemberships () throws GitLabApiException {
456
548
User currentUser = gitLabApi .getUserApi ().getCurrentUser ();
457
549
assertNotNull (currentUser );
0 commit comments