File tree Expand file tree Collapse file tree 2 files changed +25
-8
lines changed
tests/sentry/api/endpoints Expand file tree Collapse file tree 2 files changed +25
-8
lines changed Original file line number Diff line number Diff line change 11from __future__ import absolute_import
2- import string
32
43from django .db import IntegrityError , transaction
54
@@ -43,20 +42,15 @@ def list_releases_scenario(runner):
4342
4443
4544class ReleaseSerializer (serializers .Serializer ):
46- version = serializers .RegexField (r'[a-zA-Z0-9\-_\.]' , max_length = 64 , required = True )
45+ version = serializers .RegexField (r'^[a-zA-Z0-9\-_\. \(\)]+\Z' ,
46+ max_length = 64 , required = True )
4747 ref = serializers .CharField (max_length = 64 , required = False )
4848 url = serializers .URLField (required = False )
4949 owner = UserField (required = False )
5050 dateStarted = serializers .DateTimeField (required = False )
5151 dateReleased = serializers .DateTimeField (required = False )
5252 commits = ListField (child = CommitSerializer (), required = False )
5353
54- def validate_version (self , attrs , source ):
55- value = attrs [source ]
56- if not set (value ).isdisjoint (set (string .whitespace )):
57- raise serializers .ValidationError ('Enter a valid value' )
58- return attrs
59-
6054
6155class ProjectReleasesEndpoint (ProjectEndpoint ):
6256 doc_section = DocSection .RELEASES
Original file line number Diff line number Diff line change @@ -113,6 +113,29 @@ def test_minimal(self):
113113 assert release .organization == project .organization
114114 assert release .projects .first () == project
115115
116+ def test_ios_release (self ):
117+ self .login_as (user = self .user )
118+
119+ project = self .create_project (name = 'foo' )
120+
121+ url = reverse ('sentry-api-0-project-releases' , kwargs = {
122+ 'organization_slug' : project .organization .slug ,
123+ 'project_slug' : project .slug ,
124+ })
125+ response = self .client .post (url , data = {
126+ 'version' : '1.2.1 (123)' ,
127+ })
128+
129+ assert response .status_code == 201 , response .content
130+ assert response .data ['version' ]
131+
132+ release = Release .objects .get (
133+ version = response .data ['version' ],
134+ )
135+ assert not release .owner
136+ assert release .organization == project .organization
137+ assert release .projects .first () == project
138+
116139 def test_duplicate (self ):
117140 self .login_as (user = self .user )
118141
You can’t perform that action at this time.
0 commit comments