Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
b27549df
Commit
b27549df
authored
Sep 28, 2017
by
Rubén Dávila
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add some basic specs and refactor model and validations
parent
4b6d045c
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
114 additions
and
11 deletions
+114
-11
app/models/gpg_key_subkey.rb
app/models/gpg_key_subkey.rb
+11
-0
db/migrate/20170927161718_create_gpg_key_subkeys.rb
db/migrate/20170927161718_create_gpg_key_subkeys.rb
+13
-1
db/migrate/20170927232658_add_gpg_key_subkey_id_to_gpg_signatures.rb
...20170927232658_add_gpg_key_subkey_id_to_gpg_signatures.rb
+0
-10
db/schema.rb
db/schema.rb
+2
-0
spec/factories/gpg_key_subkeys.rb
spec/factories/gpg_key_subkeys.rb
+10
-0
spec/factories/gpg_keys.rb
spec/factories/gpg_keys.rb
+4
-0
spec/models/gpg_key_spec.rb
spec/models/gpg_key_spec.rb
+9
-0
spec/models/gpg_key_subkey_spec.rb
spec/models/gpg_key_subkey_spec.rb
+15
-0
spec/services/gpg_keys/create_service_spec.rb
spec/services/gpg_keys/create_service_spec.rb
+10
-0
spec/support/gpg_helpers.rb
spec/support/gpg_helpers.rb
+40
-0
No files found.
app/models/gpg_key_subkey.rb
View file @
b27549df
...
@@ -6,6 +6,17 @@ class GpgKeySubkey < ActiveRecord::Base
...
@@ -6,6 +6,17 @@ class GpgKeySubkey < ActiveRecord::Base
belongs_to
:gpg_key
belongs_to
:gpg_key
validates
:gpg_key_id
,
presence:
true
validates
:fingerprint
,
:keyid
,
presence:
true
,
uniqueness:
true
def
keyid
super
&
.
upcase
end
def
fingerprint
super
&
.
upcase
end
def
method_missing
(
m
,
*
a
,
&
b
)
def
method_missing
(
m
,
*
a
,
&
b
)
return
super
unless
gpg_key
.
respond_to?
(
m
)
return
super
unless
gpg_key
.
respond_to?
(
m
)
...
...
db/migrate/20170927161718_create_gpg_key_subkeys.rb
View file @
b27549df
class
CreateGpgKeySubkeys
<
ActiveRecord
::
Migration
class
CreateGpgKeySubkeys
<
ActiveRecord
::
Migration
DOWNTIME
=
false
DOWNTIME
=
false
def
change
def
up
create_table
:gpg_key_subkeys
do
|
t
|
create_table
:gpg_key_subkeys
do
|
t
|
t
.
binary
:keyid
t
.
binary
:keyid
t
.
binary
:fingerprint
t
.
binary
:fingerprint
t
.
references
:gpg_key
,
null:
false
,
index:
true
,
foreign_key:
{
on_delete: :cascade
}
t
.
references
:gpg_key
,
null:
false
,
index:
true
,
foreign_key:
{
on_delete: :cascade
}
t
.
index
:keyid
,
unique:
true
,
length:
Gitlab
::
Database
.
mysql?
?
20
:
nil
t
.
index
:fingerprint
,
unique:
true
,
length:
Gitlab
::
Database
.
mysql?
?
20
:
nil
end
add_reference
:gpg_signatures
,
:gpg_key_subkey
,
index:
true
,
foreign_key:
{
on_delete: :nullify
}
end
end
def
down
remove_reference
(
:gpg_signatures
,
:gpg_key_subkey
,
index:
true
,
foreign_key:
true
)
drop_table
:gpg_key_subkeys
end
end
end
end
db/migrate/20170927232658_add_gpg_key_subkey_id_to_gpg_signatures.rb
deleted
100644 → 0
View file @
4b6d045c
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class
AddGpgKeySubkeyIdToGpgSignatures
<
ActiveRecord
::
Migration
DOWNTIME
=
false
def
change
add_reference
(
:gpg_signatures
,
:gpg_key_subkey
,
index:
true
,
foreign_key:
{
on_delete: :nullify
})
end
end
db/schema.rb
View file @
b27549df
...
@@ -585,7 +585,9 @@ ActiveRecord::Schema.define(version: 20171004121444) do
...
@@ -585,7 +585,9 @@ ActiveRecord::Schema.define(version: 20171004121444) do
t
.
integer
"gpg_key_id"
,
null:
false
t
.
integer
"gpg_key_id"
,
null:
false
end
end
add_index
"gpg_key_subkeys"
,
[
"fingerprint"
],
name:
"index_gpg_key_subkeys_on_fingerprint"
,
unique:
true
,
using: :btree
add_index
"gpg_key_subkeys"
,
[
"gpg_key_id"
],
name:
"index_gpg_key_subkeys_on_gpg_key_id"
,
using: :btree
add_index
"gpg_key_subkeys"
,
[
"gpg_key_id"
],
name:
"index_gpg_key_subkeys_on_gpg_key_id"
,
using: :btree
add_index
"gpg_key_subkeys"
,
[
"keyid"
],
name:
"index_gpg_key_subkeys_on_keyid"
,
unique:
true
,
using: :btree
create_table
"gpg_keys"
,
force: :cascade
do
|
t
|
create_table
"gpg_keys"
,
force: :cascade
do
|
t
|
t
.
datetime_with_timezone
"created_at"
,
null:
false
t
.
datetime_with_timezone
"created_at"
,
null:
false
...
...
spec/factories/gpg_key_subkeys.rb
0 → 100644
View file @
b27549df
require_relative
'../support/gpg_helpers'
FactoryGirl
.
define
do
factory
:gpg_key_subkey
do
gpg_key
keyid
{
gpg_key
.
subkeys
.
last
.
keyid
}
fingerprint
{
gpg_key
.
subkeys
.
last
.
fingerprint
}
end
end
spec/factories/gpg_keys.rb
View file @
b27549df
...
@@ -4,5 +4,9 @@ FactoryGirl.define do
...
@@ -4,5 +4,9 @@ FactoryGirl.define do
factory
:gpg_key
do
factory
:gpg_key
do
key
GpgHelpers
::
User1
.
public_key
key
GpgHelpers
::
User1
.
public_key
user
user
factory
:gpg_key_with_subkeys
do
key
GpgHelpers
::
User1
.
public_key_with_extra_signing_key
end
end
end
end
end
spec/models/gpg_key_spec.rb
View file @
b27549df
...
@@ -3,6 +3,7 @@ require 'rails_helper'
...
@@ -3,6 +3,7 @@ require 'rails_helper'
describe
GpgKey
do
describe
GpgKey
do
describe
"associations"
do
describe
"associations"
do
it
{
is_expected
.
to
belong_to
(
:user
)
}
it
{
is_expected
.
to
belong_to
(
:user
)
}
it
{
is_expected
.
to
have_many
(
:subkeys
)
}
end
end
describe
"validation"
do
describe
"validation"
do
...
@@ -38,6 +39,14 @@ describe GpgKey do
...
@@ -38,6 +39,14 @@ describe GpgKey do
expect
(
gpg_key
.
primary_keyid
).
to
eq
GpgHelpers
::
User1
.
primary_keyid
expect
(
gpg_key
.
primary_keyid
).
to
eq
GpgHelpers
::
User1
.
primary_keyid
end
end
end
end
describe
'generate_subkeys'
do
it
'extracts the subkeys from the gpg key'
do
gpg_key
=
create
(
:gpg_key
,
key:
GpgHelpers
::
User1
.
public_key_with_extra_signing_key
)
expect
(
gpg_key
.
subkeys
.
count
).
to
eq
(
2
)
end
end
end
end
describe
'#key='
do
describe
'#key='
do
...
...
spec/models/gpg_key_subkey_spec.rb
0 → 100644
View file @
b27549df
require
'rails_helper'
describe
GpgKeySubkey
do
subject
{
build
(
:gpg_key_subkey
)
}
describe
'associations'
do
it
{
is_expected
.
to
belong_to
(
:gpg_key
)
}
end
describe
'validations'
do
it
{
is_expected
.
to
validate_presence_of
(
:gpg_key_id
)
}
it
{
is_expected
.
to
validate_presence_of
(
:fingerprint
)
}
it
{
is_expected
.
to
validate_presence_of
(
:keyid
)
}
end
end
spec/services/gpg_keys/create_service_spec.rb
View file @
b27549df
...
@@ -18,4 +18,14 @@ describe GpgKeys::CreateService do
...
@@ -18,4 +18,14 @@ describe GpgKeys::CreateService do
it
'creates a gpg key'
do
it
'creates a gpg key'
do
expect
{
subject
.
execute
}.
to
change
{
user
.
gpg_keys
.
where
(
params
).
count
}.
by
(
1
)
expect
{
subject
.
execute
}.
to
change
{
user
.
gpg_keys
.
where
(
params
).
count
}.
by
(
1
)
end
end
context
'when the public key contains subkeys'
do
let
(
:params
)
{
attributes_for
(
:gpg_key_with_subkeys
)
}
it
'generates the gpg subkeys'
do
gpg_key
=
subject
.
execute
expect
(
gpg_key
.
subkeys
.
count
).
to
eq
(
2
)
end
end
end
end
spec/support/gpg_helpers.rb
View file @
b27549df
...
@@ -92,6 +92,46 @@ module GpgHelpers
...
@@ -92,6 +92,46 @@ module GpgHelpers
KEY
KEY
end
end
def
public_key_with_extra_signing_key
<<~
KEY
.
strip
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mI0EWK7VJwEEANSFayuVYenl7sBKUjmIxwDRc3jd+K+FWUZgknLgiLcevaLh/mxV
98dLxDKGDHHNKc/B7Y4qdlZYv1wfNQVuIbd8dqUQFOOkH7ukbgcGBTxH+2IM67y+
QBH618luS5Gz1d4bd0YoFf/xZGEh9G5xicz7TiXYzLKjnMjHu2EmbFePABEBAAG0
LU5hbm5pZSBCZXJuaGFyZCA8bmFubmllLmJlcm5oYXJkQGV4YW1wbGUuY29tPoi4
BBMBAgAiBQJYrtUnAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDM++Gf
AKyLHaeSA/99oUWpb02PlfkALcx5RncboMHkgczYEU9wOFIgvXIReswThCMOvPZa
piui+ItyJfV3ijJfO8IvbbFcvU7jjGA073Bb7tbzAEOQLA16mWgBLQlGaRWbHDW4
uwFxvkJKA0GzEsadEXeniESaZPc4rOXKPO3+/MSQWS2bmvvGsBTEuriNBFiu1ScB
BADIXkITf+kKCkD+n8tMsdTLInefu8KrJ8p7YRYCCabEXnWRsDb5zxUAG2VXCVUh
Yl6QXQybkNiBaduS+uxilz7gtYZUMFJvQ09+fV7D2N9B7u/1bGdIYz+cDFJnEJit
LY4w/nju2Sno5CL5Ead8sZuslKetSXPYHR/kbW462EOw5wARAQABiJ8EGAECAAkF
Aliu1ScCGwwACgkQzPvhnwCsix2WRQQAtOXpBS60myrBUXhlcqabDQgSTw+Spbgb
61hEMckyzpk7SfMNLz0EbYMvj9SU6znBG8RGeUljPTVMxPGr9yIpoFMSPKAUi/0K
AgRmH3tVpxlMipwXjST1Jukk2eHckt/3jGw3E1ElMSFtULe6u5p4gu578hHukEwT
IKzj0ZyC7DK5AQ0EWcx23AEIANwpAq85bT10JCBuNhOMyF2jKVt5wHbI9wBtjWYG
fgJFBkRvm6IsbmR0Y5DSBvF/of0UX1iGMfx6mvCDJkb1okquhCUef6MONWRpzXYE
CIZDm1TXu6yv0D35tkLfPo+/sY9UHHp1zGRcPAU46e8ztRwoD+zEJwy7lobLHGOL
9OdWtCGjsutLOTqKRK4jsifr8n3rePU09rejhDkRONNs7ufn9GRcWMN7RWiFDtpU
gNe84AJ38qaXPU8GHNTrDtDtRRPmn68ezMmE1qTNsxQxD4Isexe5Wsfc4+ElaP9s
zaHgij7npX1HS9RpmhnOa2h1ESroM9cqDh3IJVhf+eP6/uMAEQEAAYkBxAQYAQIA
DwUCWcx23AIbAgUJAeEzgAEpCRDM++GfAKyLHcBdIAQZAQIABgUCWcx23AAKCRDk
garE0uOuES7DCAC2Kgl6zO+NqIBIS6McgcEN0sGyvOvZ8Ps4hBiMwCyDAnsIRAUi
v4KZMtQMAyl9njJ3YjPWBsdieuTz45O06DDnrzJpZO5rUGJjAcEue4zvRRWIyu3H
qHC8MsvkslsNCygJHoWlknm+HucroskTNtxHQ+FdKZ6Tey+twl1u+PhV8PQVyFkl
4G1chO90EP4dvYrye26CC+ik2JkvC7Vy5M+U0PJikme8pFMjcdNks25BnAKcdqKU
AU8RTkSjoYvb8qSmZyldJjYjQRkTPRX1ZdaOID1EdiWl+s5cn0Oypo3z7BChcEMx
IWB/gmXQJQXVr5qNQnJObyMO/RczXYi9qNnyGMED/2EJJERLR0nefjHQalwDKQVP
s5lX1OKAcf2CrV6ZarckqaQgtqjZbuV2C2mrOHUs5uojlXaopj5gA4yJSGDcYhj1
Rg9jdHWBtkHBj3eL32ZqrHDs3ap8ErZMmPE8A+mn9TTnQS+FY2QF7vBjJKM3qPT7
DMVGWrg4m1NF8N6yMPMP
=RB1y
-----END PGP PUBLIC KEY BLOCK-----
KEY
end
def
primary_keyid
def
primary_keyid
fingerprint
[
-
16
..-
1
]
fingerprint
[
-
16
..-
1
]
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment